by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

식별자와 키 종류




식별자와 키 종류




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

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

식별자의 종류는?

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

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



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

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

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

4. 인조 식별자
  • 사용 조건
     - 후보 식별자 중 주 식별자로 선정할 만 한 게 없을 때
     - 후보 식별자 속성 조합이 지나치게 복잡할 때
     - 실체/자립 엔티티에서 사용
  • 주로 "~코드" / "~번호" 등의 무의미한 번호가 사용됨
     - ~코드 라는 명은 공통코드 속성과 혼동되므로 권장하지 않음
  • 인조 식별자 고려 단계
     - 주요 엔티티는 개념모델 단계에서
     - 일반 엔티티는 논리모델 단계에서
  • 인조 식별자 사용 시 장점은
    모델이나 SQL 이 간단해 지는것
  • 인조 식별자 사용 시 단점은
     - 인스턴스 생성 기준을 인조(주) 식별자만으로 판단하기 어렵다
     - 실제 업무 식별자에 유니크 인덱스를 사용하여 추가 키 관리를 해야 한다
     - 모델만 보고 업무를 이해하기 어렵다
     - 특히 행위 엔티티에 인조 식별자 사용 시 가독성이 많이 저하된다

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

6. 슈퍼 식별자
  • 후보 식별자에 +a 개념으로 속성이 추가 된 것
  • 이미 유일성이 보장 된 속성 조합에 추가로 속성이 결합되었으므로 쓰지 말기를 권장함


문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.