E/R 모델 설계 원칙 정리
충실성, 중복 회피, 단순성, 관계 선택, Weak Entity Set까지 E/R 설계에서 지켜야 할 원칙을 예시와 함께 정리한다.
시리즈 · Database1 / 8
좋은 데이터베이스 설계를 위해 지켜야 할 원칙을 「A First Course in Database Systems」의 영화 데이터베이스 예시로 정리한다.
Faithfulness
설계는 표현하려는 현실에 충실해야 한다. 속성(attribute)과 관계 집합(relationship set)은 실제로 연관이 있는 것만 둔다.
Stars(number-of-cylinders): 배우와 엔진 실린더 수는 관련이 없다.Automobiles(number-of-cylinders): 자동차와 엔진은 실제로 연관이 있다.
Avoiding Redundancy
모든 것은 한 번만 표현한다. 아래 그림에서는 Movies의 StudioName과 Studios의 name이 같은 정보를 중복으로 담고 있다.

중복은 저장 공간을 낭비하고, 수정할 때 한쪽만 바꾸는 실수로 데이터가 어긋날 수 있다.
Simplicity Counts
꼭 필요하지 않은 요소를 추가해 설계를 복잡하게 만들지 않는다. 아래의 Holdings는 Movies와 Studios 사이에 끼어 있을 뿐 아무 정보도 더하지 않는 불필요한 엔티티다.

Choosing the Right Relationships
엔티티 집합은 여러 경로로 연결될 수 있지만, 가능한 모든 관계를 다 추가하는 것은 좋지 않다. 중복이 생기고, 공간이 낭비되며, 알아보기도 힘들어진다.

Star가 Movie에 출연하고 그 Movie를 Studio가 소유한다면, Star와 Studio의 관계는 이미 유도할 수 있으므로 Works-for는 중복이다. 반면 영화에 출연하지 않는 Star까지 표현해야 한다면 중복이 아니다. 관계가 원을 이루면 중복일 가능성이 높으니 의심해 봐야 한다.
Weak Entity Sets
Weak entity set은 자신의 속성만으로는 key를 구성할 수 없는 엔티티 집합이다(↔ strong entity set).
- key의 일부를 다른 엔티티 집합에 의존하며, 이 대상을 identifying entity set(식별 개체 집합)이라고 한다.
- identifying entity set과 weak entity set은 일대다 관계다.
- weak entity set 안에서 그나마 개체를 구분해 주는 속성을 discriminator라고 한다.

Crews의 primary key는 자신의 number와 Studios의 name을 합친 (number, studioName)이다.
참고
- A First Course in Database Systems - Ullman, Widom
- CH12. Entity Relationship Model(2)