728x90
반응형
식별자(Identifier)의 개념
엔터티는 인스턴스들의 집합이라고 하였다.
여러 개의 집합체를 담고 있는 하나의 통에서 각각을 구분할 수 있는 논리적인 이름이 있어야 한다.
이 구분자를 식별자(Identifier)라고 한다.
식별자란 하나의 엔터티에 구성되어 있는 여러 개의 속성 중에 엔터티를 대표할 수 있는 속성을 의미하며 하나의 엔터티는 반드시 하나의 유일한 식별자가 존재해야 한다. 보통 식별자와 키(Key)를 동일하게 생각하는 경우가 있는데 식별자라는 용어는 업무적으로 구분이 되는 정보로 생각할 수 있으므로 논리 데이터 모델링 단계에서 사용하고 있는 키는 데이터베이스 테이블에 접근을 위한 매개체로서 물리 데이터 모델링 단계에서 사용한다.
주 식별자를 지정할 때 고려해야할 사항
주식별자인지 아니면 외부식별자인지 등에 따라 특성이 다소 차이가 있다.
- 주식별자에 의해 엔터티내에 모든 인스턴스들이 유일하게 구분되어야 한다.(유일성)
: 사원번호가 주식별자가 모든 직원들에 대해 개인별로 고유하게 부여됨 - 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.(최소성)
: 사원번호만으로도 고유구조인데 사원분류코드+사원번호로 식별자가 구성될 경우 부적절한 주식별자 구조임 - 지정된 주식별자의 값은 자주 변하지 않는 것이어야 한다.(불변성)
: 사원번호의 값이 변한다는 의미는 이전기록이 말소되고 새로운 기록이 발생되는 개념임 - 주식별자가 지정이 되면 반드시 값이 들어와야 한다.(존재성)
: 사원 번호 없는 회사직원은 있을 수 없음
식별자의 분류체계
주식별자 도출기준
- 해당 업무에서 자주 이용되는 속성을 주식별자로 지정한다.
- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않는다.(동명이인)
- 복합으로 주식별자로 구성할 경우 너무 많은 속성이 포함되지 않도록 한다.
식별자관계와 비식별자관계에 따른 식별자
프로젝트를 전개할 때는 식별자관계와 비식별자관계를 선택하여 연결해야 하는 높은 수준의 데이터모델링 기술이 필요
항목 | 식별자관계 | 비식별자관계 |
목적 | 강한 연결관계 표현 | 약한 연결관계 표현 |
자식 주식별자 영향 |
자식 주식별자의 구성에 포함된 | 자식 일반 속성에 포함된 |
표기법 | 실선 표현 | 점선 표현 |
연결 고려사항 |
- 반드시 부모엔터티 종속 - 자식 주식별자구성에 부모 주식별자 포함 필요 - 상속받은 주식별자속성을 타엔터티에 이전 필요 |
- 약한 종속관계 - 자식 주식별자구성을 독립적으로 구성 - 자식 주식별자구성에 부모 주식별자 부분 필요 - 상속받은 주식별자속성을 타 엔터티에 차단 필요 - 부모쪽의 관계 참여가 선택 관계 |
- 관계의 강약을 분석하여 상호간에 연관성이 약할 경우 비식별자 관계를 고려한다.
- 자식테이블에서 독립적인 Primary Key의 구조를 가지기 원할 때 비식별자관계를 고려한다.
- 모든 관계가 식별자 관계로 연결되면 SQL Where 절에서 비교하는 항목이 증가되어 조인에 참여하는 테이블에 따라 SQL 문장이 길어져 SQL 문의 복잡성이 증가되는 것을 방지하기 위해 비식별자관계를 고려한다.
비식별자 관계로 연결하는 것을 고려해야하는 경우
- 부모 엔터티에 참조값이 없어도 자식엔터티의 인스턴스가 생성될 수 있는 경우
- 여러 개의 엔터티를 하나로 통합하면서 각각의 엔터티가 갖고 있던 여러 개의 개별 관계가 통합되는 경우
- 자식쪽 엔터티의 주식별자를 부모엔터티와는 별도로 생성하는 것이 더 유리하다고 판단하는 경우
# Reference:
728x90
반응형
'Language > RDBMS' 카테고리의 다른 글
정규화와 성능 (0) | 2023.03.07 |
---|---|
성능 데이터 모델링 (0) | 2023.03.07 |
관계(Relationship) (0) | 2023.03.07 |
속성(Attribute) (0) | 2023.03.07 |
엔터티(Entity) (0) | 2023.03.07 |