실체 엔터티의 주 식별자에는 시각(일자/일시) 속성을 포함시키지 않는다.
한 번 생성되면 지속적으로 존재하는 실체의 성격상 실체 엔터티의 주 식별자에는 일자 속성이 포함될 수 없다. 실체의 상태가 변하거나 실체의 특정 속성 값이 변하는 것은 실체가 새롭게 생기는 것이 아니다.
[그림1] 장비실체 엔터티는 생산된 장비를 관리하는 엔터티다.
[그림1]
이에 대한 릴레이션은 아래와 같다.
[장비실체]
#장비아이디 |
장비명 |
장비상태유형코드 |
생산년도 |
12345 |
A장비 |
정상 |
2045 |
45678 |
C장비 |
정상 |
2050 |
78901 |
B장비 |
정상 |
2055 |
[그림2]
장비가 생산되면 장비실체 릴레이션에 하나의 인스턴스로 관리된다. 만약 ‘A장비’를 쓸 수 없서 폐기하면 그 장비는 사라진다. 이때 해당 장비에 대한 장비상태유형코드 속성 값을 ‘폐기’로 수정하면 그만이다. 해당 인스턴스를 실제로 삭제하거나 ‘폐기’에 대한 인스턴스를 추가하지 않는다. 또한 ‘B장비’가 고장난 상태였다가 수리해서 정상이 되더라도 새로운 인스턴스가 추가되지 않는다. 위와 같은 경우를 아래와 유사한 릴레이션으로 설계했다면 잘못된 설계다.
[장비실체]
#장비아이디 |
#기준일자 |
장비명 |
장비상태유형코드 |
생산년도 |
12345 |
2045-02-05 |
A장비 |
정상 |
2045 |
45678 |
2050-12-25 |
C장비 |
정상 |
2050 |
78901 |
2055-06-06 |
B장비 |
정상 |
2055 |
78901 |
2060-03-30 |
B장비 |
정상 |
2055 |
12345 |
2055-02-05 |
A장비 |
폐기 |
2045 |
[그림3]
위 릴레이션은 기준일자 속성이 주 식별자에 추가돼서 하나의 장비가 마치 두 번 제작된 것 같이 설계된 릴레이션이다. 이는 한 번만 생성되는 실체 데이터로는 부적절하다. [그림4] 릴레이션과 같이 한 번만 생성되고(인스턴스가 하나만 존재하고) 장비상태유형코드 속성 값을 수정하도록 설계해야 한다.
[장비실체]
#장비아이디 |
장비명 |
장비상태유형코드 |
생산년도 |
12345 |
A장비 |
폐기 |
2045 |
45678 |
C장비 |
정상 |
2050 |
78901 |
B장비 |
고장 |
2055 |
[그림4]
만약 언제 고장나고 언제 폐기했는지 등과 같은 데이터를 알아야 한다면 다른 엔터티에서 관리해야 한다. 실체 엔터티에는 하나의 실체로 존재하고, 실체가 한 행위는 다른 데이터로 관리해야 실체 엔터티의 주 식별자에 일자 속성이 추가되지 않는다.
한 번 존재한 실체 데이터는 지속적으로 존재해야 하므로 실체 엔터티의 주 식별자에는 일자 속성이 존재할 수 없다. 실체 엔터티에 존재하는 인스턴스 개수는 실제 실체의 개수와 일치해야 한다.
'데이터 Story > 모델링 매뉴얼' 카테고리의 다른 글
업무가 변경될 가능성이 있을 때는 이를 감안해서 인조 식별자를 사용 (0) | 2016.07.23 |
---|---|
엔터티에 인스턴스를 생성하는 기준이 되는 속성을 주 식별자로 설계 (2) | 2016.07.16 |
업무 식별자를 도출할 때는 논리적으로 인스턴스를 구분할 수 있는지로 검토 (0) | 2016.07.13 |
모델링 매뉴얼을 쓰는 이유 (0) | 2016.07.06 |
행위 엔터티의 주 식별자 설계 (0) | 2016.07.02 |