CS/DATABASE
[SQLD] 002. 데이터 모델과 SQL
구운오니
2024. 11. 7. 09:57
728x90
| 01 | 정규화
데이터의 정확성과 일관성을 위해 엔티티를 작은 단위로 분리하는 과정이다.
조회 성능은 향상될수도 저하될수도 있지만 입력, 수정, 삭제 성능은 일반적으로 향상된다.
제 1 정규형
모든 속성은 반드시 하나의 값만 가져야 한다.
제 2 정규형
부분 함수적 종속 제거하여 완전 함수적 종속을 만족해야한다.
주식별자가 복합식별자인 경우 일반 속성이 주식별자의 일부에만 종속될 수 있는데, 이를 따로 테이블을 분리하는 것.
제 3 정규형
이행 함수적 종속을 제거하여 특정 속성이 주식별자가 아닌 일반 속성에 종속될 수 없게 한다.
| 02 | 반정규화
데이터의 조회 성능을 향상시키기 위해 데이터의 중복을 허용하거나 데이터를 그룹핑하는 과정이다.
반정규화는 모든 정규화를 마친 후 성능상 이슈가 있을 때만 고려하는 것이 원칙이다.
테이블 반정규화
테이블 병합 | 1:1 관계 테이블 병합 |
1:M 관계 테이블 병합 | |
슈퍼 서브 타입 테이블 병합 | |
테이블 분할 | 테이블 수직 분할 (속성 분할) -> 1:1관계 테이블 2개 생성 |
테이블 수평 분할 (인스턴스 분할, 파티셔닝) -> 관계없는 다수 테이블 생성 | |
테이블 추가 | 중복 테이블 추가 |
통계 테이블 추가 | |
이력 테이블 추가 | |
부분 테이블 추가 |
컬럼 반정규화
- 중복 컬럼 추가 : join이 필요한 경우가 많을 때 컬럼 추가
- 파생 컬럼 추가 : 미리 값을 계산하여 컬럼 추가
- 이력 테이블 컬럼 추가 : 속도가 느려질 것을 대비하여 컬럼 미리 추가
관계 반정규화
- 중복 관계 추가
| 03 | 트랜잭션
데이터를 조작하기 위한 하나의 논리적인 단위
|04| NULL
NULL은 존재하지 않음. 즉, 값이 없음을 의미한다.
다른 인스턴스의 데이터와 연산할 때는 NULL값을 제외한다.
728x90