1. 식별자(Identifiers)
엔터티는 인스턴스의 집합이고, 각각의 인스턴스들은 구별이 되어야 한다. 구별이 되는 요소를 식별자라고 하고, 하나의 엔터티가 가지고 있는 속성 중 대표성을 나타내는 속성이 식별자가 되어야 한다. 식별자와 키(key)가 동일하다고 생각할 수 있는데 "식별자"는 업무적으로 사용하는 정보로 논리데이터 모델링 단계에서 사용하고, "키"는 데이터베이스 상의 테이블에 접근하기 위한 매개체로 물리데이터 모델링 단계에서 사용한다.
2. 주식별자의 특징
주식별자의 경우, 다음과 같은 특징을 가진다.
- 유일성 : 주식별자에 의해 엔터티 내에 모든 인스턴스들이 유일하게 구분되어야 한다. (예 - 사번은 사원테이블의 사원을 고유하게 구분)
- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수여야 한다. (예 - 사번처럼 하나로 족하면 하나로 끝. 추가 속성을 주식별자로 함께 구성할 필요가 없음)
- 불변성 : 지정된 주식별자의 값은 자주 변하지 않는 것이어야 한다. (예 - 사번 값이 자주 변경되면 사번을 참조하는 다른 데이터들이 불안해질 수 있음)
- 존재성 : 주식별자가 지정이 되면 반드시 값이 들어가야 한다. (예 - 사번 값은 반드시 존재해야함)
3. 식별자 분류
식별자의 종류는 구별 분류에 따라 나뉜다.
첫째, 자신의 엔터티 내에서 대표성을 가지는 가에 따라 주식별자와 보조식별자로 구분할 수 있다.
둘째, 엔터티 내에서 스스로 생성되었는지 여부에 따라 내부식별자와 외부식별자로 구분할 수 있다.
셋째, 또한 단일 속성으로 식별이 되는지에 따라 단일식별자와 복합식별자로 구분할 수 있다.
마지막으로 원래 상품번호처럼 업무적으로 의미가 있던 식별자 속성을 본질식별자라고 하는데, 필요에 따라 채번코드나 데이터의 조합으로 새롭게 일련번호를 만들어 대체하는 경우를 인조식별자라고 한다.
** 위의 글씨 강조 색상은 좀더 가시적으로 구분하기 위한 용도이지 같은 색상의 단어끼리 같은 뜻/같은 집합이라는 것은 아니다.
4. 식별자 관계와 비식별자 관계(중요)
자기 자신의 엔터티에서 필요한 속성이라기보다는, 다른 엔터티와의 관계를 통해 자식쪽 엔터티에 생성되는 속성을 외부 식별자라고 한다. 이 때, 부모엔터티에게서 받은 외부 식별자를 자식엔터티의 주식별자로 이용할 것인지, 또는 부모와 연결되는 속성으로만 이용할 것인지를 결정해야 한다. 이에 따라 식별관계와 비식별관계가 결정된다.
식별자 관계 - 부모로부터 받은 식별자를 자식 엔터티의 주식별자로 이용하는 경우로, null값이 오면 안되기 때문에 반드시 부모엔터티가 생성되어야 자식 엔터티가 생성된다. (예 - 회사 & 사원, 학교 & 학생)
비식별자 관계 - 부모로부터 식별자를 받았지만 자식엔터티의 주식별자로 사용되지 않는 경우이다. 아래의 경우에 비식별자 관계를 설정한다.
- 부모엔터티로부터 받은 식별자가 반드시 필수가 아니어도 무방하여 부모 엔터티가 없어도 자식 엔터티가 생성될 수 있는 경우. (예 - 회사를 다니지 않는 프리랜서도 직장인으로 등록될 수 있음.)
- 부모-자식 엔터티의 생명주기를 다르게 관리하는 경우. 부모엔터티의 인스턴스가 자식의 엔터티와 관계를 가지고 있지만 자식만 남겨두고 먼저 소멸될 수 있는 경우이다.
- 여러 엔터티가 하나의 엔터티로 통합되어 표현되면서 각각의 다른 엔터티와 별도의 관계를 가지는 경우. (예 - 기존의 인터넷접수/전화접수 & 인터넷회원/전화회원 DB 구조 --> 접수 & 인터넷회원/전화회원 )
- 자식엔터티에서 주식별자로 써도 되지만, 자식엔터티에서 별도의 주식별자를 생성하는 것이 더 유리한 경우.
'study_db' 카테고리의 다른 글
ROWNUM 이해하기 (0) | 2021.04.17 |
---|---|
집합 연산자 (0) | 2021.04.17 |
데이터모델링의 3가지 요소 : 관계(Relationship)에 대한 이해 (0) | 2021.02.10 |
데이터모델링의 3가지 요소 : 속성(Attribute)에 대한 이해 (0) | 2021.02.07 |
데이터모델링의 3가지 요소 : 엔터티(Entity)에 대한 이해 (0) | 2021.02.07 |