본문 바로가기
  • Be curious
일상 기록

2024 SQLD 시험 준비 - 개념 정리 3편 <식별자>

by Minbook 2024. 3. 6.

SQLD 시험준비 (벼락치기) 개념정리 3번째 글

개념정리 1, 2편은 아래 글을 참조

 

 

2024 SQLD 시험 준비 - 개념 정리 1편 <데이터 모델의 이해>

1월 말일에 SQLD 시험을 등록하고 한 달이 지났는데 아직 공부 시작을 하지 않았다. 물론 개인적으로 진짜 바쁘긴 했지만, 이렇게 코앞에 다가올 때까지 하지 않을 줄 몰랐다. 사실 사이트에 가서

minbook.tistory.com

 

2024 SQLD 시험 준비 - 개념 정리 2편 <엔터티, 속성, 관계>

SQLD 시험준비 (벼락치기) 개념정리 2번째 글 첫 번째 글인 정리는 아래를 참고. 2024.03.03 - [일상 기록] - 2024 SQLD 시험 준비 - 개념 정리 1편 엔터티 (Entity) 엔터티 (Entity) 정의 및 개념 데이터의 집합

minbook.tistory.com

식별자

식별자 정의

  • 하나의 엔터티에 구성된 여러 개의 속성 중에서 엔터티를 대표하는 속성
  • 유일성을 만족하는 속성
  • 하나의 엔터티는 반드시 하나의 유일한 식별자를 가지고 있어야 함
  • 논리 모델링 <식별자> 물리 모델링 <키/key>
    • 예) 고객 엔터티의 주식별자는 고객번호 속성 (논리 모델링) → 고객 테이블의 기본키는 고객번호 컬럼 (물리 모델링)

 

주식별자 특성

  • 엔터티 내 각 인스턴스를 유일하게 구분할 수 있는 구분자
  • 다른 엔터티와 관계를 연결하는 식별자
최소성 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수
예) 고객번호는 고유 값으로 주식별자가 되기 충분, 굳이 고객번호+이름 등 추가 구성 하지 않아도 됨
존재성 주식별자가 지정되면 반드시 값이 존재해야 함
예) NULL은 허용되지 않음
유일성 주식별자에 의해 엔터티 내 모든 인스턴스들을 유일하게 구분해야 함
예) 이름의 경우 동명이인 존재 가능, 고객번호 등 유일한 식별자를 주식별자로 사용
불변성 주식별자가 한번 특정 엔터티에 지정되면 그 식별자 값은 변하지 않아야 함
예) 고객번호가 고정적이지 않고 변동하면 안됨

 

DB 키의 종류

기본키 (Primary Key) 후보키 중 엔터티를 대표할 수 있는 키 (후보키 중 선정)
후보키 (Candidate Key) 유일성 + 최소성 만족하는 키
슈퍼키 (Super Key) 유일성 만족
대체키 (Alternate Key) 후보키 중 기본키 제외하고 남은 키
외래키 (Foreign Key) 여러 테이블의 기본 키 필드
참조 무결성(Referential Integrity)을 확인하기 위해 사용됨 (허용된 데이터 값만 저장하기 위함)

 

 

식별자 분류

대표성 여부에 따른 식별자의 종류

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

예) 주민번호 같은 경우 고유 값이지만 여러 이슈 (개인정보 등) 으로 주식별자가 될 수 없음

참고) 식별자 표기법
- IE 표기법: 주식별자는 윗칸에 기술, 보조식별자는 아랫칸에 기술
- Barker 표기법: 주식별자는 #와 함께 표기함

 

생성 여부에 따른 식별자의 종류

내부 식별자 외부 식별자 (외래키)
- 다른 엔터티 참조 없이 엔터티 내부에서 스스로 생성되는 식별자
- 자연스럽게 존재하는 식별자 (~ 본질식별자)
- 다른 엔터티와 관계를 통해 생성되는 식별자 

 

속성 수에 따른 식별자의 종류

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

 

대체 여부에 따른 식별자의 종류

본질 식별자 인조 식별자 
비즈니스 프로세스에서 만들어지는 식별자 인위적으로 만들어지는 식별자 
Ex) 자동 증가하는 일련번호 같은 형태

예)

  • 담당 부서 코드 → 부서 식별을 위해 필요한 본질식별자
  • 주문번호 → 주문일자, 시간, 상품코드 등을 대신하기 위해 만들어진 인조식별자

 

주식별자 도출기준

  • 업무에서 자주 이용되는 속성
    • 같은 식별자 조건을 만족하더라도 업무적으로 더 자주 사용되는 속성을 주식별자로 (Ex: 주민번호 대신 학생번호)
  • 이름, 명칭, 내역과 같은 이름을 피함
    • 이름 자체를 주식별자로 사용하는 것을 지양 (Ex: 부서명 대신 부서코드)
  • 속성의 수를 최대한 적게 구성 (즉, 복합 식별자 지양)
    • 일반적으로 7~8개 이상의 주식별자 구성은 새로운 인조식별자를 생성해 모델 단순화 하는 게 좋음
    • Ex: 주문 엔터티에 대해, 주문일자, 주문시간, 고객번호, 주문상품카테고리, 등으로 구성 → 주문번호 속성을 추가

 

관계 간 엔터티 구분

강한 개체 독립적으로 존재할 수 있는 엔터티
Ex) 고객 vs 계좌 엔터티 중 고객은 독립적으로 존재할 수 있음
약한 개체 독립적으로 존재할 수 없는 엔터티
Ex) 위의 예시에서 계좌는 고객에 의해 파생되는 엔터티로 독립 존재할 수 없음

 

 

식별 관계와 비식별 관계

식별 관계 (Identification Relationship) - 하나의 엔터티의 기본키를 다른 엔터티가 기본키의 하나로 공유하는 관계
- ERD 상 실선 표시
Ex) 고객번호는 고객 엔터티, 구매기록 엔터티 에서 기본키
비식별 관계 (Non-identification Relationship) - 강한 개체의 기본키를 다른 엔터티의 기본키가 아닌 일반 속성으로 관계를 가짐
- ERD 상 점선 표시
Ex) 
반응형

댓글