SQLD 1과목 데이터 모델링의 이해
<목차>
|
5. 식별자
A. 식별자의 개념
- 식별자는 엔터티를 대표하는 속성 의미
- 하나의 엔터티는 반드시 하나의 유일한 식별자를 가지고 있어야 함.
> 여러 개의 칼럼이 하나의 식별자가 되기도 함 (복합식별자)
B. 식별자의 특징
- 엔터티내 각 인스턴스를 유일하게 구분할 수 있는 구분자
- 다른 엔터티와 관계를 식별하는 식별자
- 유일성, 최소성, 불변성, 존재성을 만족
C. 식별자의 종류
(1) 엔터티 내에서 대표성을 가지는 지 여부
- 주식별자 (Primary Identifier) / 보조식별자 (Alternate Identifier)
(2) 엔터티 내에서 스스로 생성되었는지 여부
- 내부식별자 / 외부식별자 (Foreign Identifier)
(3) 단일 속성으로 식별이 되는지 여부
- 단일식별자 (Single Identifier) / 복합식별자 (Composit Identifier)
(4) 원래부터 존재했는지에 따라
- 본질식별자 / 인조식별자
* 원래 업무적으로 의미가 있던 식별자 속성을 대체하여 일련번호와 같이 새롭게 만든 식별자를 구분
식별자의 분류체계
분류 | 식별자 | 설명 | 예 |
대표성 여부 |
주식별자 | 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자이며, 타 엔터티와 참조관계를 연결할 수 있는 식별자 | |
보조식별자 | 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자이나 대표성을 가지지 못해 참조관계 연결을 못함 | ||
스스로 생성여부 |
내부식별자 | 엔터티 내부에서 스스로 생성 | ex) 학번 |
외부식별자 | 다른 엔터티와의 관계로 인하여 다른 엔터티로부터 받아오는 식별자 | ex) 구매 | |
속성의 수 | 단일식별자 | 하나의 속성으로 구성 | ex) 학번, 사번 |
복합식별자 | 여러 개의 속성으로 구성 | ex) '학년&반&번호'의 조합 | |
대체 여부 |
본질식별자 | 비즈니스 프로세스에서 만들어짐 | |
인조식별자 | 업무적으로 만들어지지는 않지만 원조식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자 | ex) 코드 |
D. 주식별자의 특징
(1) 최소성: 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수
(2) 존재성: 주식별자가 지정되면 반드시 값이 존재
(3) 유일성: 주식별자에 의해 엔터티내에 모든 인스턴스들을 유일하게 구분
(4) 불변성: 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 불변
E. 주식별자 도출방법
- 해당 업무 및 데이터에서 주로 사용되는 속성을 주식별자로 지정
- 이름이나 명명된 호칭, 길이가 일정하지 않은 내용 등은 주식별자로 지정하지 않음.
- 복합키를 구성할 때 너무 많은 속성이 포함되지 않도록 주의
F. 키의 종류
기본키 (Primary Key, PK) |
후보키 중에서 엔터티를 대표할 수 있는 키 |
후보키 (Candidate Key) |
유일성과 최소성을 만족하는 키 |
슈퍼키 (Super Key) |
유일성은 만족하지만 최소성은 만족하지 못하는 키 |
대체키 (Alternate Key) |
여러 개의 후보키 중에서 기본키를 선정하고 남은 키 |
외래키 (Foreign Key, FK) |
타 테이블의 기본키 필드를 가리키는 것으로 참조무결성을 확인하기 위해 사용되는 키 (허용된 값만 저장하기 위해 사용 / 다른 테이블과 연결) |
[학생 Table]
학번 | 전화 번호 | 주소 | 이름 |
A230101 | 010-XXXX-XXXX | 서울시 강남구 XX동 XX번지 | 홍길동 |
학번: 유일성 확보(모두 다름), 길이 동일, 불변성 확보 > 기본키
전화번호: 불변성 낮음. (바꿀 확률이 위의 네 가지 속성 중 제일 높음) > 대체키, 후보키
주소: 유일성 비교적 높으나, 길이가 다름 > 대체키, 후보키
이름: 유일성 미확보 (동명이인)
G. 식별자 관계와 비식별자 관계 비교
항목 | 식별자 관계 | 비식별자 관계 |
목적 | 강한 연결관계 표현 | 약한 연결관계 표현 |
자식 주식별자 영향 | 자식 주식별자의 구성에 포함됨 | 자식 일반 속성에 포함됨 |
표기법 | 실선 표현 | 점선 표현 |
연결 고려사항 | - 반드시 부모엔터티 종속 - 자식 주식별자 구성에 부모 주식별자 포함 필요 - 상속받은 주식별자속성을 타 엔터티에 이전 필요 |
- 약한 종속관계 - 자식 주식별자구성을 독립적으로 구성 - 자식 주식별자구성에 부모 주식별자 부분 필요 - 상속받은 주식별자속성을 타 엔터티에 차단 필요 - 부모쪽의 관계참여가 선택 관계 |
* 비식별자를 선택하는 기준
- 관계의 강약을 분석하여 상호간에 연관성이 약할 경우 비식별자 관계를 고려
- 자식테이블에서 독립적인 PK의 구조를 가지기 원할 때 비식별자 관계를 고려
- 모든 관계가 식별자 관계로 연결되면 SQL Where 절에서 비교하는 항목이 증가되어 조인에 참여하는 테이블에 따라 SQL 문장이 길어져 SQL 문의 복잡성이 증가되는 것을 방지하기 위해 비식별자관계를 고려
★ 데이터 모델링 전개 시에 각 엔터티 간의 관계를 비식별자 관계로 설정하면 이전 유형의 속성의 자식엔터티로 상속되지 않아 자식 엔터티 내에서 데이터를 처리할 때 쓸데없이 부모엔터티까지 찾아야 하는 경우 발생
* 비식별자 관계로 연결하는 것을 고려해야 하는 경우
- 부모엔터티에 참조값이 없어도 자식엔터티의 인스턴스가 생성될 수 있는 경우
- 여러 개의 엔터티를 하나로 통합하면서 각각의 엔터티가 갖고 있던 여러 개의 개별 관계가 통합되는 경우
- 자식쪽 엔터티의 주식별자를 부모엔터티와는 별도로 생성하는 것이 더 유리하다고 판단되는 경우
- 엔터티별로 데이터의 생명주기를 다르게 관리할 경우 비식별자 관계 생성
ex) 부모 엔터티의 인스턴스가 자식만 남겨두고 먼저 소멸
이전글
다음글
'자격증 > SQLD' 카테고리의 다른 글
데이터 모델과 SQL - 관계와 조인의 이해 (1) | 2024.01.01 |
---|---|
데이터 모델과 SQL - 정규화 (2) | 2023.12.30 |
데이터 모델링의 이해 - 관계 (0) | 2023.12.27 |
데이터 모델링의 이해 - 속성 (0) | 2023.12.27 |
데이터 모델링의 이해 - 엔터티 (1) | 2023.12.26 |