SJ_Koding

SQLD 대비 (3) - 식별자(Identifier) 본문

SQL/SQLD

SQLD 대비 (3) - 식별자(Identifier)

성지코딩 2023. 11. 11. 23:02

2023.11.11 - [SQL/SQLD] - SQLD 대비 (2) - 엔터티(Entity)와 속성(Attribute), 관계(Relationship)

 

SQLD 대비 (2) - 엔터티(Entity)와 속성(Attribute), 관계(Relationship)

2023.11.09 - [SQL/SQLD] - SQLD 대비 (1) - 데이터 모델의 이해 SQLD 대비 (1) - 데이터 모델의 이해 시험이 2주일도 안남았다. 이론문제를 간단히 정리하고 노랭이 책을 풀고 오답노트를 이용해 시험을 대비

sjkoding.tistory.com

이전 글과 이어지는 글입니다. 해당 정리글은 아래의 유튜브 영상을 참고하여 만들었습니다. 문제 시 삭제하겠습니다.
빨간색 형광펜은 강의에서 강조한 부분, 노란색 형광펜은 추가 서치로 내용을 '직접' 보강한 부분입니다.

https://youtu.be/gmMaH5mMJ9M?t=1691

 

식별자

1. 식별자 개념

  • 식별자는 엔터티를 대표하는 속성을 의미한다.
  • 하나의 엔터티는 반드시 하나의 유일한 식별자를 가지고 있어야 한다.
  • 식별자는 유일해야하는데, 식별자는 여러 개의 컬럼이 하나의 식별자(복합 식별자)가 될 수 있음

2. 식별자 특징

  • 엔터티내 각 인스턴스를 유일하게 구분할 수 있는 구분자.
  • 다른 엔터티와 관계를 연결하는 식별자
  • 유일성, 최소성, 불변성, 존재성을 만족

3. 주식별자의 특징

  • 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함
  • 존재성 : 주식별자가 지정 되면 반드시 값이 존재 해야 함 (Not null)
  • 유일성 : 주식별자에 의해 엔터티 내에 모든 인스턴스들을 유일하게 구분 해야 함 (고유해야함)
  • 불변성 : 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함

4. 키의 종류

  • 기본키(Primary Key) : 후보키 중에서 엔터티를 대표할 수 있는 키
  • 후보키(Candidate Key) : 유일성과 최소성을 만족하는 키
  • 슈퍼키(Super Key) : 유일성은 만족하지만 최소성을 만족하지 않는 키 (따라서 과도하게 많은 정보를 포함할 수 있음)
  • 대체키(Alternate Key) : 여러 개의 후보키 중에서 기본키를 선정하고 남은 키
  • 외래키(Foreign Key) : 타 테이블의 기본키 필드를 가리키는 것으로 참조무결성을 확인하기 위해 사용되는 키 (허용된 값만 저장하기 위해서 사용)

4-1. 키의 종류 보충설명

1. 슈퍼키 (Superkey)

  • 정의: 슈퍼키는 테이블 내의 각 행(row)을 유일하게 식별할 수 있는 하나 이상의 속성(attribute)의 조합입니다.
  • 특징: 슈퍼키는 과도하게 많은 정보를 포함할 수 있으며, 최소성 원칙을 만족하지 않을 수 있습니다.

2. 후보키 (Candidate Key)

  • 정의: 후보키는 테이블 내의 각 행을 유일하게 식별할 수 있는 최소한의 속성 조합입니다.
  • 특징: 후보키는 슈퍼키 중에서 불필요한 속성을 제거하여 최소성을 만족하는 키입니다. 한 테이블에는 여러 후보키가 존재할 수 있습니다.

3. 기본키 (Primary Key)

  • 정의: 기본키는 후보키 중에서 선택된 주 키로, 테이블 내의 각 행을 유일하게 식별하는 데 사용됩니다.
  • 특징: 기본키는 고유해야 하며, NULL 값을 가질 수 없습니다. 각 테이블은 오직 하나의 기본키를 가집니다.

