RDBMS의 테이블을 생성하고, 각 테이블마다 관계를 설정할 때 일반적으로 외래 키를 사용하곤 한다. 외래 키를 통해 다른 테이블과 같은 키를 공유하고 이를 이용하여 조인하여 관계를 이용하는 방식을 사용한다. 외래 키를 사용하여 테이블 간 관계를 정립해 줄 때 사용하는 전략은 크게 식별관계, 비식별관계 전략이 있다.
식별관계란 부모 테이블의 기본키 또는 유니크 키를 자식 테이블이 자신의 기본키로 사용하는 관계이며. 서로 종속되게 된다.
부모 테이블의 키가 자신의 기본키에 포함되기 때문에 반드시 부모 테이블에 데이터가 존재해야 자식 테이블에 데이터를 입력할 수 있다. 즉, 부모 테이블 없이 자식 테이블은 홀로 어떤 의미를 갖지 못하는 관계가 된다.
< 학생 정보를 기록하는 Table A 와 학생 성적을 관리하는 Table B>
위 테이블에서 TableA는 학생들의 정보를 기록하는 테이블이고, TableB는 학생들의 과목별 성적을 기록하는 테이블이다.
TableA와 TableB는 똑같이 student_id를 PK로 갖고 있으며, TableB에서 student_id가 없다면 TableB는 독립적으로 존재할 수 없는 정보가 된다.
* ERD 에서 식별관계는 실선으로 표현한다.
비식별관계란 부모 테이블의 기본키 또는 유니크 키를 자신의 기본키로 사용하지 않고, 외래 키로 사용하는 관계이다. 부모는 자식의 부분적인 정보만을 표현함을 의미.
TableB의 값은 TableA와 FK의 관계를 맺고 있긴 하지만 독립적으로 존재할 수 있어야 한다. 즉, FK가 TableB의 PK가 되어선 안된다.
TableB에서 student_id를 키로 갖지 않도록 하고, 독자적인 subject_id를 키로 설정한다. 그리고 학생 정보를 기록하는 TableA가 이를 참조하는 방식으로 변경한다. 두 테이블은 서로가 없어도 유효한 정보를 나타낼 수 있다.
* ERD에서 비식별관계는 점선으로 표현한다.
참고 :
RDBMS의 관계 - Identifying & Non-Identifying Relationship 에 대하여
RDB에서 관계를 맺는데 있어서 식별관계(Identifying Relationship)와 비식별관계(Non-Identifying Reltationship)가 존재한다.정확히는 RDBMS에서 나누는 관계가 아닌 ER Diagram 상에서 논리상 나누는 개념이며...
jins-dev.tistory.com
https://moonibot.tistory.com/36
[database] 식별 관계 (Identifying), 비식별 관계 (Non-identifying)
식별 관계(Identifying) - 개체 A, B 사이의 관계에서 A 개체의 기본키가 B 개체의 외래키이면서 동시에 기본키가 되는 관계 - B 개체의 존재 여부가 A 개체의 존재 여부에 의존적인 경우에 발생, ER 도
moonibot.tistory.com
https://chichoon.tistory.com/737
Identifying / Non-Identifying Relationship
Identifying / Non-Identifying Relationship ERDCloud에서 테이블 연결을 그리다 보면 대문짝만하게 Identifying Relationship, Non-Identifying Relationship 중 고르라고 한다 (살짝 당황함) 무엇인지 알아보자 서론 부모 테
blog.chichoon.com
[Cache] 캐싱 전략1 (0) | 2023.05.24 |
---|---|
[데이터베이스] 인덱스(Index) (0) | 2023.05.14 |
[데이터베이스] MySQL 이벤트 스케줄러 (0) | 2023.05.11 |
[데이터베이스] 트랜잭션 격리 수준(Isolation Level) (0) | 2023.04.24 |
[데이터베이스] 리플리케이션(Replication) / 클러스터링(Clustering) (1) | 2023.04.13 |