brunch

You can make anything
by writing

C.S.Lewis

by imRachel Mar 01. 2023

[SQLD1] 4.1 식별자

기획자의 데이터 공부 - 데이터 모델링의 이해

* 식별자

- 하나의 엔티티에 구성되는 여러 개의 속성 중에 엔티티를 대표하는 속성

- 하나의 유일한 식별자가 존재

- 식별자는 논리 데이터 모델링 단계에서 사용하는 키는 물리 데이터 모델링 단계에서 아용


* 식별자 특징

- 유일성 : 주식별자에 의해 엔티티내에 모든 인스턴스들을 유일하게 구분

    e.g. 사원번호가 모든 직원들에 대해 개인별로 고유하게 부여

- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수

    e.g. 사원번호만으로도 고유한 구조, 사원분류코드 + 사원번호로 식별자가 구분되면 부적절한 주식별자 구조

- 불변성 : 주식별자가 한 번 특정 엔티티에 지정되면 그 식별자의 값은 변하지 않아야 함

    e.g. 사원번호의 값이 변한다는 의미는 이전기록이 말소되고 새로운 기록이 발생된 개념

- 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재 null 안됨

    e.g. 사원번호 없는 회사 직원은 없음


- 대체식별자의 특징은 주식별자의 특징과 일치

- 외부식별자는 주식별자 특징과 일치하지 않으며 참조무결성 제약조건에 따른 특징을 가짐


* 식별자 분류

- 대표성의 여부 / 주식별자 : 엔티티 내에서 각 어커런스를 구분 가능 구분자, 타 엔티티와 참조관계를 연결함

                     / 보조식별자 : 엔티티 내에서 각 어커런스 구분 가능 구분자, 대표성을 갖지 못해 참조관계 연결 불가

- 스스로 생성 여부 / 내부식별자 : 엔티티 내부에서 스스로 만들어지는 식별자

                        / 외부식별자 : 타 엔티티와의 관계를 통해 타 엔티티로부터 받아오는 식별자

- 속성의 수 / 단일 식별자 : 하나의 속성으로 구성된 식별자

                / 복합 식별자 : 둘 이상의 속성으로 구성된 식별자

- 대체 여부 / 본질 식별자 : 업무에 의해 만들어지는 식별자

                / 인조 식별자 : 업무적으로 만들어지지는 않지만 원조식별자가 복잡해서 인위적으로 만든 식별자


* 식별자 표기법


* 주식별자 도출기준

- 해당 업무에서 자주 이용되는 속성을 주식별자로 지정

- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않음

- 복합으로 주식별자를 구성할 경우 너무 많은 속성이 포함되지 않도록 함


1. 해당 업무에서 자주 이용되는 속성을 주식별자로 지정

- 사원번호와 주민등록번호가 유일하게 식별가능한 속성, 대표성을 띄는 것은 사원번호

- 사원번호를 주식별자, 주민등록번호를 보조식별자로 함


2. 명칭, 내역 등과 같이 이름으로 기술되는 것은 피함

- 명칭이나 내역이 있고 인스턴스들을 식별할 수 있는 다른 구분자가 존재하지 않으면 새로운 식별자 생성

- 부서명의 경우 부서코드를 부여하여 코드 엔티티에 등록하고 부서 코드로 주식별자를 지정하는 방법

- 부서일련번호를 주식별자로 하고 부서명을 보조식별자로 활용하는 방법


3. 속성의 수가 많아지지 않도록 함

- 주식별자로 선정된 속성들이 자식, 손자 엔티티로부터 계속 상속되면 물리데이터베이스에서 조인으로 인한 성능저하

    -> 속성의 반정규화 측면에서 하나의 테이블에 많은 속성이 있는 것으로 인정

- 일반적으로 7-8개 이상은 새로운 인조식별자를 생성하여 데이터 모델을 구성하는 것이 더 단순

[본 글은 SQLD 자격증 공부를 위해 아카이빙한 글입니다.

출처 - https://snnchallenge.tistory.com/189]

keyword
작가의 이전글 [SQLD1] 3.2 관계 표기, 정의, 읽는 방법
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari