본문 바로가기

IT/SQLD

SQLD 노랭이 [식별자의 종류/특징/분류]

728x90
반응형

식별자는 데이터베이스에서 엔터티(객체)를 고유하게 식별하기 위해 사용되는 속성 또는 속성들의 집합입니다. 식별자는 엔터티 간의 관계 설정, 데이터 무결성 유지, 중복 방지 등 중요한 역할을 합니다. 식별자는 여러 종류로 나뉘며, 각 식별자 유형은 특정한 상황과 요구에 맞게 사용됩니다. 
식별자는 데이터베이스에서 각각의 데이터를 구분하는 특별한 번호나 값이다. 예를 들면, 학생들 중에서 한 명을 찾으려면 그 학생의 특별한 번호(학번)이 필요한 것처럼, 데이터들 중에서 식별할 수 있는 수단을 말한다.

1. 주식별자 (Primary Key)
   - 주식별자는 엔터티 내에서 각각의 인스턴스를 고유하게 식별할 수 있는 속성 또는 속성들의 집합입니다. 주식별자는 테이블 내에서 중복된 값을 가질 수 없으며, 반드시 하나의 값이 존재해야 합니다(Null 값을 허용하지 않음).
   - 예시: 학생 테이블에서 "학번"이 주식별자가 될 수 있습니다. 학번은 각 학생을 고유하게 식별할 수 있는 값입니다.
주식별자는 가장 중요한 식별자이다. 이걸로 데이터를 고유하게 구분할 수 있다. "학생"의 "학번"과 같은 존재, 유일무이하며 없으면(NOT NULL)안되는 식별자
특징: [유일성]유일하면서 [최소성] 무조건 있어야되고 [불변성] 한번 지정되면 수정 안되고 [존재성] 데이터가 무조건 있어야됨
1. 유일성: 주식별자에 의해 엔티티 내에 모든 인스턴스들을 유일하게 구분함
2. 최소성: 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함
3. 불변성: 주식별자가 한번 특정 엔티티에 지정되면 그 식별자의 값은 변하지 않아야 함
4. 존재성: 주식별자가 지정되면 반드시 데이터 값이 존재해야함(NULL 안됨)


2. 보조식별자 (Alternate Key)
   - 보조식별자는 주식별자로 선택되지 않은 다른 후보키(Candidate Key)를 의미합니다. 보조식별자는 여전히 유일성을 보장하지만, 주식별자로 선택되지 않은 키입니다.
   - 예시: 학생 테이블에서 "주민등록번호"가 보조식별자가 될 수 있습니다. 주민등록번호도 학생을 고유하게 식별할 수 있지만, 학번이 주식별자로 선택되었기 때문에 보조식별자로 남습니다.
보조식별자는 주식별자가 아닌 다른 식별자이다. 데이터를 구분할 수는 있지만, 주식별자로는 선태고디지 않는다. 왜냐하면 "학생"엔티티(객체)에게 "학번"(속성)은 무조건 필요하지만 "주민등록번호"(속성)은 무조건 필요하지는 않다. 그러나 "주민등록번호"(속성)을 활용하여 "학생"을 구분할 수 있다.

3. 내부식별자 (Internal Identifier)
   - 내부식별자는 데이터베이스 시스템 내부적으로 생성된 식별자로, 외부 세계와는 관련이 없는 값입니다. 이는 시스템 내에서만 사용되며, 외부적으로는 의미가 없습니다.
   - 예시: 데이터베이스가 자동으로 생성하는 "ID" 필드가 내부식별자의 예입니다. 이 값은 시스템 내부에서만 사용되며, 외부 사용자에게는 노출되지 않습니다.
데이터베이스 안에서만 사용하는 식별자, 컴퓨터만 보는 식별자로 사용자는 몰라도 됨

4. 외부식별자 (External Identifier)
   - 외부식별자는 외부 시스템이나 실제 세계에서 사용되는 값으로, 엔터티를 고유하게 식별하는 데 사용됩니다. 이는 외부 시스템과 상호작용하거나 데이터를 교환할 때 주로 사용됩니다.
   - 예시: "ISBN 번호"는 책을 고유하게 식별하는 외부식별자입니다. ISBN 번호는 출판업계나 도서관 등 다양한 외부 시스템에서도 사용됩니다.

실제 세상에서도 사용하는 식별자, 예를 들면, 도서관에서 책을 찾을때 [가.9412]과 같이 책 이름 외에 우리가 식별할 수 있도록 만든 코드 같은 것

5. 단일식별자 (Simple Key)
   - 단일식별자는 하나의 속성으로만 구성된 식별자를 의미합니다. 단일 속성만으로도 엔터티를 고유하게 식별할 수 있을 때 사용됩니다.
   - 예시: "학번"과 같이 하나의 속성만으로 학생을 구분할 수 있다면, 이는 단일식별자가 됩니다.

하나의 정보로만 데이터를 구분할 수 있는 식별자, 유일무이한 고유 식별자같은 것

