데이터 베이스 과목을 공부하며 강한 엔티티와 약한 엔티티의 차이에 대해 헷갈려서 이를 정리하고자 한다.
Strong Entity 는 자체적인 고유 식별자(primary key)를 가지는 엔티티이다.
Weak Entity 는 자체적인 고유 식별자를 가지지 않는 엔티티이다.
예를 들어서 주문 A와 주문 B가 존재한다고 하자. 각각의 주문은 해당 주문의 내용인 상품별 주문 정보와 대응된다.(상품 이름, 배송일, 도착일, 송장 번호 등).
한번 주문 시 여러개의 상품을 동시에 주문할 수 있으므로 하나의 주문에 여러개의 상품별 주문 정보가 대응될 수 있다. 예를 들어 주문 A에는 2개의 상품 주문 정보가, 주문 B에는 3개의 상품 주문 정보가 있다고 가정하자.
앞서 설명했듯 Weak Entity 는 자체적인 고유 식별자를 가지지 않는 엔티티라고 하였다. 이 말의 의미는 주문 A의 상품 주문 정보의 ID가 1,2 이고 주문 B의 상품 주문 정보의 ID 가 1,2,3 가 될 수 있다는 의미이고, 이말은 즉슨 위 ID 속성값만을 가지고는 상품 주문 정보 엔티티를 식별할 수 없다는 의미이다.
*물론 동일한 하나의 주문에 대응되는 여러 개의 상품 주문 정보 엔티티의 ID는 서로 식별가능해야 한다.
따라서 주문 A의 ID가 1인 상품 주문 정보와, 주문 B의 ID가 1인 상품 주문 정보를 식별하기 위해 자체적으로 식별가능한 주문 엔티티의 primary key를 이용해야 한다. 주문 엔티티는 고유 식별자를 가지기 때문에 주문 엔티티의 고유 식별자 + 상품 주문 정보의 ID 를 이용하면 상품 주문 엔티티를 식별할 수 있기 때문이다.
따라서 우리는 ID 가 1인 상품 주문 정보 엔티티들을 "주문 A"의 ID가 1인 상품 주문 엔티티와 "주문 B"의 ID가 1인 상품 주문 엔티티로 나누어 보기 때문에 식별가능해지는 것을 의미한다.
정리하자면, Weak Entity 는 고유 식별자를 가지지 않기 때문에 해당 Weak Entity 의 부모 엔티티의 PK + 동일한 부모 엔티티 내에서 구별되는 Weak Entity 의 식별자(Discriminating Key)의 조합 즉, partial key를 활용하여 Weak Entity 를 식별할 수 있게 된다.
*Discriminating Key: 동일한 부모 엔티티 내에서 구별되는 Weak Entity 의 식별자
*partial key: 부모 엔티티의 고유 식별자와 해당 Weak Entity 내에서 구별되는 식별자의 조합