데이터베이스 약한 개체
더 많은 작업
- 상위 문서: 데이터베이스 개체, 데이터베이스 모델링
Weak Entity
데이터베이스 모델링에서 약한 개체는 그 자체로 고유한 기본 키를 가지지 않고 다른 강한 개체(strong entity)의 기본 키에 의존해서 식별되는 엔티티이다. Weak entity는 존재적으로 독립적이지 않고, 항상 그와 관련된 strong entity와 함께 존재해야 한다. 이 관계는 '식별 관계'라고 한다.
- 식별 의존성 weak entity는 고유한 식별자가 없기 때문에, 강한 엔티티에 의존해서만 식별될 수 있다. 예를 들어, "주문 항목"은 특정 "주문"에 속하는 엔티티로, 주문의 기본 키 없이는 "주문 항목"을 고유하게 식별할 수 없다.
- 다른 관계 명확화 두 엔티티 간의 관계를 명확하게 표현하기 위해 필요하다. 예를 들어, "부서"라는 강한 엔티티와 "프로젝트"라는 weak entity가 있다고 가정하면, 각 프로젝트는 특정 부서에 속하며 부서가 없으면 프로젝트도 의미가 없어진다. 이 경우 weak entity는 부서와의 관계를 통해서만 존재할 수 있음을 표현한다.
- 데이터 무결성 유지 Weak entity는 강한 엔티티가 삭제될 경우 자동으로 삭제되는 관계를 설정할 수 있다. 이를 통해 데이터의 무결성을 자연스럽게 유지할 수 있으며, 이는 특정 엔티티가 다른 엔티티에 의존해야만 존재할 수 있을 때 유용하다.
- ER 다이어그램에서 약한 개체는 이중 사각형, 약한 개체를 식별해 주는 식별 관계는 이중 마름모로 그린다.
- 약한 개체에서 같은 소유 개체에 속한 것끼리 구별해 주는 속성을 부분 키(partial key, 판별자)라 하고 점선 밑줄로 표시한다. 부분 키만으로는 전체에서 유일하지 않다.
- 소유 개체와의 관계는 보통 1:N 이고, 약한 개체 쪽은 반드시 관계에 참여한다(전체 참여).
- 약한 개체는 식별 관계에 언제나 전체 참여한다. 소유 개체 없이는 식별할 수 없으므로 소유 개체와 짝이 없는 약한 개체는 있을 수 없다. "약한 개체가 식별 관계에 전체 참여할 필요는 없다"는 틀린 설명이다
- 반대로 존재 종속이 있다고 모두 약한 개체는 아니다. 운전면허는 사람 없이는 존재할 수 없지만(존재 종속, 전체 참여) 면허번호라는 자기 키가 있으므로 강한 개체이다. 약한 개체를 가르는 기준은 자기 키가 없어 소유 개체의 키를 빌려야 식별되는가이다[1]
- Silberschatz 등도 약한 개체 집합을 식별 개체(identifying entity)에 존재 종속하는 개체 집합으로 정의하고, 약한 개체와 식별 개체를 잇는 관계를 식별 관계라 부른다. 약한 개체는 식별 개체의 기본 키와 판별자(discriminator)를 합쳐 식별한다[2]
- 관계형으로 바꾸면 약한 개체의 기본 키는 소유 개체의 기본 키 + 부분 키이다. 자세한 것은 ER 모델 릴레이션 변환 참고.
주문(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에 의존하여 존재하며, "건물"이 삭제되면 그와 관련된 "방"도 삭제되는 구조로 데이터 무결성을 유지할 수 있다.
- ↑ Ramez Elmasri, Shamkant B. Navathe, 『Fundamentals of Database Systems』 7판, Pearson, 2016, 3.5 Weak Entity Types.
- ↑ Silberschatz, Korth, Sudarshan, 「Database System Concepts 7th Edition - Chapter 6: Database Design Using the E-R Model」 강의 슬라이드, https://www.db-book.com/slides-dir/PDF-dir/ch6.pdf, 확인일: 2026-11-04.