4. 대체키 (Alternate Key)

  • 정의: 대체키는 기본키로 선택되지 않은 후보키입니다.
  • 특징: 대체키는 기본키와 동일하게 각 행을 유일하게 식별할 수 있는 능력을 가지지만, 기본키로 선택되지 않았습니다.

5. 외래키 (Foreign Key)

  • 정의: 외래키는 다른 테이블의 기본키를 참조하는 속성이나 속성의 조합입니다.
  • 특징: 외래키는 두 테이블 간의 관계를 생성하는 데 사용됩니다. 외래키는 참조하는 테이블의 기본키와 동일한 값을 가질 수 있으며, NULL 값을 허용할 수도 있습니다.

4-2 키 예시

1. 슈퍼키 (Superkey)

  • 예시: {'학번', '이름'}, {'학번', '주소'}, {'학번', '전화번호'}, {'학번', '이메일'}
  • 설명: 이들 조합은 모두 테이블 내의 각 학생을 유일하게 식별할 수 있습니다. 하지만, '학번'만으로도 학생을 유일하게 식별할 수 있으므로, 이 외의 정보는 과도합니다.

2. 후보키 (Candidate Key)

  • 예시: '학번', '이메일'
  • 설명: '학번'과 '이메일'은 각각 독립적으로 학생을 유일하게 식별할 수 있습니다. 여기서 '학번'과 '이메일'은 최소성을 만족하는 후보키입니다.

3. 기본키 (Primary Key)

  • 예시: '학번'
  • 설명: '학번'이 기본키로 선택될 수 있습니다. 이는 각 학생을 유일하게 식별하고, NULL 값을 가질 수 없습니다.

4. 대체키 (Alternate Key)

  • 예시: '이메일'
  • 설명: '이메일'은 기본키로 선택되지 않은 후보키이므로, 대체키가 됩니다.

5. 외래키 (Foreign Key)

  • 예시: '학생' 테이블의 '주소'가 '주소' 테이블의 '주소'를 참조하는 경우
  • 설명: 여기서 '학생' 테이블의 '주소' 속성은 '주소' 테이블의 기본키인 '주소'를 참조하므로, 외래키가 됩니다. 이를 통해 두 테이블 간의 관계가 형성됩니다.

5. 식별자 분류

  • 내부식별자: 엔터티 내부에서 스스로 생성되는 식별자
  • 외부식별자: 다른 엔터티와 관계로 인하여 만들어지는 식별자
    ex) 회원키: A01, 상품키: KKK, 구매키: A01+KKK
  • 단일식별자: 하나의 속성으로 구성
  • 복합식별자: 다수의 속성으로 구성
    ex) 학년, 반은 중복될 수 있으나 학년, 반, 번호는 고유함. 이렇게 3개의 속성을 하나의 키로 잡는 것 == 복합식별자
  • 본질식별자: 비즈니스 프로세스에서 만들어지는 식별자
  • 인조식별자: 인위적으로 만들어지는 식별자

6. 주 식별자 도출방법

  • 해당 업무 및 데이터에서 주로 사용되는 속성을 주 식별자로 지정한다.
  • 이름이나 명명된 호칭, 길이가 일정하지 않은 내용 등은 주식별자로 지정하지 않는다.
  • 복합키를 구성할 때 너무 많은 속성이 포함되지 않도록 주의한다.

7. 식별자 관계와 비식별자 관계

  • 부모 엔터티의 주식별자가 자식 엔터티의 주식별자로 상속되는 경우 (강한 관계)
  • 부모 엔터티의 주식별자가 지식 엔터티의 일반 속성으로 상속되는 경우 (약한 관계)

 

다음글

2023.11.12 - [SQL/SQLD] - SQLD 대비 (4) - 성능 데이터 모델링 및 정규화/반정규화

 

SQLD 대비 (4) - 성능 데이터 모델링 및 정규화/반정규화

2023.11.11 - [SQL/SQLD] - SQLD 대비 (3) - 식별자(Identifier) SQLD 대비 (3) - 식별자(Identifier) 2023.11.11 - [SQL/SQLD] - SQLD 대비 (2) - 엔터티(Entity)와 속성(Attribute), 관계(Relationship) SQLD 대비 (2) - 엔터티(Entity)와 속성

sjkoding.tistory.com