728x90
320x100
식별자의 개념
- 식별자(Identifier) : 엔터티(Entity)의 각 인스턴스(Instance)를 개별적으로 식별하기 위해 사용
- 엔터티는 일종의 개념이며, 실제로 존재하는 것이 아니라 비슷한 특성을 가진 객체들의 집합이기 때문에 이런 객체들을 구별하기 위해서는 각 객체에 고유한 식별자가 필요하다.
- 식별자는 단순히 하나의 속성(Attribute)이 될 수도 있고, 여러 속성의 조합이 될 수도 있다.
식별자의 특징
유일성 | 주식별자에 의해 엔터티 내에 모든 인스턴스들이 유일하게 구분 |
최소성 | 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수 |
불변성 | 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함 |
존재성 | 주식별자가 지정되면 반드시 데이터 값이 존재 (Null X) |
식별자 분류
분류 | 식별자 | 설명 |
대표성 여부에 따른 분류 | 주식별자 | - 대표성을 만족하는 식별자 - 엔터티 내에서 각 행을 구분할 수 있는 구분자이며, 타 엔터티와 참조관계를 연결할 수 있는 식별자 (ex. 사원번호, 고객번호) |
보조 식별자 | - 유일성과 최소성만 만족하는 식별자 - 엔터티 내에서 각 행을 구분할 수 있는 구분자이나 대표성을 가지지 못해 참조 관계 연결에 사용할 수 없음(ex. 주민등록번호) |
|
생성 여부에 따른 분류 | 내부 식별자 | - 엔터티 내부에서 스스로 만들어지는 식별자(ex. 고객번호) |
외부 식별자 | - 타 엔터티와의 관계를 통해 생성 (타 엔터티로부터 받아오는 식별자) (ex. 주문엔터티의 고객번호) |
|
속성 수에 따른 분류 | 단일 식별자 | - 하나의 속성으로 구성된 식별자(ex. 고객엔터티의 고객번호) |
복합 식별자 | - 둘 이상의 속성으로 구성된 식별자(ex. 주문상세엔터티의 주문번호+상세순번) | |
대체 여부에 따른 분류 | 본질 식별자 | - 업무에 의해 만들어지는 식별자, 대체될 수 없음 (ex. 고객번호) |
인조 식별자 | - 업무적으로 만들어지지는 않지만 인위적으로 만든 대체 가능한 식별자 (ex. 주문엔터티의 주문번호(고객번호+주문번호+순번)) - 후보 식별자 중 주식별자로 선정할 것이 없거나 주식별자가 너무 많은 칼럼으로 구성되어 있을 때 사용 |
식별자 도출 기준
- 해당 업무에서 자주 이용되는 속성을 주식별자로 지정한다.
- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않는다.
- 복합으로 주식별자로 구성할 경우 너무 많은 속성이 포함되지 않도록 한다.
기본키(PK, Primary Key) | 엔터티를 대표하는 키, 후보키 중에서 선정 |
후보키 | 유일성과 최소성을 만족하는 키 |
슈퍼키 | 유일성만 만족하는 키 |
대체키 | 기본키를 제외한 나머지 후보키 |
외래키(FK, Foreign Key) | 여러 테이블의 기본 키 필드, 참조 무결성(Referential Integrity)을 확인하기 위해 사용됨 (허용된 데이터 값만 저장하기 위함) |
식별자 관계(Identifying Relationship)
- 자식엔터티의 주식별자로 부모의 주식별자가 상속
- 반드시 부모엔터티가 생성되어야 자기 자신의 엔터티가 생성되는 경우
- 부모로부터 받은 식별자를 자식엔터티의 주식별자로 이용하는 경우는 Null 값X
비식별자 관계(Non-Identifying Relationship)
- 부모엔터티로부터 속성을 받았지만 자식엔터티의 주식별자로 사용하지 않고 일반적인 속성으로만 사용
- 자식엔터티에서 받은 속성이 반드시 필수가 아니어도 무방하기 때문에 부모 없는 자식이 생성될 수 있는 경우
- 자식엔터티에 주식별자로 사용해도 되지만 자식엔터티에서 별도의 주식별자를 생성하는 것이 더 유리하다고 판단될 때 비식별자 관계에 의한 외부식별자로 표현
식별자 관계로만 설정할 경우의 문제점
- 지속적으로 식별자 관계를 연결한 데이터 모델의 PK 속성의 수는 데이터 모델의 흐름이 길어질수록 증가할 수 밖에 없는 구조를 가지게 된다.
- 개발자가 개발할 때 당연히 데이터 모델을 참조하면서 엔터티와 관계를 이용하여 개발해야 하는데 생성된 엔터티 스키마 정보만을 보고 개발하는 경우가 많다.
- 조인에 참여하는 주식별자속성의 수가 많을 경우 정확하게 조인관계를 설정하지 않고 즉, 누락하여 개발하는 경우가 간혹 발견되기도 한다.
- 식별자 관계만으로 연결된 데이터 모델의 특징은 주식별자 속성이 지속적으로 증가할 수 밖에 없는 구조로서 개발의 복잡성과 오류가능성을 유발시킬 수 있는 요인이 될 수 있다는 사실을 기억해야 한다.
300x250
반응형
GitHub 댓글