데이터 모델링의 이해
데이터모델의 이해
데이터 모델링의 3요소 : Thing, Attributes, Relationship
데이터 모델링 특징 : 추상화(모형화), 단순화, 명확화(정확화)
데이터 모델링 관점 : 데이터 관점, 프로세스 관점, 상관 관점
데이터 모델링 유의사항 : 중복(Duplication), 비유연성(Inflexibility), 비일관성(Inconsistency)
데이터 모델링 과정 : 개념적 - 논리적 - 물리적
스키마 구조 3단계
- 외부 스키마 (External Schema) : View 단계, 사용자 관점 접근 DB
- 개념 스키마 (Conceptual Schema) : 조직 전체의 통합 관점 DB
- 내부 스키마 (Internal Schema) : 물리적으로 저장된 형식
ERD : 엔티티 그리기 - 엔티티 배치 - 관계 설정 - 관계명 기술 - 관계 참요도 기술 - 관계 필수여부 기술
엔티티(Entity)
- 두 개 이상의 인스턴스, 두 개 이상의 속성
- 다른 엔티티와 한 개 이상의 관계
- 기본/키 엔티티 (Fundamental/Key Entity) : 독립적 생성 가능, 주식별자를 상속 받지 않음
- 중심 엔티티 (Main Entity) : 중심적인 역할, 다른 엔티티와 관계를 통해 행위 엔티티 생성
- 행위 엔티티 (Active Entity) : 두 개 이상의 부모 엔티티로 부터 발생
속성
- 유일성을 확보하는 것이 좋음
- 기본 속성 : 업무를 통해 정의한 속성
- 설계 속성 : 설계를 하면서 도출되는 속성
- 파생 속성 : 다른 속성으로 부터 생성되는 속성
도메인 : 속성이 가질 수 있는 값의 범위, 데이터타입, 크기
관계
- 존재에 의한 관계, 행위에 의한 관계
- UML(Unified Modeling Language)에서 연관관계(Association)은 실선, 의존관계(Dependency)는 점선
- 관계명(Membership), 관계차수(Cardinality), 선택사양(Optionality)
- 식별자관계, 비식별자관계
식별자
- 주/보조 식별자 : 엔티티 내에서 대표성을 가지는가
- 내부/외부 식별자 : 엔티티 내에서 스스로 생성 되었는가
- 단일/복합 식별자 : 단일 속성으로 식별이 되는가
- 본질/인조 식별자 : 업무적 의미가 있던 식별자를 대체한 일련번호 같은 식별자
- 주식별자 : 유일성, 최소성, 불변성, 존재성
데이터 모델과 SQL
정규화 수행 - 용량산정 - 트랜잭션 유형 파악 - 반정규화 - 이력모델 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 - 성능관점 모델 검증
정규화
- 1차 정규형 : 속성은 하나의 값, 동일한 형식, 유일한 이름, 레코드 간 식별 가능
- 2차 정규형 : 식별자가 아닌 속성은 전체 속성에 완전 종속
- 3차 정규형 : 나머지 속성들 간의 종속이 존재하지 않음
반정규화
- 정규화된 엔티티, 속성, 관계를 시스템의 성능향상과 개발, 운영의 단순화를 위해 중복, 통합, 분리를 수행
- 지나치게 많은 조인(JOIN)의 경우 뷰(VIEW)를 사용
- 클러스터링을 적용하거나 인덱스를 조정
- 파티셔닝 기법 적용
- 응용 어플리케이션에서 로직을 구사하는 방법 변경
대량 데이터 처리
- RANGE PARTITION : 보관 주기에 따라 데이터를 쉽게 지움
- LIST RARTITION : 값 각각에 의해 파티셔닝
- HASH PARTITION : 해쉬 알고리즘 적용
분산 데이터베이스
- 분할 투명성 (단편화), 위치 투명성, 지역사상 투명성, 중복 투명성, 장애 투명성, 병행 투명성
관계와 조인의 이해
모델이 표현하는 트랜잭션의 이해
Null 속성의 이해
NVL(A,B) : A가 NULL이면 B를 반환
집계함수는 Null 값을 제외하고 처리
본질식별자 vs 인조식별자
SQL 기본
관계형 데이터베이스 개요
DML : SELECT, INSERT, UPDATE, DELETE
DDL : CREATE, ALTER, DROP, RENAME
DCL : GRANT, REVOKE
TCL : COMMIT, ROLLBACK
- DROP, TRUNCATE, DELETE의 차이
SELECT 문
DISTINCT : 중복 제거 (반대는 ALL로 디폴트 옵션)
함수
IF - THEN - ELSE - END
NULL 처리 함수 : NVL, ISNULL, NULLIF, COALESCE
- COALESCE(A, B)
두 칼럼을 병합한다는 의미의 함수
보통 NULL을 제거하기 위해 사용
COALESCE(A, 0) 같이 사용하면 A의 null값을 0으로 채워줌
WHERE 절
연산자 우선순위 : 괄호 - NOT - 비교 - AND - OR
와일드카드 : %(0개 이상), _(단일 문자)
GROUP BY, HAVING 절
ORDER BY 절
Oracle에서는 NULL이 가장 크며, SQL Server에서는 NULL이 가장 작음
조인
표준 조인
- JOIN ON
ON을 통해 JOIN 조건 지정
INNER JOIN : 기본값, 교집합 부분만 JOIN
OUTER JOIN : LEFT, RIGHT, FULL, 기준 집합의 비어있는 부분도 NULL을 통해 JOIN
주의) MYSQL은 FULL OUTER JOIN을 지원하지 않는다
그외에 CROSS JOIN, SELF JOIN
SQL 활용
서브쿼리
뷰 (View) : 실제 데이터를 가지지 않지만 테이블 역할을 수행, 가상 테이블 (Virtual Table), 독립성, 편리성, 보안성
집합 연산자 (SET OPERATOR)
- UNION : 합집합, 중복된 행은 하나로
- UNION ALL : 합집합, 중복된 행도 그대로
- INTERSECT : 교집합
- EXCEPT : 차집합 (NOT IN, NOT EXISTS)
그룹 함수
ROLLUP, CUBE, GROUPING SETS, GROUPING
윈도우 함수
Top N 쿼리
TOP (N) WITH TIES
계층형 질의와 셀프 조인
PIVOT절과 UNPIVOT절
정규 표현식
'STUDY' 카테고리의 다른 글
[데이터] GIS (1) | 2024.06.27 |
---|---|
[LLM] VLM (Multimodal) 업무 (2) | 2024.06.19 |
[LLM] RAG (0) | 2024.06.05 |
[NLP] 요약 모델 (0) | 2024.05.29 |
RANSAC 알고리즘 (0) | 2023.09.12 |