5NF와 Database Design
·2026.04.15 01:22
핵심 내용
5NF를 실제 설계 관점에서 다시 설명하며, 2가지 테이블 패턴으로 정리한다.
1 / 2
자세히 보기
Wikipedia의 5NF 예시는 지나치게 인위적이고 실제 비즈니스 규칙을 이해하는 데 도움이 되지 않는다고 본다. 대신 논리 모델을 먼저 세우고, 그다음에 정규화를 보존하는 물리 스키마를 설계하는 순서를 제안한다.
핵심은 5NF를 억지로 외우는 것이 아니라, 관계를 정확한 링크로 분해해 테이블을 만드는 것이다. 이 과정에서 두 가지 반복되는 패턴이 보인다고 정리한다.
-
AB-BC-AC triangle
- ice cream 예시에서
Brand,Flavour,Friend라는 3개 anchor가 있고, 이들 사이에brand_flavours,friend_brands,friend_flavours같은 M:N 링크 테이블이 생긴다. - 친구의 취향은 브랜드와 flavour의 교집합으로 해석되며, 실제로는 존재하지만 링크되지 않은 엔티티도 있을 수 있다.
- ice cream 예시에서
-
ABC+D star pattern
- concert, musician, instrument에 더해 Performance라는 추가 anchor가 필요하다.
concerts,instruments,musicians와performances를 두고,performances가concert_id,instrument_id,musician_id를 가지는 1:N 링크 중심 구조로 정리된다.- 자연어의 “한 음악가가 한 공연에서 어떤 악기를 연주한다”는 문장은 3개의 anchor를 포함하므로, 설계할 때는 이를 분해해 다뤄야 한다.
결론적으로, 좋은 5NF 설명은 이상한 제약을 가정하는 것이 아니라 업무 의미를 먼저 정의하고, 그 의미를 가장 단순하고 무결성 있게 테이블로 옮기는 방법을 보여줘야 한다고 주장한다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.