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

8.2 식별자(UID) 키(PK)종류




후보 식별자(Candidate Identifier) 또는 후보 키 (Candidate Key)

  • 릴레이션에서 인스턴스의 유일성을 보장해 주면서 최소로 구성된 속성 이 후보 식별자이다.
  • 인스턴스를 유일하게 식별하게 히는 후보 식별자는 하나의 엔터티에 여러 개가 존재할수 있다.

사원테이블 결정자
  • FD1: 사원번호 -> 사원명
  • FD2: 전화번호 -> 사원명
  • FD3: 주민등록번호 -> 사원명
  • FD4: 고객번호 -> 사원명
  • 사원번호,주민등록번호,전화번호,고객번호는 릴레이션에서 유일한 값
  • 후보 식별자 중에서 결국 주 식별자 (Primary Identifier)가 결정된다.
  • 주 식별자가 될 수 있는 후보를 후보 식별자라고 한다.
  • 후보 식별자가 널(Null)을 허용할 수 있다는 것을 제외하면 주 식별자와 성격이 동일하다
    ( 인스턴스의 유일성을 보장해주기 위해서 널 (Null)을 허용히는 유니크 인텍스를생성해야한다 )


주 식별자(Primary Identifier) 또는 주 키 (Primary Key)

  • 하나의 엔터티에 후보 식별자는 하나 이상 존재할 수 있지만 주식별자는 하나만 존재해야한다.
  • 주 식별자가 주키 (Primary Key)가 된다.
  • 후보 식별자가 하나 이상일 때 후보 식별자 중에서 성능이나 관리 등의 여러 측변을 고려해 효율성이 좋은 후보 선택
  • 후보 식별자 중에서 적당한 후보가 없다면 인조 식별자를 채택해 주 식별자로 사용할 수 있다
  • -> (그림 8.8)에서 주 식별자는 사원번호이다. 여러 개의 업무 식별자 중에서 주 식별자로 사용할만한 적당한 후보가 없어서 사원번호 라는 인조 식별자를 채택.


주 식별자 선택이유
  • 1) 사원번호 - 유일성
  • 2) 전화번호 - 업무 식별자는 대체로 수정되지 않는다.(변경 가능성이 높다)
  • 3) 주민등록번호 - 보안성/법률 문제
  • 4) 고객번호 - 사원을 고객으로 등록하지 않는 경우 / 고객과의 구분 ( NULL 허용불가 / 업무적 효율성문제 )


대리 식별자(Alternate Identifier) 또는 대리 키 (Alternate Key)

  • 후보 식별자가 여러 개일 때 후보 식별자 중에서 주 식별자로 선택되고 남은 나머지 후보 식별자를 대리 식별자(또는 대체 식별재)라 한다.
  • 대리 식별지는 인조 식별자와 다르다.
    (인조 식별자가 존재할 때는 대리 식별자와 후보 식별자는 동일하며, 후보 식별자 중에 주 식별자를 채택할 때는 주 식별자와 대리 식별자의 전체 집합이 후보 식별자가 된다.)


인조 식별자(Artificial Identifier) 또는 인조 키(Artificial Key)

  • 하나 또는 두개이상 존재하는 후보식별지 중에 주식별자로 사용할 마땅한 후보가 없을 때는 일련변호 등 단독 속성을 사용하는 새로운 식별자
  • [그림 8.8]에서 사원번호는 인조 식별지이다.
  • 인조 식별지는 흔히 '~코드','~번호' 등의 속성이 사용, ('~코드' 속성은 공통코드와 속성이 혼동되므로 가능한면 사용금지)
  • 인조 식별자 내에 업무 규칙을 부여히는 것은 좋지 않다.
  • 중요한 엔터티 라면 가능한 빠른 단계(개념 모델링)에서 결정하는 것이 좋다
  • 인조 식별자를 채택하면 모델이 단순해지고 SQL 또한 단순해진다.
  • 인조 식별자의 단점은 인스턴스가 새로 생성되는 기준을 인조 식별자만 봐서는 알 수 없다
  • 업무 식별자에 유니크 인텍스를 생성해 인스턴스가 생성되는 업무 기준을 관리해서 업무 유일성을 확보해야한다.
  • -> ([그림 8,1] 엔터티에서 사원의 주민등록번호가 다를 때 새로운 인스턴스를 추가할지 . 주민등록번호와 입사일자가 다를 때 새로운 인스턴스를 추가할지를 판단할 수 없다)
  • 인조 식별자만 봐서는 업무를 파악하기 불편한 경우가 존재한다. (사원번호와 같이 범용적인 경우는 예외)
  • 인조 식별자는 모댈을 단순하게 만드는 것 이외에 뚜렷한 장점은 없다.


외래 식별자(Foreign Identifier) 또는 외래 키 (Foreign Key)

  • 외래 식별지는 엔터티 간의 관계에서 발생
  • 상위(부모) 엔터티의 주 식별재(Primary Identifier)가 하위(자식) 엔터티의 외래 식별자 속성
  • CASE 툴에서는 FK(Foreign Key)로 표현된다.


슈퍼 식별자(Super Identifier) 또는 슈퍼 키 (Super Key)

예) (마을 ID, 도시명, 도명)이라는 관계의 경우 마을 ID, (마을 ID, 도시명), (마을 ID, 도명), (마을 ID, 도시명, 도명) , (도시명, 도명)

  • 슈퍼 식별지는 후보 식별자에 속성을 추가해서 만든 식별자를 의미한다
  • 슈퍼 식별자를 사용하는 것은 정규형에도 위배되고 무엇보다 엔터티 성격이 불분명해진다.
  • 검색을 수월하게 하려는 의도와는 달리 주 식별지(PK)가 복잡해지고, 슈퍼식별자에 추가된 속성을 인텍스로 생성할 필요도 있어 인텍스 비효율이 발생
  • 슈퍼 식별지는 어떤상황에서도 사용하지 않는것을 원칙으로해야한다.

문서정보

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