데이터베이스
데이터베이스 식별관계와 비식별관계
D.Y
2022. 7. 2. 15:03
안녕하세요.
오늘은 데이터베이스 테이블간의 식별관계와 비식별관계에 대해서 간단하게 알아보겠습니다.
테이블간의 관계 설정
예를들어, 데이터베이스에서 유저테이블과 주문테이블간의 관계는 1대N 관계이다.
왜냐하면 한명의 유저는 여러번 주문을 할 수 있기 때문이다. 이때 두 테이블 간의 관계를 정의해야하는데
비식별관계로 정의할수도 있고, 식별관계로 정의할수도 있다.
식별관계
- 부모 테이블(=참조되는 테이블)의 기본키를 자식 테이블(=참조하는 테이블)의 기본키로 이용하는 방법을 말한다.
- 위의 예에서는 유저테이블이 부모테이블이 되고 자식 테이블이 주문테이블이 된다.
비식별관계
- 부모 테이블(=참조되는 테이블)의 기본키를 자식 테이블(=참조하는 테이블)의 외래키로 이용하는 방법을 말한다.
식별관계와 비식별관계의 차이점
- 식별관계를 사용할 경우 반드시 부모테이블에 데이터가 존재해야만 자식테이블에 데이터를 추가할 수 있다.
- 비식별관계는 부모 데이터가 없어도 자식 테이블에서 데이터를 추가할 수 있다.
- 다른말로하면, 식별관계는 데이터 정합성을 데이터베이스 단계에서 보장되며
- 비식별관계는 데이터베이스 단계에서 데이터 정합성을 보장하지 않는다.
- 식별관계의 경우 데이터 정합성을 보장하지만 자식테이블에서 부모테이블의 기본키를 기본키로 사용하고 있는 구조이기 때문에 구조 변경이 자유롭지 못하다.
정리
- 보통 식별관계보다 비식별관계를 더 선호하는데 그 이유는 아래와 같다.
- 구조 변경에 용이. 식별관계는 부모테이블의 기본키가 자식테이블에서도 기본키로 사용되므로 구조변경이 어렵다.
- 부모테이블과의 의존성 제거. 위와 같은 맥락인데 식별관계는 부모테이블의 값이 없이는 자식테이블에 데이터가 존재할수없다.
- 과도한 인덱스 제거
- 하지만, 정답은 없고 개념을 잘 파악하고 현재 컨텍스트에서 어떤 방법이 더 효율적인지 판단하여 사용해야한다.
참조