1 minute read

  • ERD 설계 과정에서 연관 관계를 맺어줄 시, 식별관계와 비식별관계를 설정하는 선택지가 나온다.
  • 피아식별 이라는 단어가 제일 먼저 생각이 났는데, 피아식별은 전쟁통에 적과 아군을 식별하는 것을 말한다 🪖

    https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQYM1BoXpiJyoGyriox6gnUGTn30w1aGq6-8g&usqp=CAU

  • 그렇다면?
    • 데이터베이스에서 식별관계와 비식별관계는 테이블 간 서로를 식별할 수 있냐? 아니냐? 로 이해할 수 있다.

IN THE DATABASE

  • 예를 들어 회원테이블과 주문테이블 간의 관계는 1 : N 관계이다.
    • 보통의 경우 회원은 여러 번의 주문을 할 수 있다.
    • 이 경우 두 테이블간의 관계를 정의해야 한다.
    • 선택지 → 식별관계 또는 비식별관계로 정의할 수 있다.

식별관계

  • 부모 테이블의 기본키를 자식 테이블의 기본키(PK) 로 이용하는 방법을 말한다.

비식별관계

  • 부모 테이블의 기본키를 자식 테이블의 외래키(FK) 로 이용하는 방법을 말한다.
  • PK? FK?
    • candidate key : primary key가 될 수 있는 후보 키들 (unique, not null)
    • primary key : 기본키는 해당 개체를 고유하게 식별할 수 있는 키다.
    • foregin key : 다른 테이블의 기본키를 참조하는 키
      • 두 테이블을 연결해주는 가교 역할을 한다.
  • 그렇다면?
    • 부모 테이블의 기본키자식 테이블의 기본키로 이용한다는 것?
    • 자식 테이블에 있는 부모 테이블의 기본키로 식별할 수 있다는 것을 뜻한다.
    • 즉, 부모 테이블의 값이 없이 자식 테이블에 데이터가 존재할 수 없다.

    식별관계erd

    • 부모 테이블의 기본키를 자식 테이블의 외래키로 이용한다는 것?
    • 단순히 참조만 한다, 즉 비식별이다.
    • 부모 테이블의 값이 없이도 데이터를 추가가 가능하다.

    비식별관계erd

  • 데이터의 정합성
    • 식별관계에서 부모 테이블의 값이 없이는 자식 테이블에 데이터가 존재할 수 없다.
    • 데이터의 정합성을 데이터베이스 단계에서 보장해준다.
  • 그럼 식별관계가 무조건 좋은거 아니야? 🧐
    • 라고, 생각했지만
    • 보통 식별관계보다 비식별관계를 더 선호한다.
    • 와닿는 주 이유로는 구조 변경이 용이하다는 점과 과도한 인덱스 제거라고 생각한다.

Summary.

  • 거의 모든 경우가 그렇듯이 현재 상황에서 어떤 방법이 비용적으로 이익을 주는 지 생각해서 사용하자🔥

Leave a comment