[SQLD] 1과목 - 1장) 5절. 식별자
1과목. 데이터 모델링의 이해
1장. 데이터 모델링의 이해
5절. 식별자
# 식별자 개념
- 엔터티: 인스턴스들의 집합
- 식별자
· 하나의 엔터티에 구성되어 있는 여러 개의 속성 중 엔터티를 대표할 수 있는 속성
· 엔터티 내 유일한 인스턴스를 식별할 수 있는 속성의 집합
- 하나의 엔터티는 반드시 하나의 식별자가 존재
- 식별자와 키의 구분
· 식별자: 업무적으로 구분이 되는 정보 ➪ 논리 데이터 모델링 단계에서 사용
· 키: DB 테이블에 접근을 위한 매개체 ➪ 물리 데이터 모델링 단계에서 사용
# 식별자의 특징
- 유일성: 주식별자에 의해 엔터티 내에 신스턴스들이 유일하게 구분
- 최소성: 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수
- 불변성: 지정된 주식별자의 값은 자주 변하지 않아야 함
- 존재성: 주식별자가 지정이 되면 반드시 값이 들어와야 함
# 식별자 분류 및 표기법
- 식별자 분류
· 대표성 여부
· 자생 여부
· 단일 속성 여부
· 대체 여부
- 식별자 표기법
ㅇ
# 주식별자 도출 기준
- 해당 업무에서 자주 이용되는 속성을 주식별자로 지정
- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정 자제
- 복합으로 주식별자로 구성할 경우, 너무 많은 속성이 포함되지 않도록 함
#식별자관계와 비식별자관계에 따른 식별자
- 식별자관계와 비식별자 관계의 결정
· 외부식별자(Foreign Identifier):
➢ 다른 엔터티와의 관계를 통해 자식 족에 엔터티에 생성되는 속성
➢ 데이터베이스 생성 시에 Foreign Key 역할
- 식별자 관계
· 부모로부터 받은 식별자를 자식 엔터티의 주식별자로 이용하는 경우
➪ Null 값이 오면 안되므로 반드시 부모 엔터티가 생성되어야 자신의 엔터티가 만들어짐
➪ 1:1 or 1:M 관계
· 식별자 관계(Identifying Relationship): 자식 엔터티의 주식별자로 부모의 주식별자가 상속이 되는 경우
- 비식별자 관계
· 부모 엔터티로부터 속성을 받았으나 자식 엔터티의 주식별자로 사용하지 않고, 일반적인 속성으로만 사용하는 경우
· 비식별자 관계에 의한 외부속성을 생성하는 경우
➢ 자식 엔터티에서 받은 속성이 필수가 아니어도 되므로 부모 없는 자식이 생성될 수 있는 경우
➢ 엔터티 별로 데이터의 생명주기(Life Cycle)를 다르게 관리할 경우
➢ 여러 개의 엔터티가 하나의 엔터티로 통합되어 표현되었는데 각각의 엔터티가 별도의 관계를 가질 때
➢ 자식엔터티에 주식별자로 사용하여도 되지만 자식 엔터티에서 별도의 주식별자를 생성하는 것이 더 유리하다고 판단될 때 비식별자 관계에 의한 외부식별자로 표현
- 식별자 관계로만 설정할 경우의 문제점
· 주식별자 속성이 지속적으로 증가할 수 밖에 없는 구조로서 개발자 복잡성과 오류가능성을 유발시킬 수 있는 요인이 됨
- 비식별자 관계로만 설정할 경우의 문제점
· 불필요한 조인이 다량으로 발생하면서 SQL 구문이 길어지고 성능도 저하됨
- 식별자관계와 비식별자관계 모델링
· 비식별자관계 선택 프로세스: 독립적으로 주식별자를 구성한다는 의미임
➪ 업무적 필요성과 성능상 필요 여부를 모두 반영함
· 식별자와 비식별자관계 비교