Strong Entity vs Weak Entity

Hyun·2023년 10월 8일
0

데이터베이스

목록 보기
2/2

Strong Entity vs Weak Entity

데이터 베이스 과목을 공부하며 강한 엔티티와 약한 엔티티의 차이에 대해 헷갈려서 이를 정리하고자 한다.

Strong Entity(강한 엔티티)

Strong Entity 는 자체적인 고유 식별자(primary key)를 가지는 엔티티이다.

  • 각 행은 엔티티 자체의 속성을 통해 고유하게 식별된다
  • 데이터베이스에서 독립적으로 존재할 수 있으며, 다른 엔티티와의 관계를 나타낼 수 있다
    예를 들어, 고객(Customer) 엔티티는 고객 ID(primary key)를 가지며, 각 고객은 자체적으로 고유하게 식별된다.

Weak Entity(약한 엔티티)

Weak Entity 는 자체적인 고유 식별자를 가지지 않는 엔티티이다.

  • 부모 엔티티와의 관계와 부모 엔티티의 키(primary)를 사용하여 이루어진다
  • 일반적으로) 부모 엔티티와의 관계를 나타내는 외래 키(Foreign Key)를 사용하여 식별된다
  • 부모 엔티티에 종속적이며, 부모 엔티티와의 관계를 통해 의미를 가진다.
    즉, 부모 엔티티가 존재하지 않으면 Weak Entity 또한 존재할 수 없다.
    예를 들어, 주문 상세(Order Detail) 엔티티는 주문(Order)과 관련된 엔티티로, 주문 번호와 상품 번호 등을 사용하여 주문 상세를 식별한다. 따라서 주문 상세 엔티티는 주문 엔티티에 종속적으로 존재한다. 주문이 없으면 당연히 주문 상세 정보 또한 존재할 수 없기 때문이다.

구체적인 예

예를 들어서 주문 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 내에서 구별되는 식별자의 조합

profile
better than yesterday

0개의 댓글