정규화 - Effective SQL
2021. 11. 12. 15:24ㆍSQL
728x90
1. 제3정규화 보다 부족하다면 더 정규화하자
- 최대한 정규화 한 후 어플리케이션이 제대로 돌아갈 때까지 역정규화 하라
- 실제로 현장에서는 3정규화까지 하는 경우가 대다수
- 3정규화까지 진행하면, 대부분의 경우 그 이상의 정규화 단계까지 완료되기 때문
- 3정규화로 설계했으나, 한 테이블이 두 개 이상과 관계를 맺을 때, 다 대 다 관계가 둘 이상일 때. 더 높은 정규화를 위반할 수 있는 복합키가 있을 때, 대리키 대신 자연키를 분석할 때
- 제 4 정규화 : 다치종속 - 서로 독립적이지만 관계에서 통일 한 뒤 키에 의존하는 경우
- 한 엔티티에서 관계없는 두 속성으로 모든 조합을 해당 엔티티에서 열거하는 경우 위반될 수 있음.
- 제 5 정규화 : 조인종속 - 테이블을 분해하면 원래 가지고 있던 정보가 손실되어서 더이상 테이블을 분해할 수 없는 경우
- 키가 복합 키일 경우 후보키에 유효한 값이 무엇인지 제약할 수 있어야함.
- 무손실 분할 테스트
- 테이블의 컬럼이 많으면 일련의 부분집합으로 분할한다.
- 부분집합에 대해 조인하여 재결합한 결과가 데이터 손실이 없다면 상위 정규화를 위반한 것으로 볼 수 있다.
SELECT DISTINCT ~ LEFT OUTER JOIN ~
2. 데이터 웨어하우스는 역정규화를 사용하자
728x90
'SQL' 카테고리의 다른 글
[SQL] Oracle. Dual 테이블 (0) | 2022.01.10 |
---|---|
[SQL] JOIN - INNER JOIN vs OUTER JOIN and CORSS JOIN) (0) | 2022.01.06 |
1. SQL 데이터 모델 설계 - Effective SQL (0) | 2021.05.21 |