외래키를 사용하여 테이블 간 관계를 정립해줄 때 사용하는 전략은 크게 식별 및 비식별 관계가 있습니다.
현재 진행하고 있는 프로젝트와 관련된 내용이라, 이번 기회에 각각에 대해 자세하게 살펴보도록 하겠습니다.
식별관계
식별 관계는 부모 테이블의 기본키가 자식 테이블의 기본키이면서 동시에 외래키가 되는 관계를 뜻합니다.
즉 자식 테이블의 존재 유무는 부모 테이블에 의존적이라 할 수 있습니다.
비식별관계
비식별 관계는 부모 테이블의 기본키가 자식 테이블의 외래키로만 이용되는 관계를 뜻합니다.
또한 외래 키에 NULL의 허용 여부에 따라 필수적 비식별 관계와 선택적 비식별 관계로 나뉩니다
필수적 비식별 관계는 외래키에 NULL을 허용하지 않으며, 연관관계를 필수적으로 맺어야합니다.
선택적 비식별 관계는 외래키에 NULL을 허용합니다. 도한 연관관계를 맺을지 말지 선택할 수 있습니다.
차이점
식별관계를 사용할 경우 반드시 부모 테이블에 데이터가 존재해야만 자식 테이블을 추가할 수 있습니다
하지만 비식별관계에서는 부모 데이터가 없어도 자석 테이블에 데이터를 추가할 수 있게 됩니다.
이것을 다른 말로 하면 식별관계는 데이터의 정합성을 데이터 베이스 단계에서 보장하지만 비식별 관계는
그렇지 않다는 것을 의미하기도 합니다.
정합성을 보장한다는 말은 구조 변경에 있어 자유롭지 못한것을 뜻합니다.
그래서 보통은 테이블 설계 시 비식별 관계를 테이블을 설계하는 것을 권장한다고 합니다.
식별 관계를 사용할 경우 데이터의 정합성을 보장하지만, 비즈니스 로직이 변경되면 테이블 관리가
힘들어지기 때문입니다.
이상으로 글 읽어주셔서 감사합니다!
'DB' 카테고리의 다른 글
옵티마이저란? (0) | 2023.05.19 |
---|---|
DB 쿼리 성능을 개선해보자 (0) | 2023.04.05 |
DB Index에 대하여 (0) | 2023.03.10 |
Transaction(트랜잭션)이란 (0) | 2023.01.01 |
DB 커넥션을 반드시 close 해야하는 이유 (0) | 2022.08.01 |