관계형 데이터 모델링 프리미엄 가이드 DB구축 (2014년)
식별자와 키 종류 0 0 40,822

by 구루비스터디 식별자 [2018.06.10]


식별자의 역할은?

  • 정규화 수행의 결정자 역할
  • 종속자 도출하는 결정자 역할


식별자의 도출은 언제?


개념 모델링 단계
  • 중요 엔티티/관계 도출하는 단계이므로
  • 속성까지는 생략해도 되나 업무 식별자 도출은 권고


물리 모델링 단계
  • 주 식별자 도출해야 함


식별자의 종류는?

  • 1. 후보 식별자
  • 2. 주 식별자
  • 3. 대리 식별자
  • 4. 인조 식별자
  • 5. 외래 식별자
  • 6. 슈퍼 식별자


1. 후보 식별자

  • 인스턴스의 유일성을 보장하며 최소 속성으로 구성 된 키
  • 하나의 엔티티에 여러 개 후보 식별자가 있을 수 있다
  • 엔티티 안에서 함수 종속성을 발생시키는 결정자 역할을 한다
  • 후보 식별자를 알면 나머지 속성 값들도 알 수 있다
  • 엔티티 정의/정규화 하는 기준이 된다
  • 정규화 수행 시 다른 후보 식별자가 다른 릴레이션으로 분리될 수도 있다
  • 아래 예시의 경우 사원번호를 주 식별자로 하면 FD1 에 의해 정규화 수행되며 ...어떻게?



  • 후보 식별자들 중 하나가 주 식별자가 될 수 있다
  • 유일성을 보장 하긴 하지만 널을 허용할 수 있다
  • 유니크 인덱스 생성해 주어야 한다


2. 주 식별자

  • 후보 식별자 중 성능/관리 측면에서 가장 좋은 식별자를 주 식별자로 선정
  • 후보 식별자 중 주 식별자가 될 만 한 적당한 식별자가 없으면 인조 식별자 생성
  • 엔티티에서 하나만 존재 할 수 있다
  • PK(Primary Key) 라고 한다


3. 대리 식별자

  • 후보 식별자 중 주 식별자로 선택하고 남은 후보 식별자
  • AK(Alternate Key) 라고 한다


4. 인조 식별자

  • 사용 조건
  • 후보 식별자 중 주 식별자로 선정할 만 한 게 없을 때
  • 후보 식별자 속성 조합이 지나치게 복잡할 때
  • 실체/자립 엔티티에서 사용


  • 주로 "코드" / "번호" 등의 무의미한 번호가 사용됨
  • ~코드 라는 명은 공통코드 속성과 혼동되므로 권장하지 않음


  • 인조 식별자 고려 단계
  • 주요 엔티티는 개념모델 단계에서
  • 일반 엔티티는 논리모델 단계에서


  • 인조 식별자 사용 시 장점은 모델이나 SQL 이 간단해 지는것


  • 인조 식별자 사용 시 단점은
  • 인스턴스 생성 기준을 인조(주) 식별자만으로 판단하기 어렵다
  • 실제 업무 식별자에 유니크 인덱스를 사용하여 추가 키 관리를 해야 한다
  • 모델만 보고 업무를 이해하기 어렵다
  • 특히 행위 엔티티에 인조 식별자 사용 시 가독성이 많이 저하된다


5. 외래 식별자

  • 엔티티 종속 관계에서 상위 엔티티의 주 식별자가 하위 엔티티의 외래 식별자


6. 슈퍼 식별자

  • 후보 식별자에 +a 개념으로 속성이 추가 된 것
  • 이미 유일성이 보장 된 속성 조합에 추가로 속성이 결합되었으므로 쓰지 말기를 권장함
"구루비 데이터베이스 스터디모임" 에서 2014년에 "관계형 데이터 모델링 프리미엄 가이드" 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3618

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입