기획자의 데이터 공부 - 데이터 모델링의 이해
* 식별자
- 하나의 엔티티에 구성되는 여러 개의 속성 중에 엔티티를 대표하는 속성
- 하나의 유일한 식별자가 존재
- 식별자는 논리 데이터 모델링 단계에서 사용하는 키는 물리 데이터 모델링 단계에서 아용
* 식별자 특징
- 유일성 : 주식별자에 의해 엔티티내에 모든 인스턴스들을 유일하게 구분
e.g. 사원번호가 모든 직원들에 대해 개인별로 고유하게 부여
- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수
e.g. 사원번호만으로도 고유한 구조, 사원분류코드 + 사원번호로 식별자가 구분되면 부적절한 주식별자 구조
- 불변성 : 주식별자가 한 번 특정 엔티티에 지정되면 그 식별자의 값은 변하지 않아야 함
e.g. 사원번호의 값이 변한다는 의미는 이전기록이 말소되고 새로운 기록이 발생된 개념
- 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재 null 안됨
e.g. 사원번호 없는 회사 직원은 없음
- 대체식별자의 특징은 주식별자의 특징과 일치
- 외부식별자는 주식별자 특징과 일치하지 않으며 참조무결성 제약조건에 따른 특징을 가짐
* 식별자 분류
- 대표성의 여부 / 주식별자 : 엔티티 내에서 각 어커런스를 구분 가능 구분자, 타 엔티티와 참조관계를 연결함
/ 보조식별자 : 엔티티 내에서 각 어커런스 구분 가능 구분자, 대표성을 갖지 못해 참조관계 연결 불가
- 스스로 생성 여부 / 내부식별자 : 엔티티 내부에서 스스로 만들어지는 식별자
/ 외부식별자 : 타 엔티티와의 관계를 통해 타 엔티티로부터 받아오는 식별자
- 속성의 수 / 단일 식별자 : 하나의 속성으로 구성된 식별자
/ 복합 식별자 : 둘 이상의 속성으로 구성된 식별자
- 대체 여부 / 본질 식별자 : 업무에 의해 만들어지는 식별자
/ 인조 식별자 : 업무적으로 만들어지지는 않지만 원조식별자가 복잡해서 인위적으로 만든 식별자
* 식별자 표기법
* 주식별자 도출기준
- 해당 업무에서 자주 이용되는 속성을 주식별자로 지정
- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않음
- 복합으로 주식별자를 구성할 경우 너무 많은 속성이 포함되지 않도록 함
1. 해당 업무에서 자주 이용되는 속성을 주식별자로 지정
- 사원번호와 주민등록번호가 유일하게 식별가능한 속성, 대표성을 띄는 것은 사원번호
- 사원번호를 주식별자, 주민등록번호를 보조식별자로 함
2. 명칭, 내역 등과 같이 이름으로 기술되는 것은 피함
- 명칭이나 내역이 있고 인스턴스들을 식별할 수 있는 다른 구분자가 존재하지 않으면 새로운 식별자 생성
- 부서명의 경우 부서코드를 부여하여 코드 엔티티에 등록하고 부서 코드로 주식별자를 지정하는 방법
- 부서일련번호를 주식별자로 하고 부서명을 보조식별자로 활용하는 방법
3. 속성의 수가 많아지지 않도록 함
- 주식별자로 선정된 속성들이 자식, 손자 엔티티로부터 계속 상속되면 물리데이터베이스에서 조인으로 인한 성능저하
-> 속성의 반정규화 측면에서 하나의 테이블에 많은 속성이 있는 것으로 인정
- 일반적으로 7-8개 이상은 새로운 인조식별자를 생성하여 데이터 모델을 구성하는 것이 더 단순
[본 글은 SQLD 자격증 공부를 위해 아카이빙한 글입니다.