6. 복합식별자 (Composite Key)
   - 복합식별자는 두 개 이상의 속성이 결합되어 하나의 고유한 식별자를 구성하는 경우를 말합니다. 각각의 속성만으로는 고유성을 보장할 수 없지만, 결합하여 고유성을 확보할 수 있습니다.
   - 예시: "주문번호"와 "상품코드"가 결합되어 하나의 주문 항목을 구분하는 경우, 이 두 속성이 복합식별자가 됩니다.

두 개 이상의 정보를 합쳐서 데이터를 구분하는 식별자, 

7. 본실식별자 (Natural Key)
   - 본실식별자(또는 자연키)는 실제 업무나 현실 세계에서 이미 존재하는 속성을 기반으로 한 식별자를 의미합니다. 즉, 별도로 생성하지 않고도 현실 세계에서 고유성을 가지는 값입니다.
   - 예시: "주민등록번호"나 "사회보장번호(SSN)"는 본실식별자의 예입니다. 이들은 이미 현실 세계에서 개인을 고유하게 구분하는 값입니다.

이미 실제 세상에 존재하는 정보로 만든 식별자

8. 인조식별자 (Surrogate Key)
   - 인조식별자(또는 대리키)는 데이터베이스 설계 시 인위적으로 생성된 식별자로, 실제 업무나 현실 세계에서는 의미가 없는 값입니다. 주로 자동 증가 숫자나 GUID 등이 인조식별자로 사용됩니다.
   - 예시: "사용자 ID"처럼 데이터베이스가 자동으로 생성하는 숫자가 인조식별자의 예입니다.

현실 세계에서는 의미가 없으나 데이터 베이스에서는 의미를 갖는 식별자로 컴퓨터가 알아서 만들어서 식별하는데 사용하는 식별자

---

 요약


| 주식별자          | 엔터티를 고유하게 식별하는 기본 키                         
| 보조식별자        | 주식별자로 선택되지 않은 다른 후보키                   
| 내부식별자        | 시스템 내부적으로 생성된 식별자                                       
| 외부식별자        | 외부 시스템이나 현실 세계에서 사용되는 식별자         
| 단일식별자        | 하나의 속성으로 구성된 식별자                                
| 복합식별자        | 두 개 이상의 속성으로 구성된 식별자                             
| 본실식별자        | 현실 세계에서 이미 존재하는 속성을 기반으로 한 식별자        
| 인조식별자        | 데이터베이스 설계 시 인위적으로 생성된 키                      

 

 

식별자 관계 vs 비식별자 관계

식별자와 비식별자 관계는 데이터베이스에서 두 가지 엔티티가 어떻게 서로 연결되어 있는지를 설명하는 방법이다. 두 엔티티가 얼마나 서로 의존하는지에 따라 다르게 나눌 수 있다.

1. 식별자 관계(Identifying Relationship)

  • 정의: 식별자 관계는 자식 엔터티의 존재가 부모 엔터티에 완전히 의존할 때 사용됩니다. 즉, 자식 엔터티는 부모 엔터티 없이는 존재할 수 없으며, 자식 엔터티의 **기본 키(Primary Key)**에 부모 엔터티의 기본 키가 포함됩니다.
  • 특징:
    • 자식 엔터티의 기본 키는 부모 엔터티의 기본 키를 포함하여 구성됩니다.
    • 자식 엔터티는 부모 엔터티 없이는 존재할 수 없습니다.
    • ER 다이어그램에서 실선으로 표시됩니다.
    • 예시: "책"과 "챕터" 간의 관계를 생각해보면, 챕터는 책이 있어야만 존재할 수 있습니다. 즉, 챕터는 책에 종속적이며, 책의 기본 키가 챕터 테이블의 기본 키에 포함됩니다.

식별자 관계: 자식 엔티티가 부모 엔티티없이는 존재할 수 없는 경우,  실선(강한 관계)

2. 비식별자 관계(Non-Identifying Relationship)

  • 정의: 비식별자 관계는 자식 엔터티가 부모 엔터티와 연결되어 있지만, 자식 엔터티가 부모 엔터티에 완전히 의존하지 않는 경우입니다. 즉, 자식 엔터티는 독립적으로 존재할 수 있으며, 부모 엔터티의 기본 키는 자식 엔터티의 기본 키에 포함되지 않습니다.
  • 특징:
    • 자식 엔터티의 기본 키는 부모 엔터티의 기본 키를 포함하지 않습니다.
    • 자식 엔터티는 부모 없이도 독립적으로 존재할 수 있습니다.
    • ER 다이어그램에서 점선으로 표시됩니다.
  • 예시: "학생"과 "수업" 간의 관계를 생각해보면, 학생은 수업에 등록하지 않아도 존재할 수 있습니다. 이때 학생과 수업은 비식별자 관계로 연결되며, 학생 테이블의 기본 키가 수업 테이블에 포함되지 않습니다

비식별자 관계: 자식 엔티티가 부모 엔티티와 연결되어 있지만, 부모가 없어도 자식이 혼자 존재할 수 있는 경우, 점선(약한 관계)

Citations:
[1] https://agiledata.org/essays/keys.html
[2] https://stackoverflow.com/questions/1948644/database-key-id-design-ideas-surrogate-key-primary-key-etc
[3] https://www.geeksforgeeks.org/partial-unique-secondary-composite-and-surrogate-keys-in-dbms/

반응형