[SQLD 공부] 1과목_데이터 모델과 SQL
SQL/SQLD 공부

[SQLD 공부] 1과목_데이터 모델과 SQL

by Jongg 2024. 7. 11.
728x90

I. 정규화와 성능
1. 성능 데이터 모델링의 개념
- 분석 및 설계 단계부터 DB성능을 고려한 데이터 모델링을 수행하는 기법

2. 성능 데이터 모델링의 수행 절차
- 정규화 정확하게 수행
- DB 용량 (현재, 예상 증가량) 고려
- 트랜잭션의 유형 파악
- 용량과 트랜잭션의 유형에 따라 반정규화 수행
- 이력 모델 조정, PK/FK 조정, 슈퍼타입/서브타입 조정
- 성능 관점에서 데이터 모델 검증

3. 정규화의 개념
- 데이터 일관성, 최소한의 중복, 최대한의 데이터 유연성을 위한 방법 (ex. 고유코드를 뭘로 쓸까?)
- 데이터를 분해하는 과정
- 정해진 규칙을 따라 데이터를 이용하기 쉽게 만드는 일
- 데이터 중복 제거
- 데이터 모델의 독립성 확보
- 데이터 이상현상 줄이기 위한 기법
- 엔터티 상세화하는 과정

4. 이상현상
- 삽입이상: 행 삽입 시 지정되지 않은 속성 값이 NULL을 가짐
- 갱신이상: 갱신 시 일부만 갱신되어 일관성 유지 X
- 삭제이상: 행 삭제 시 연쇄 삭제 발생

5. 정규화 단계
- 제1정규화: 기본키 설정
- 제2정규화: 기본키 2개 이상의 속성으로 이뤄진 경우 부분 함수 종속성 제거
- 제3정규화: 기본키를 제외한 칼럼 간 종속성 제거. 이행함수 종속성 제거

<각 정규화의 예제>
- 제1정규화: 데이터 세로 쌓기. (ex. Raw: 고객번호 - 주문내역 1개)
- 제2정규화: 기본키가 두개 이상으로 이뤄진 경우 분해(함수 종속성 제거)
→ ex) 고객고유코드-주민번호-월별주문내역 ▶ tbl1) 고객고유코드-주민번호(주민번호는 고객고유코드에 종속), tbl2) 고객고유코드-월별주문내역으로 분해
- 제3정규화: 기본키를 제외한 컬럼 간 종속성 제거(이행 함수 종속성 제거)

6. 정규화 주의사항
- 1, 2, 3 순서로 정규화 진행
- 정규화로 인해 데이터 조인의 발생이 많아져 조회 성능 저하로 이뤄질 수 있다 (I/O 증가, 조인 연산 증가)
- 단일 테이블 조회시엔 데이터 중복이 제거되어 조회성능이 향상될 수 있음

7. 반정규화 개념
- DB 성능 향상을 위해 데이터 중복 허용, 조인을 줄이는 방법
- 정규화된 데이터 모델을 중복, 통합, 분리하는 데이터 모델링 기법
- 조회 속도 향상 but 유연성은 낮아짐
- 비정규화 정규화를 수행하지 않음을 의미. 반정규화 = 역정규화

8. 반정규화 수행해야 하는 경우
- 수행속도가 느려진 경우
- 다량의 범위를 자주 처리. 즉, 같이 쓰이는 데이터
- 특정 범위의 데이터만 자주 처리하는 경우
- 요약/집계 정보를 자주 사용하는 경우

9. 반정규화 절차
- 대상 조사 및 검토
○ 데이터 처리 범위, 통계성 등 확인
○ 대량의 범위 처리 및 빈도수, 통계성 프로세스, 테이블 조인 수
- 다른 방법 검토
○ 클러스터링, 뷰, 인덱스, 응용 프로그램, 파티셔닝 등
- 반정규화 수행
○ 테이블, 속성, 관계 등

10. 반정규화 기법
- 테이블 병합
- 테이블 분할
○ 수직 분할: 컬럼 기준
○ 수평 분할: 행 기준
- 테이블 추가
- 컬럼의 반정규화
○ 중복컬럼추가, 파생컬럼추가, 이력테이블 컬럼추가…
- 관계의 반정규화: 중복관계 추가

 

728x90

 

II. 관계와 조인의 이해
1. 관계 및 조인
- 관계형 DB는 엔터티 간의 관계로 엮여 있음 ex) 학생 엔터티 - 과목 (수강이라는 관계가 있음)

2. 계층형 구조
- 그룹 > 계열사 > 부서 > 팀…

 

III. 모델이 표현하는 트랜잭션
1. 식별자 관계와 비식별자 관계
- 강한관계: 부모 엔터티의 PK가 자식엔터티의 PK로 상속되는 경우
- 약한관계: 부모 엔터티의 PK가 일반 속성으로 상속되는 경우

 

IV. NULL
1. NULL의 정의 ("알 수 없다"란 뜻)
- 데이터 정의가 없다는 뜻
- 따라서 알 수 없는 값: 숫자나 날짜 연산을 해도 결과는 무조건 null

2. NULL의 조회: is null, is not null로 조회함

 

V. 본질식별자와 인조식별자
1. 본질 식별자: 주민번호, 운전면허번호, 제품코드 등

2. 인조식별자: 본질식별자 쓰기 불편하거나 어려운 경우 인위적으로 만드는 고유값: 사번, 학번 등



728x90

댓글