상세 컨텐츠

본문 제목

[데이터베이스] 식별관계 & 비식별관계

DATABASE

by jeonghojin 2023. 5. 11. 23:40

본문

RDBMS의 테이블을 생성하고, 각 테이블마다 관계를 설정할 때 일반적으로 외래 키를 사용하곤 한다. 외래 키를 통해 다른 테이블과 같은 키를 공유하고 이를 이용하여 조인하여 관계를 이용하는 방식을 사용한다. 외래 키를 사용하여 테이블 간 관계를 정립해 줄 때 사용하는 전략은 크게 식별관계, 비식별관계 전략이 있다.
 

식별관계(Identifying Relationship)

식별관계란 부모 테이블의 기본키 또는 유니크 키를 자식 테이블이 자신의 기본키로 사용하는 관계이며. 서로 종속되게 된다.
부모 테이블의 키가 자신의 기본키에 포함되기 때문에 반드시 부모 테이블에 데이터가 존재해야 자식 테이블에 데이터를 입력할 수 있다. 즉, 부모 테이블 없이 자식 테이블은 홀로 어떤 의미를 갖지 못하는 관계가 된다.
 
< 학생 정보를 기록하는 Table A 와 학생 성적을 관리하는 Table B>
 

위 테이블에서 TableA는 학생들의 정보를 기록하는 테이블이고, TableB는 학생들의 과목별 성적을 기록하는 테이블이다.
TableATableB는 똑같이 student_id를 PK로 갖고 있으며, TableB에서 student_id가 없다면 TableB는 독립적으로 존재할 수 없는 정보가 된다.
* ERD 에서 식별관계는 실선으로 표현한다.
 

비식별관계(non - Identifying Relationship)

비식별관계란 부모 테이블의 기본키 또는 유니크 키를 자신의 기본키로 사용하지 않고, 외래 키로 사용하는 관계이다. 부모는 자식의 부분적인 정보만을 표현함을 의미.
TableB의 값은 TableA와 FK의 관계를 맺고 있긴 하지만 독립적으로 존재할 수 있어야 한다. 즉, FK가 TableB의 PK가 되어선 안된다.

 
TableB에서 student_id를 키로 갖지 않도록 하고, 독자적인 subject_id를 키로 설정한다. 그리고 학생 정보를 기록하는 TableA가 이를 참조하는 방식으로 변경한다. 두 테이블은 서로가 없어도 유효한 정보를 나타낼 수 있다.
* ERD에서 비식별관계는 점선으로 표현한다.
 


참고 : 

더보기

관련글 더보기