[SQLD] 1-1 데이터 모델링의 이해(식별자)

이하영·2023년 3월 12일
0

SQLD 자격증

목록 보기
4/10

SQLD 자격증 공부하면서 정리한 내용들을 작성한 글입니다.

5. 식별자(Identifier)

(1) 식별자란?

  • 엔터티를 구분하는 논리적인 이름
  • 엔터티를 대표할 수 있는 속성
  • 엔터티에는 반드시 하나의 유일한 식별자가 존재

(2) 식별자 특징

  • 유일성
    • 주 식별자에 의해 엔터티 내 모든 인스턴스를 유일하게 구분
  • 최소성
    • 주 식별자를 구성하는 속성 수는 유일성을 만족하는 최소의 수여야 함
  • 불변성
    • 주 식별자가 한 번 특정 엔터티에 지정되면, 그 식별자 값은 변하지 않음
  • 존재성
    • 주 식별자가 지정되면 반드시 데이터 값이 존재해야 한다.(NOT NULL)

(3) 식별자(키) 분류

  • 대표성 여부
    • 주 식별자 / 보조 식별자
  • 스스로 생성되는지
    • 내부 식별자 / 외부 식별자(다른 개체와의 연결자 역할)
  • 하나의 속성으로 식별 되는지
    • 단일 식별자 / 복합 식별자
  • 본질 식별자 : 원래 있던 식별자
  • 인조 식별자 : 대체하여 새로 만든 식별자

(4) 주 식별자 후보 기준

  • 유일성 : 가장 기본(NULL은 안됨)
  • 개념적으로 유일해야 함(중복 가능성 배제)
  • 나머지 속성들을 직접 식별할 수 있어야 함
    → 다른 속성들 입장에서도 이 식별자가 유일해야 한다.
  • 자주 변경되지 않는게 좋다.(보통 주 식별자가 인덱스로 구현되기 때문에)

(5) 식별자 관계와 비식별자 관계

  1. 식별자 관계
    • 외래 식별자가 주 식별자(이거나 포함)
      → 자식이 부모의 기본키를 상속받아 기본키로 사용할 경우
    • NULL이면 안됨 (반드시 부모 엔터티가 생성되어야 자신 엔터티 생성)
    • 문제점 : 자식의 주 식별자 속성이 지속적으로 증가할 수 있어 복잡해지고, 오류 발생 가능성이 높아진다.
  2. 비식별자 관계
    • 비식별 관계 - 외래 식별자가 일반 속성
      → 부모에게 속성을 받았을 때, 자식의 기본키로 사용하지 않고 일반적인 속성으로만 사용하는 경우
    • 문제점 : 부모까지 조인해야되는 상황이 발생하여 sql 구문이 길어지고 성능이 저하된다.
profile
안녕하세요, 웹 개발자 이하영입니다!

0개의 댓글