1 데이터 모델링의 이해-  3 속성


1. 속성의 개념 

- 업무에서 필요로 하는 인스턴스로 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위.

- 엔터티는 속성들에 의해 설명된다.


정리

* 업무에서 필요로한다.

* 의미상 더 이상 분리되지 않는다.

* 엔터티를 설명하고 인스턴스의 구성요소가 된다.


2. 엔터티, 인스턴스와 속성, 속성값에 대한 내용과 표기법

- 엔터티에는 두 개 이상의 인스턴스가 존재하고, 각각의 엔터티에는 고유의 성격을 표현하는 속성정보를 두 개 이상 갖는다.

- 엔터티에 속한 인스턴스들의 성격을 구체적으로 나타내는 항목이 속성이다.

- 속성값은 각각의 엔터티가 가지는 속성들의 구체적인 내용이다


정리

* 한 개의 엔터티는 두 개  이상의 인스턴스의 집합이여야 한다.

* 한 개의 엔터티는 두 개 이상의 속성을 갖는다.

* 한 개의 속성은 한 개의 속성을 갖는다.


[IE 표기법]


 

[Barker 표기법]


 


나. 속성의 표기법

- 속성의 표기법은 엔터티 내에 이름을 포함하여 표현하면 된다.



3. 속성의 특징

- 엔터티와 마찬가지로 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이어야 한다.

- 정규화 이론에 근간하여 정해진 주식별자에 의해 함수적 종속성을 가져야 한다.

- 하나의 속성에는 한 개의 값만을 가진다. 하나의 속성에 여러 개의 값이 있는 다중값일 경우 별도의 엔터티를 이용하여 분리한다.


4. 속성의 분류

가. 속성의 특성에 따른 분류

- 기본속성: 업무로부터 추출한 모든 속성이 여기 해당하며, 엔터티에 가장 일반적이고 많은 속성을 차지한다.

업무로부터 분석한 속성이라도 이미 업무상 코드로 정의한 속성이 많다. 

- 설계속성: 업무상 필요한 데이터 이외에 데이터 모델링을 위해, 업무를 규칙화하기 위해 속성을 새로 만들거나 변형하여 정의하는 속성이다.  대개 코드성 속성은 원래 속성을 업무상 필요에 의해 변형하여 만든 설계속성이고 일련번호와 같은 속성은 단일한 식별자를 부여하기 위해 모델 상에서 새로 정의하는 설계속성이다.

- 파생속성: 다른 속성에 영향을 받아 발생하는 속성으로서 보통 계산된 값들이 이에 해당된다. 다른 속성에 영향을 받기 때문에 프로세스 설계 시 데이터 정합성을 유지하기 위해 유의할 점이 많다.


ex) 기본속성  : 제품이름, 제조년월, 제조원가

      설계속성 :  약품용기 코드

      파생속성 :  계산값 (전체용기 수, 용기의 총금액)


나. 엔터티 구성에 따른 분류

PK   속성 : 엔터티를 식별할 수 있는 속성

FK  속성 : 다른 엔터티와의 관계에서 포함된 속성

일반 속성: PK, FK에 포함되지 않은 속성을 일반속성이라 한다.


* 세부 의미를 쪼갤 수 있는지에 따라 분류가능

복합속성: 예를들어 주소 속성은 시, 구, 동, 번지 등 세부속성들로 구성될 수 있는데, 이를 복합속성이라한다.

단순속성: 나이, 성별 등의 속성은 더 이상 다른 속성들로 구성될 수 없는 단순한 속성이므로 단순 속성이라 한다.


단일값 속성: 속성 하나에 한 개의 값을 가지는 경우 (ex 주민번호)

다중값 속성: 속성 하나에 여러 개의 값을 가지는 경우.

(ex 어떤 사람의 전화번호와 같은 속성은 집, 휴대전화 회사전화 등 여러가지를 가질 수 있다.)

* 다중값 속성의 경우 하나의 엔터티에 포함될 수 없으므로 1차 정규화를 하거나 별도의 엔터티를 생성하여 관계로 연결해야 한다.


5. 도메인 

- 각 속성은 가질 수 있는 값으 범위가 있는데, 이를 도메인 이라고 한다.

- 속성은 도메인 이외의 값을 가지지 못한다.

=> 도메인이란 엔터티 내에서 속성에 대한 데이터타입과 크기 그리고 제약사항을 지정하는것.


6. 속성의 명명

- 속성의 이름을 정확하게 부여하고 영어의 혼란을 없애기 위해 용어사전 이라는 업무사전을 프로젝트에 사용하게된다.

- 용어사전과 도메인정의를 같이 사용하여 프로젝트를 진행한 경우 용어적 표준과 데이터타입의 일관성을 확보할 수 있게 된다.

* 현업에서 사용하는 이름을 부여하는 것이 가장 중요하다.

* 서술식의 속성명은 사용하지 말아야한다

* 공유화되지 않은 업무에서 사용하지 않은 약어는 사용하지 않는게 좋다.

* 모든 속성의 이름은 유일하게 작성하는 것이 좋다.