식별자 / 비식별자 관계 정리

TJK·2025년 8월 22일

식별자 / 비식별자 관계 정리

관계형 데이터베이스에서 두 테이블 간의 관계는 식별자(Identifying) 관계와 비식별자(Non-Identifying) 관계로 구분됩니다. 이 두 관계의 가장 중요한 차이점은 자식 테이블의 PK에 부모 테이블의 PK가 포함되는지 여부입니다.


1. 핵심 개념 (★★★★★)

구분식별자 관계비식별자 관계
정의부모의 PK자식의 PK의 일부가 되는 관계.부모의 PK자식의 PK에 포함되지 않고 단순 FK로만 존재하는 관계.
종속성강한 종속성. 자식은 부모 없이는 존재할 수 없음.약한 종속성. 자식은 부모와 독립적으로 존재 가능.
ERD 표기실선 (Solid Line)점선 (Dotted Line)
예시**주문(Order)**이 있어야 **주문상세(OrderDetail)**가 존재하는 관계.**직원(Employee)**이 **부서(Department)**에 소속된 관계.

2. 시험에 자주 나오는 함정 (★★★★★)

  • PK의 구성: "자식 테이블의 PK에 부모 테이블의 PK가 포함되어 있으면 식별자 관계다"라는 핵심 원리를 기억해야 합니다.
  • ERD 선 모양: ERD 문제에서 선이 실선인지 점선인지를 가장 먼저 확인해야 합니다.
  • 부모 삭제 시 연쇄 삭제: 식별자 관계는 보통 ON DELETE CASCADE 옵션으로 연쇄 삭제를 설정하지만, 반드시 자동 삭제되는 것은 아닙니다. 이 점이 중요한 함정입니다. ON DELETE 옵션에 따라 달라집니다.

3. SQLD 시험 핵심 포인트

  • PK의 역할: 식별자 관계에서는 FKPK의 역할까지 겸합니다. 비식별자 관계에서는 FKPK와는 완전히 독립된 역할만 수행합니다.
  • 독립성: 자식 테이블에 고유한 PK가 있다면 비식별자 관계일 가능성이 높습니다.
  • 용어의 정확한 이해: "부모 PK가 자식 PK의 일부", "단순 FK로만 포함" 등의 표현을 정확히 구분하는 것이 중요합니다.

4. 최종 암기 팁

  • 식별자 = ****구 같은 PK! (PK에 새겨짐)
  • 비식별자 = ****밀번호 같은 FK! (그냥 참고만)
  • 실선 = ****제로 하나!
  • 점선 = 하나씩 따로!

실전 기출 문제 스타일

1. 다음 중 식별자 관계의 특징으로 옳지 않은 것은?
A. 부모 엔터티의 PK가 자식 엔터티의 PK에 포함된다.
B. 자식 엔터티는 부모 엔터티 없이는 존재할 수 없다.
C. ERD 상에서 점선으로 표현된다.
D. 부모와 자식 테이블 간의 강한 종속성을 나타낸다.

2. Departments 테이블의 dept_idPRIMARY KEY이고, Employees 테이블의 emp_idPRIMARY KEY, dept_idFOREIGN KEY일 때, 두 테이블의 관계는?
A. 식별자 관계
B. 비식별자 관계
C. 상속 관계
D. 재귀 관계

3. 다음 SQL문으로 생성된 두 테이블의 관계는?

CREATE TABLE Orders (
  order_id INT PRIMARY KEY,
  ...
);
CREATE TABLE OrderItems (
  order_id INT,
  item_id INT,
  ...
  PRIMARY KEY (order_id, item_id),
  FOREIGN KEY (order_id) REFERENCES Orders(order_id)
);

A. 비식별자 관계
B. 식별자 관계
C. 다대다 관계
D. 1:1 관계


정답 및 해설

  • 문제 1 정답: C
    • 해설: 식별자 관계는 ERD에서 실선으로 표현됩니다. 점선은 비식별자 관계입니다.
  • 문제 2 정답: B
    • 해설: Employees 테이블의 dept_idPRIMARY KEY가 아니며, FOREIGN KEY로만 존재합니다. 따라서 비식별자 관계입니다.
  • 문제 3 정답: B
    • 해설: OrderItems 테이블의 PRIMARY KEYorder_iditem_id의 복합키로 구성되어 있습니다. 여기서 order_id는 부모 테이블인 OrdersPRIMARY KEY입니다. 따라서 부모의 PK가 자식의 PK에 포함되므로 식별자 관계입니다.
profile
Hello world!

0개의 댓글