데이터베이스 약한 개체
- 상위 문서: 데이터베이스 개체, 데이터베이스 모델링
Weak Entity
데이터베이스 모델링에서 약한 개체는 그 자체로 고유한 기본 키를 가지지 않고 다른 강한 개체(strong entity)의 기본 키에 의존해서 식별되는 엔티티이다. Weak entity는 존재적으로 독립적이지 않고, 항상 그와 관련된 strong entity와 함께 존재해야 한다. 이 관계는 '식별 관계'라고 한다.
필요성[edit | edit source]
- 식별 의존성 weak entity는 고유한 식별자가 없기 때문에, 강한 엔티티에 의존해서만 식별될 수 있다. 예를 들어, "주문 항목"은 특정 "주문"에 속하는 엔티티로, 주문의 기본 키 없이는 "주문 항목"을 고유하게 식별할 수 없다.
- 다른 관계 명확화 두 엔티티 간의 관계를 명확하게 표현하기 위해 필요하다. 예를 들어, "부서"라는 강한 엔티티와 "프로젝트"라는 weak entity가 있다고 가정하면, 각 프로젝트는 특정 부서에 속하며 부서가 없으면 프로젝트도 의미가 없어진다. 이 경우 weak entity는 부서와의 관계를 통해서만 존재할 수 있음을 표현한다.
- 데이터 무결성 유지 Weak entity는 강한 엔티티가 삭제될 경우 자동으로 삭제되는 관계를 설정할 수 있다. 이를 통해 데이터의 무결성을 자연스럽게 유지할 수 있으며, 이는 특정 엔티티가 다른 엔티티에 의존해야만 존재할 수 있을 때 유용하다.
예시[edit | edit source]
주문(Order)과 주문 항목(Order Item)
- 강한 엔티티: "주문" (Order)
- 약한 엔티티: "주문 항목" (Order Item)
"주문"은 고객이 상품을 구매할 때 발생하는 엔티티이다. 각 주문은 고유한 주문 번호(기본 키)를 가지고 있다. 반면, "주문 항목"은 그 주문 안에서 각 상품에 대한 정보(상품명, 수량 등)를 포함하는 엔티티이다.
"주문 항목"은 혼자서는 의미를 가지지 않으며, 반드시 특정 "주문"에 속해야 한다. 즉, 주문 번호가 없으면 주문 항목을 고유하게 식별할 수 없다. 이때 "주문 항목"은 "주문"의 기본 키와 자신의 속성을 결합한 복합 키로 식별된다.
키 구성
- 주문(Order):
주문 번호 (PK)
- 주문 항목(Order Item):
주문 번호 (FK) + 상품 번호 (PK)
여기서 주문 번호는 "주문 항목"을 식별하는 데 필요한 외래 키(FK)로 사용된다. 이렇게 weak entity는 "주문"에 의존해 식별되고, "주문"이 삭제되면 그와 관련된 "주문 항목"도 함께 삭제된다.
건물(Building)과 방(Room)
- 강한 엔티티: "건물" (Building)
- 약한 엔티티: "방" (Room)
"건물"은 고유한 건물 ID를 가지고 있는 강한 엔티티이다. 반면, "방"은 각 건물 안에 존재하는 엔티티로, 건물 ID 없이는 고유하게 식별할 수 없다. "방"은 반드시 특정 건물 안에 속해야 하며, 건물 ID와 방 번호를 결합하여 식별된다.
키 구성
- 건물(Building):
건물 ID (PK)
- 방(Room):
건물 ID (FK) + 방 번호 (PK)
여기서 "방"은 건물 ID에 의존하여 존재하며, "건물"이 삭제되면 그와 관련된 "방"도 삭제되는 구조로 데이터 무결성을 유지할 수 있다.