식별자 관계와 비식별자 관계, 데이터 모델에서의 선택 기준

식별자 관계와 비식별자 관계의 PK·FK 구성, ERD 표기, 데이터 모델링에서 선택하는 상황을 정리합니다.

2026-08-14 · 최초 발행 2025-08-10

부모 키가 자식의 정체성까지 결정하는 경우

식별자 관계(Identifying Relationship)는 부모 엔터티의 기본키(PK)가 자식 엔터티 기본키의 일부가 되는 모델이다. 부모 키는 자식 테이블에서 PK이면서 FK가 되고, 자식은 부모와 강하게 연결된다. ERD에서는 실선으로 나타낸다.

가령 학과와 학생을 모델링할 때 학과코드가 학생의 식별에 포함된다면, 학생의 키는 학과코드와 학번의 조합이 된다.

Identifying RelationshipDepartmentstringDepartmentCodePKstringDepartmentNameStudentstringDepartmentCodePK,FKstringStudentIDPKstringNamedateAdmissionDate

이 관계는 자식 테이블 PK 일부가 부모 테이블 PK를 참조한다는 점이 핵심이다. 자식이 부모 없이 독립적으로 존재할 수 없고, 업무상 복합키가 자연스러울 때 적합하다. 상속 관계나 이력 관리가 필요한 경우에도 선택할 수 있다.

외래키를 일반 속성으로 두는 모델

비식별자 관계(Non-Identifying Relationship)에서는 부모 엔터티의 PK가 자식 엔터티의 일반 속성으로 전달된다. 자식의 PK에는 포함되지 않고 FK로만 쓰인다. ERD 표기는 점선이며, 자식 엔터티의 부모 의존성은 식별자 관계보다 약하다.

교수와 강의를 예로 들면 강의코드는 강의 자체의 PK이고, 교수번호는 담당 교수를 가리키는 FK다.

Non-IdentifyingRelationshipProfessorstringProfessorIDPKstringNamestringDepartmentLecturestringLectureCodePKstringProfessorIDFKstringLectureNameintCredits

비식별자 관계는 자식 테이블의 일반 속성이 부모 PK를 참조하는 구조다. 자식이 부모 없이도 존재할 수 있거나, 부모가 없어져도 자식 데이터를 남겨야 할 때 유용하다. 복합키를 줄이고 PK 속성의 과도한 증가를 막는 데도 쓰인다.

비식별자 관계로 종속성을 끊어야 할 때

상품은 주문되지 않은 상태에서도 존재한다. 주문상세는 주문과 상품을 참조하지만, 상품의 존재를 주문에 종속시키지 않으려면 비식별자 관계로 모델링할 수 있다.

Non-IdentifyingRelationshipNon-IdentifyingRelationshipProductstringProductCodePKstringProductNameintPriceOrderDetailstringOrderDetailIDPKstringOrderNumberFKstringProductCodeFKintQuantityOrderstringOrderNumberPKdateOrderDatestringCustomerID

직원이 퇴사한 뒤에도 프로젝트 기록을 보관해야 하는 관계 역시 비식별자 관계에 맞는다. 직원의 삭제 여부와 프로젝트 기록의 보존을 분리할 수 있기 때문이다.

Non-IdentifyingRelationshipEmployeestringEmployeeIDPKstringNamedateHireDatedateResignationDateProjectRecordstringRecordIDPKstringEmployeeIDFKstringProjectNamedateStartDatedateEndDate

식별자 관계가 많은 엔터티를 연속으로 관통하면 PK가 커질 수 있다. 이때 중간 지점에서 비식별자 관계로 바꿔 주 식별자의 상속을 멈출 수 있다.

Identifying RelationshipNon-IdentifyingRelationshipSchoolstringSchoolCodePKstringSchoolNameDepartmentstringSchoolCodePK,FKstringDepartmentCodePKstringDepartmentNameProfessorstringProfessorIDPKstringSchoolCodeFKstringDepartmentCodeFKstringName

여러 엔터티를 하나의 테이블로 합칠 때도 비식별자 관계를 사용할 수 있다. 고객·회사·공급업체의 주소 정보를 주소 테이블 하나로 통합하는 경우가 이에 해당한다.

Non-IdentifyingRelationshipNon-IdentifyingRelationshipNon-IdentifyingRelationshipCustomerstringCustomerIDPKstringNameAddressstringAddressIDPKstringReferenceEntityIDFKstringAddressLinestringPostalCodeCompanystringCompanyIDPKstringCompanyNameSupplierstringSupplierIDPKstringSupplierName

관계 선택은 키 구조보다 업무 규칙에서 시작한다

부모와 자식의 강한 종속성, 자식의 독립적 존재 가능성, 복합키 필요성, 이력 보존 여부를 함께 봐야 한다. 자식이 부모 없이 존재할 수 없고 부모 식별자가 자식 정체성의 일부라면 식별자 관계가 자연스럽다.

반대로 부모가 삭제되어도 자식 데이터를 보존해야 하거나, 여러 엔터티를 하나의 테이블로 통합해야 한다면 비식별자 관계가 더 적절하다. 대부분의 DBMS에서는 식별자 관계보다 비식별자 관계를 선호하는 경향이 있다.

프로젝트 초기에는 관계 설계 원칙을 명확히 정하고, 데이터 모델의 단순성·확장성·성능·무결성을 함께 고려해야 한다. PK에 FK를 포함할지 여부는 단순한 표기 차이가 아니라 이후 모델의 유연성과 유지보수 방식에 영향을 준다.

데이터 모델링식별자 관계비식별자 관계기본키외래키