Database/SQLD 시험 준비
챕터01. 데이터 모델링의 이해 - 1.5 식별자
parkes811
2022. 11. 28. 19:58
- 식별자 (Identifiers) 개념
- 엔터티는 인스턴스들의 집합이다. 여러 개의 집합체를 담고 있는 하나의 배열에서 각각을 구분할 수 있는 논리적인 이름이 필요한데 이 구분자를 식별자 (Identifier)라고 한다.
- 엔터티내의 각 인스턴스를 개별적으로 식별하기 위해 사용된다.
고객 (고객번호) 사원 (사원번호) 주문(주문번호) 상품 (상품번호)
※ 식별자는 엔터티내에서 인스턴스들을 구분할 수 있는 구분자이다.
- 식별의 특징 - 유, 최, 불, 존
- 주식별자에 의해 엔터티내에 모든 인스턴스들이 유일하게 구분되어야 한다.
- 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
- 지정된 주식별자의 값은 자주 변하지 않는 것이어야 한다.
- 주식별자가 지정이 되면 반드시 값이 들어와야 한다.
특징 | 내용 | 비고 |
유일성 | - 주식별자에 의해 엔터티내에 모든 인스턴스들을 유일하게 구분함 | ex) 학번이 주식별자가 모든 학생에게 대해 개인별로 고유하게 부여됨 |
최소성 | - 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함 | ex) 학번만으로도 고유한 구조인데 학번 + 반 번호로 식별자가 구성될 경우 부적절한 주식별자 구조임 |
불변성 | - 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함 | ex) 학번의 값이 변한다는 의미는 이전기록이 말소되고 새로운 기록이 발생되는 개념임 |
존재성 | - 주식별자가 지정되면 반드시 데이터 값이 존재 (NULL 안됨) 해야함 | ex) 학번이 없는 학생은 있을 수 없음 |
- 식별자 분류
분류 | 식별자 | 설명 |
대표성 여부 |
주식별자 | - 엔터티 내에서 각 행을 구분할 수 있는 구분자이며, 타 엔터티와 참조관계를 연결할 수 있는 식별자 ex) 사원번호, 고객번호, 학번 등 |
보조식별자 | - 엔터티 내에서 각 행을 구분할 수 있는 구분자이나 대표성을 가지지 못해 참조관계 연결을 못함 ex) 주민등록번호 |
|
스스로 생성여부 |
내부식별자 | - 엔터티 내부에서 스스로 만들어지는 식별자 ex) 고객번호 |
외부식별자 | - 타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자 ex) 주문엔터티의 고객번호 | |
속성의 수 | 단일식별자 | - 하나의 속성으로 구성된 식별자 ex) 고객 엔터티의 고객번호 |
복합식별자 | - 둘 이상의 속성으로 구성된 식별자 ex) 주문상세엔터티의 주문번호 + 상세순번 | |
대체여부 | 본질식별자 | - 업무에 의해 만들어지는 식별자 ex) 고객번호 |
인조식별자 | - 업무적으로 만들어지지 않지만 원조식별자가 복잡한 구성을 가지고 있어 인위적으로 만든 식별자 ex) 주문엔터티의 주문번호 ( 고객번호 + 주문번호 + 순번) |
- 식별자 도출 기준
- 해당 업무에서 자주 이용되는 속성을 주식별자로 지정한다.
- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않는다.
- 복합으로 주식별자로 구성할 경우 너무 많은 속성이 포함되지 않도록 한다.
- 식별자관계와 비식별자 관계의 결정
- 외부 식별자 (Foreign Idntifier)는 자기 자신의 엔터티에서 필요한 속성이 아니라 다른 엔터티와 관계를 통해 자식 쪽 엔터티에서 생성되는 속성을 외부식별자라 하고, 데이터베이스 생성 시에 Foreign Key 역할을 한다.
- 자식엔터티에서 부모엔터티로부터 받은 외부식별자를 자신의 주식별자로 이용할 것인지 (식별자 관계) 또는 부모와 연결이 되는 속성으로서만 이용할 것인지를 결정(비식별자 관계)해야한다.
- 엔터티 사이 관계 유형은 업무 특징, 자식엔터티의 주 식별자 구성, SQL 전략에 의해 결정된다.
- 식별자관계
- 자식엔터티의 주식별자로 부모의 주식별자가 상속이 되는 경우를 식별자 관계 (Identifying Relationship) 라고 한다.
- 부모로부터 받은 식별자를 자식엔터티의 주식별자로 이용하는 경우는 NULL 값이 오면 안되므로 반드시 부모 엔터티가 생성되어야 자신의 엔터티가 생성되는 경우이다.
- 비식별자관계
- 부모엔터티로부터 속성을 받았지만 자식엔터티의 주식별자로 사용하지 않고 일반적인 속성으로만 사용하는 경우가 있다. 이와 같은 경우를 비식별자 관계 (Non-Identifying Relationship) 라고 하며 다음의 네 가지 경우에 비식별자 관계에 의한 외부 속성을 생성한다.
- 자식엔터티에서 받은 속성이 반드시 필수가 아니어도 무방하기 때문에 부모 없는 자식이 생성될 수 있는 경우이다.
- 자식엔터티에서 주식별자로 사용하여도 되지만 자식엔터티에서 별도의 주식별자를 생성하는 것이 더 유리하다고 판단될 때 비식별자 관계에 의한 외부식별자로 표현한다.
- 식별자 관계로만 설정할 경우의 문제점
- 식별자관계와 비식별자관계
항목 | 식별자 관계 | 비 식별자 관계 |
목적 | 강한 연결 관계 표현 | 약한 연결 관계 표현 |
자식 주 식별자 영향 | 자식 주 식별자의 구성에 포함됨 | 자식 일반 속성에 포함됨 |
연결 고려사항 | - 반드시 부모 엔터티 종속 - 자식 주 식별자 구성에 부모 주 식별자 포함 필요 - 상속받은 주 식별자 속성을 타 엔터티에 이전 필요 |
- 약한 종속관계 - 자식 주 식별자 구성을 독립적으로 구성 - 상속받은 주 식별자 속성을 타 엔터티에 차단 필요 - 부모 쪽의 관계 참여가 선택관계일 수 있음 |