관계형 데이터베이스에서 두 테이블 간의 관계는 식별자(Identifying) 관계와 비식별자(Non-Identifying) 관계로 구분됩니다. 이 두 관계의 가장 중요한 차이점은 자식 테이블의 PK에 부모 테이블의 PK가 포함되는지 여부입니다.
| 구분 | 식별자 관계 | 비식별자 관계 |
|---|---|---|
| 정의 | 부모의 PK가 자식의 PK의 일부가 되는 관계. | 부모의 PK가 자식의 PK에 포함되지 않고 단순 FK로만 존재하는 관계. |
| 종속성 | 강한 종속성. 자식은 부모 없이는 존재할 수 없음. | 약한 종속성. 자식은 부모와 독립적으로 존재 가능. |
| ERD 표기 | 실선 (Solid Line) | 점선 (Dotted Line) |
| 예시 | **주문(Order)**이 있어야 **주문상세(OrderDetail)**가 존재하는 관계. | **직원(Employee)**이 **부서(Department)**에 소속된 관계. |
식별자 관계다"라는 핵심 원리를 기억해야 합니다.식별자 관계는 보통 ON DELETE CASCADE 옵션으로 연쇄 삭제를 설정하지만, 반드시 자동 삭제되는 것은 아닙니다. 이 점이 중요한 함정입니다. ON DELETE 옵션에 따라 달라집니다.PK의 역할: 식별자 관계에서는 FK가 PK의 역할까지 겸합니다. 비식별자 관계에서는 FK가 PK와는 완전히 독립된 역할만 수행합니다.PK가 있다면 비식별자 관계일 가능성이 높습니다.식별자 = **식**구 같은 PK! (PK에 새겨짐)비식별자 = **비**밀번호 같은 FK! (그냥 참고만)실선 = **실**제로 하나!점선 = 점 하나씩 따로!1. 다음 중 식별자 관계의 특징으로 옳지 않은 것은?
A. 부모 엔터티의 PK가 자식 엔터티의 PK에 포함된다.
B. 자식 엔터티는 부모 엔터티 없이는 존재할 수 없다.
C. ERD 상에서 점선으로 표현된다.
D. 부모와 자식 테이블 간의 강한 종속성을 나타낸다.
2. Departments 테이블의 dept_id가 PRIMARY KEY이고, Employees 테이블의 emp_id가 PRIMARY KEY, dept_id가 FOREIGN 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 관계
식별자 관계는 ERD에서 실선으로 표현됩니다. 점선은 비식별자 관계입니다.Employees 테이블의 dept_id는 PRIMARY KEY가 아니며, FOREIGN KEY로만 존재합니다. 따라서 비식별자 관계입니다.OrderItems 테이블의 PRIMARY KEY가 order_id와 item_id의 복합키로 구성되어 있습니다. 여기서 order_id는 부모 테이블인 Orders의 PRIMARY KEY입니다. 따라서 부모의 PK가 자식의 PK에 포함되므로 식별자 관계입니다.