본문 바로가기
스터디/SQL

[정리노트] SQLD 2024년 개정판 - 식별자

by 견습생L 2024. 8. 4.

[정리노트] SQLD 2024년 개정판 - 식별자

 


식별자

개념

  •   각 인스턴스를 구분할 수 있는 논리적인 이름
  •   엔터티 내의 각 인스턴스를 개별적으로 식별하기 위해 사용된다
  •   ex) 고객(고객번호), 사원(사원번호), 주문(주문번호), 상품(상품번호)

 

특징

  1. 모든 인스턴스들이 유일하게 구분
  2. 속성의 수는 유일성을 만족하는 최소의 수
  3. 자주 변하지 않는 것이어야 한다
  4. 반드시 값이 들어와야 한다

 

분류

  •   본질 식별자 = 원조 식별자 (Original)
  •   인조 식별자 = 대리 식별자 (Surrogate)

 

식별자 도출 기준

  1. 해당 업무에서 자주 이용되는 속성을 주식별자로 지정한다
  2. 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않는다.
  3. 복합으로 주식별자를 구성할 경우 너무 많은 속성이 포함되지 않도록 한다

 

식별자 관계와 비식별자 관계의 설정

  1. 외부식별자(Foreign Identifier)는 자기 자신의 엔터티에서 필요한 속성이 아니라 다른 엔터티와의 관계를 통해 자식 쪽 엔터티에 생성되는 속성을 외부식별자라 하며 데이터베이스 생성 시에 Foreign Key 역할을 한다.
  2. 자식엔터티에서 부모엔터티로부터 받은 외부식별자를 자신의 주식별자로 이용할 것인지(식별자 관계) 또는 부모와 연결이 되는 속성으로만 이용할 것인지를 결정 (비식별자 관계) 해야 한다.

 

식별자 관계

  1. 자식엔터티의 주식별자로 부모의 주식별자가 상속이 되는 경우를 식별자 관계 (Identifying Relationship)라고 한다.
  2. 부모로부터 박은 식별자를 자식엔터티의 주식별자로 이용하는 경우는 Null값이 오면 안되므로 반드시 부모엔터티가 생성되어야 자기 자신의 엔터티가 생성되는 경우이다.

 

비식별자 관계

  1. 부모엔터티로부터 속성을 받았지만 자식엔터티의 주식별자로 사용하지 않고 일반적인 속성으로만 사용할 경우 비식별자 관계(Non-Identifying Relationship)라고 한다
  2. 자식엔터티에서 받은 속성이 반드시 필수가 아니어도 무방하기 때문에 부모 없는 자식이 생성될 수 있는 경우
  3. 자식엔터티에서 주식별자로 사용하여도 되지만 자식엔터티에서 별도의 주식별자를 생성하는 것이 더 유리하다고 판단될 때 비식별자 관계에 의한 외부식별자로 표현한다

 

식별자 관계로만 설정할 경우의 문제점

  •   식별자 관계 - 주문 엔터티가 고객 엔터티의 고객번호를 식별자로 받음
  •   비식별자 관계 - 주문엔터티가 주문번호라는 식별자를 별도로 이용


  • 지속적으로 식별자 관계를 연결한 데이터 모델의 PK속성의 수는 데이터 모델의 흐름이 길어질수록 증가할 수 밖에 없는 구조를 가지게 됨
  • 개발자가 개발할 때 당연히 데이터 모델을 참조하면서 엔터티와 관계를 이용하여 개발해야 하는데 생성된 엔터티 스키마 정보만을 보고 개발하는 경우가 많다.
  • 조인에 참여하는 주식별자속성의 수가 많을 경우 정확하게 조인관계를 설정하지 않고 누락하여 개발하는 경우가 간혹 발견되기도 함
  • 식별자 관계만으로 연결된 데이터 모델의 특징은 주식별자 속성이 지속적으로 증가할 수 밖에 없는 구조로서 개발의 복잡성과 오류가능성을 유발시킬 수 있는 요인이 될 수 있다.

 

식별자관계와 비식별자 관계

  • 식별자관계에서 비식별자관계를 파악하는 기술이 필요한데 다음 흐름(Flow)에 따라 비식별자관계를 선정한다면 합리적으로 관계를 설하는 모습이 될 수 있다. 기본적으로 식별자관계로 모든 관계가 연결되면서 다음 조건에 해당할 경우 비식별자 관계로 조정하면 된다.

 

식별자 종류

  •   기본키: 주식별자, 여러 개의 후보키 중에서 하나를 선정, 테이블을 대표하는 키 (대표성)
  •   후보키: 키의 특성인 유일성과 최소성을 만족하는 키
  •   슈퍼키: 유일성은 만족하나 최소성을 만족하지 않는 키
  •   대체키: 후보키 중 기본키로 선정되지 않는 키, 기본키를 대체할 수 있는 키
  •   외래키: 한 릴레이션의 속성(집합)이 다른 릴레이션의 기본키로 이용되는 키
반응형