본문 바로가기

sqld

1-5) 식별자

식별자
  • 하나의 엔티티에 구성된 여러 속성 중 엔티티를 대표할 수 있는 속성
  • 하나의 유일한 식별자가 존재해야 함
  • 식별자 ≫ 논리 모델링에서 사용 / 키(key) ≫ 물리 모델링에서 사용
  • 예) 학생 엔티티의 주식별자 : 학생번호 속성 (논리 모델링)  ≫ 학생 테이블의 기본키 : 학생번호 컬럼 (물리 모델링)

 

주식별자 특징
  1. 유일성 : 주식별자에 의해 모든 인스턴스를 유일하게 구분함
    • 예) 학생 엔티티에서 이름 속성 사용 시 동명이인으로 완벽하게 구분할 수 없음 ≫ 학생 번호 속성을 주식별자로
  2. 최소성 : 유일성을 만족하는 최소한의 속성으로 구성
    • 예) 학생 번호만으로 충분한데, 학생 번호 + 이름으로 구성할 필요 없음
  3. 불변성 : 주식별자가 한번 특정 엔티티에 지정되면 그 식별자의 값은 변하지 않아야 함
    • 예) 학생 엔티티의 주식별자 학생 번호가 때에 따라 변경되어서는 안 됨
  4. 존재성 : 주식별자는 반드시 값이 존재해야 하며 NULL은 허용되지 않음

 

식별자 분류

 

1. 대표성 여부에 따라

주식별자 보조식별자
유일성과 최소성을 만족하면서 엔티티를 대표하는 식별자
≫ 각 인스턴스를 유일하게 구분할 수 있음
≫ 타 엔티티와 참조관계를 연결할 수 있음
엔티티 내에서 각 인스턴스를 구분할 수 있는 구분자지만, 대표성을 가지지 못해 참조 관계 연결을 할 수 없는 식별자
유일성과 최소성은 만족하지만 대표성을 만족하지 못함

 

2. 생성 여부에 따라

내부식별자 외부식별자
다른 엔티티 참조 없이 엔티티 내부에서 스스로 생성되는 식별자 다른 엔티티와 관계로 인하여 만들어지는 식별자 (외래키) 

 

3. 속성 수에 따라

단일식별자 복합식별자
하나의 속성으로 구성 2개 이상의 속성으로 구성

 

4. 대체 여부에 따라

본질식별자 (원조식별자) 인조식별자
비즈니스 프로세스에서 만들어지는 식별자 인위적으로 만들어지는 식별자
필요한 속성이 아닌 식별을 위해 만들어짐
자동 증가하는 일련번호 같은 형태

 

식별자 표기법

IE 표기법 ≫ 칸으로 구별

Barker 표기법 ≫ #으로 구별

 

주식별자 도출 기준
  1. 해당 업무에서 자주 이용되는 속성으로 지정
    • 예) 학생번호와 주민번호 중에 학생번호를 주식별자로, 주민번호는 보조식별자로
  2. 명칭이나 내역 등과 같은 이름 자체를 주식별자로 사용하는 행위는 피함
    • 예) 부서명 보다는 부서 코드를 부여하여 주식별자로
  3. 속성의 수를 최대한 적게 구성
    • 너무 많은 속성으로 구성 시, 조인으로 인한 성능 저하 발생 우려
    • 일반적으로 7~8개 이상의 주식별자 구성은 새로운 인조식별자를 생성하여 단순화시키는 것이 좋음
    • 예) 주문 엔티티에서 (주문일자 + 주문상품코드 + 고객번호 + ...) 대신 주문번호 속성 추가

 

관계간 엔티티 구분
  • 강한 개체 : 독립적으로 존재할 수 있는 엔티티
    • 예) 고객과 계좌 ≫ 고객은 독립적으로 존재 가능
  • 약한 개체 : 독립적으로 존재할 수 없는 엔티티
    • 예) 고객과 계좌 ≫ 계좌는 고객이 있어야 존재, 고객으로부터 파생되는 엔티티

 

식별관계와 비식별관계
  1. 식별관계 (Identification Relationship)
    1. 하나의 엔티티의 기본키를 다른 엔티티가 기본키의 일부로 공유하는 관계
    2. 식별관계는 ERD에서 실선으로 표시
    3. 예) 사원과 교육이력 엔티티에서 양쪽 모두 기본키 중 일부가 사원번호
  2. 비식별관계 (Non-identification Relationship)
    1. 강한 개체의 기본키를 다른 엔티티가 기본키가 아닌 일반 속성으로 가지는 것
    2. 비식별관계는 ERD에서 점선으로 표시
    3. 예) 부서와 사원의 관계에서 부서의 부서번호(기본키)를 사원 엔티티에서는 일반키로 가짐
      (사원에서는 사원번호가 기본키, 기본키에 부서번호가 포함되지 않음)

 

≫ 논리 모델링에서의 식별자가 물리 모델링에서는 Key가 됨

Key의 종류
  1. 기본키 (Primary Key)
    • 엔티티를 대표할 수 있는 키
  2. 후보키 (Candidate Key)
    • 유일성과 최소성을 만족하는 키
    • 후보키들 중 하나가 기본키가 되고, 나머지는 대체키가 됨
  3. 슈퍼키 (Super Key)
    • 유일성은 만족하지만 최소성은 만족하지 않는 키
    • 예) 학생 테이블에서 학번으로만 PK를 구성할 수 있는데, (학번+이름)으로 구성한다면 이는 슈퍼키
  4. 대체키 (Alternate Key)
    • 여러 후보키 중 기본키가 아닌 키
  5. 외래키 (Foreign Key)
    • 다른 테이블의 기본키를 참조하는 키 (다른 테이블의 기본키에 존재하는 값만 입력될 수 있음)
    • 참조 테이블은 하나 또는 여러 개 가능

 

 

 

'sqld' 카테고리의 다른 글

1-7) 관계와 조인의 이해  (0) 2024.08.19
1-6) 정규화  (0) 2024.08.18
1-4) 관계(Relationship)  (0) 2024.07.29
1-3) 속성(Attribute)  (0) 2024.07.28
1-2) 엔티티(Entity)  (0) 2024.07.24