[SQLD] 식별자(Identifiers) | PART 1

식별자는 각각의 인스턴스를 구별할 수 있게 해주는 역할이다. 학번, 군번, 사번 등이 이에 해당된다.
Hi's avatar
Sep 10, 2024
[SQLD] 식별자(Identifiers) | PART 1

💡
식별자는 각각의 인스턴스를 구별할 수 있게 해주는 역할이다. 학번, 군번, 사번 등이 이에 해당된다.
 

✅ 1. 주식별자

💡
주식별자는 기본키, PK에 해당하는 속성이다. 하나의 속성이 주식별자가 될 수도 있고 여러 개의 속성이 주식별자가 될 수도 있다.
 
유일성
각 인스턴스에 유니크함을 부여하여 식별이 가능하도록 한다.
최소성
유일성을 보장하는 최소 개수의 속성이어야 한다.
불변성
속성값이 되도록 변하지 않아야 한다.
존재성
속성값이 NULL일 수 없다.

☑️ 1) 주식별자 도출기준

  1. 해당 업무에서 자주 이용되는 속성을 주식별자로 지정한다.
      • 같은 식별자 조건을 만족하더라도 업무적으로 더 많이 사용되는 속성을 주식별자로 지정한다.
      • ex) 학생번호와 주민번호 중 학생번호가 주식별자이며, 주민번호는 보조식별자이다.
  1. 명칭이나 내역 등과 같은 이름은 피한다.
      • 이름 자체를 주식별자로 사용하지 말자.
      • ex) 부서명보다는 부서코드를 부여하여 부서코드를 주식별자로 사용한다.
  1. 속성의 수를 최대한 적게 구성한다.
      • 주식별자를 너무 많은 속성으로 구성하면 조인으로 인한 성능저하가 발생한다.
 

✅ 2. 분류

💡
식별자를 분류하는 방식은 여러 가지이다. 대표성 여부 / 스스로 생성되었는지 여부 / 단일 속성의 여부 / 대체 여부 등이 있다.
 

☑️ 1) 대표성 여부

주식별자 (Primary Identifier)
- 유일성, 최소성, 불변성, 존재성을 가진 대표 식별자 - 다른 엔터티와 참조 관계로 연결
보조식별자 (Alternate Identifier)
- 인스턴스를 식별할 수는 있지만 대표 식별자가 아님 - 다른 엔터티와 참조 관계로 연결되지 않음

☑️ 2) 스스로 생성되었는지 여부

내부식별자 (Internal Identifier)
- 엔터티 내부에서 스스로 생성된 식별자
외부식별자 (Foreign Identifier)
- 다른 엔터티에서 온 식별자 - 다른 엔터티와 연결고리 역할

☑️ 3) 단일 속성의 여부

단일식별자 (Single Identifier)
- 하나의 속성으로 구성된 식별자
복합식별자 (Composite Identifier)
- 두 개 이상의 속성으로 구성된 식별자

☑️ 4) 대체 여부

원조식별자 (Original Identifier)
- 업무 프로세스에 존재하는 식별자 - 가공되지 않은 원래의 식별자(본질식별자)
대리식별자 (Surrogate Identifier)
- 주식별자의 속성이 두 개 이상인 경우 그 속성들을 하나로 묶어서 사용하는 식별자(인조식별자)
 
 
 

✅ 3. 강한 개체 vs 약한 개체

 

☑️ 1) 강한 개체

💡
독립적으로 존재할 수 있는 엔터티
ex) 고객과 계좌 엔터티 중, 고객은 독립적으로 존재할 수 있다.
 

☑️ 2) 약한 개체

💡
독립적으로 존재할 수 없는 엔터티
ex) 고객과 계좌 엔터티 중, 계좌는 독립적으로 존재할 수 없다. (고객에 의해 파생되는 엔터티)
 
 

✅ 4. 식별자 관계 vs 비식별자 관계

 

☑️ 1) 식별자 관계(Identification Relationship)

💡
부모 엔터티의 식별자가 자식 엔터티의 주식별자가 되는 관계이다.
 
주식별자는 반드시 존재해야 하므로(존재성) 부모 엔터티가 있어야 생성이 가능하다. 따라서, 자식 엔터티는 부모 엔터티에 의존적이다.
이때, 단일식별자인지 복합식별자인지에 따라 1:1 또는 1:N 관계가 결정된다.
 
 

☑️ 2) 비식별자 관계(Non-Identification Relationship)

💡
부모 엔터티의 식별자가 자식 엔터티의 주식별자가 아닌 일반 속성이 되는 관계이다.
 
일반 속성의 값은 NULL이 될 수 있으므로 부모 엔터티가 없는 자식 엔터티의 생성이 가능하다. 따라서, 자식 엔터티가 존재하는 상태에서 부모 엔터티만 삭제할 수도 있다.
 

✅ 5. Key의 종류

💡
논리 모델링에서의 식별자가 물리 모델링에서는 Key가 되는데 이를 Key의 특징에 따라 다음과 같이 분류한다.
 

☑️ 1) 기본키 (Primary Key)

  • 엔터티를 대표할 수 있는 키
 

☑️ 2) 후보키 (Candidate Key)

  • 유일성과 최소성을 만족하는 키
  • 후보키들 중 하나가 기본키가 되고, 나머지를 대체키라고 부른다.
 

☑️ 3) 대체키 (Alternate Key)

  • 여러 후보키 중 기본키가 아닌 키
 

☑️ 4) 슈퍼키 (Super Key)

  • 유일성은 만족하지만 최소성은 만족하지 않는 키
    • ex) 학생 테이블에서 학번으로만 PK를 구성해도 되지만, (학번 + 이름)으로 구성한다면 슈퍼키이다.
 

☑️ 5) 외래키 (Foreign Key)

  • 다른 테이블의 기본키를 참조하는 키(다른 테이블의 기본키에 존재하는 값만 입력될 수 있음)
  • 참조 테이블은 하나 또는 여러 개 가능
 
 
Share article

More articles

See more posts

soultree