Fall in IT.

데이터베이스 식별관계와 비식별관계 본문

데이터베이스

데이터베이스 식별관계와 비식별관계

D.Y 2022. 7. 2. 15:03

안녕하세요.

 

오늘은 데이터베이스 테이블간의 식별관계와 비식별관계에 대해서 간단하게 알아보겠습니다.

 

테이블간의 관계 설정

예를들어, 데이터베이스에서 유저테이블주문테이블간의 관계는 1대N 관계이다.

왜냐하면 한명의 유저는 여러번 주문을 할 수 있기 때문이다. 이때 두 테이블 간의 관계를 정의해야하는데

비식별관계로 정의할수도 있고, 식별관계로 정의할수도 있다.

 

식별관계

  • 부모 테이블(=참조되는 테이블)의 기본키를 자식 테이블(=참조하는 테이블)기본키로 이용하는 방법을 말한다.
  • 위의 예에서는 유저테이블이 부모테이블이 되고 자식 테이블이 주문테이블이 된다.

비식별관계

  • 부모 테이블(=참조되는 테이블)의 기본키를 자식 테이블(=참조하는 테이블)외래키로 이용하는 방법을 말한다.

 

식별관계와 비식별관계의 차이점

  • 식별관계를 사용할 경우 반드시 부모테이블에 데이터가 존재해야만 자식테이블에 데이터를 추가할 수 있다.
  • 비식별관계는 부모 데이터가 없어도 자식 테이블에서 데이터를 추가할 수 있다.
  • 다른말로하면, 식별관계는 데이터 정합성을 데이터베이스 단계에서 보장되며
  • 비식별관계는 데이터베이스 단계에서 데이터 정합성을 보장하지 않는다.
  • 식별관계의 경우 데이터 정합성을 보장하지만 자식테이블에서 부모테이블의 기본키를 기본키로 사용하고 있는 구조이기 때문에 구조 변경이 자유롭지 못하다.

 

정리

  • 보통 식별관계보다 비식별관계를 더 선호하는데 그 이유는 아래와 같다.
    • 구조 변경에 용이. 식별관계는 부모테이블의 기본키가 자식테이블에서도 기본키로 사용되므로 구조변경이 어렵다.
    • 부모테이블과의 의존성 제거. 위와 같은 맥락인데 식별관계는 부모테이블의 값이 없이는 자식테이블에 데이터가 존재할수없다.
    • 과도한 인덱스 제거
  • 하지만, 정답은 없고 개념을 잘 파악하고 현재 컨텍스트에서 어떤 방법이 더 효율적인지 판단하여 사용해야한다.

 

참조

https://www.erdcloud.com/

 

 

 

 

Comments