본문 바로가기

데이터 Story/모델링 매뉴얼

실체 엔터티의 주 식별자와 시각(일자/일시) 속성

실체 엔터티의 주 식별자에는 시각(일자/일시) 속성을 포함시키지 않는다.

 

한 번 생성되면 지속적으로 존재하는 실체의 성격상 실체 엔터티의 주 식별자에는 일자 속성이 포함될 수 없다. 실체의 상태가 변하거나 실체의 특정 속성 값이 변하는 것은 실체가 새롭게 생기는 것이 아니다.

 

[그림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]

 

만약 언제 고장나고 언제 폐기했는지 등과 같은 데이터를 알아야 한다면 다른 엔터티에서 관리해야 한다. 실체 엔터티에는 하나의 실체로 존재하고, 실체가 한 행위는 다른 데이터로 관리해야 실체 엔터티의 주 식별자에 일자 속성이 추가되지 않는다.

 

한 번 존재한 실체 데이터는 지속적으로 존재해야 하므로 실체 엔터티의 주 식별자에는 일자 속성이 존재할 수 없다. 실체 엔터티에 존재하는 인스턴스 개수는 실제 실체의 개수와 일치해야 한다.