속성Attribute의 개념
속성은 "업무에서 필요로 하는 인스턴스로, 의미상 더 이상 분리되지 않는 최소의 데이터 단위"이다.
예를 들어 생년월일은 하나로서 의미가 있다. 이를 생년/생월/생일로 구분한다면 사실상 하나의 속성을 관리목적에 따라 구분했다고 할 수 있다. 그래서 S/W 비용을 계산하는 기능점수(Function Point)를 산정할 때, 이렇게 분리된 속성은 하나의 속성(DET)으로 계산한다. 하지만 만약 서로 관련이 없는 이름, 주소를 하나의 속성인 ‘이름주소’로 정의하면 어떻게 될까? 이것은 하나의 속성의 두 개의 의미를 갖기 때문에 기본속성으로서 성립되지 않는다. 이렇게 정리된 속성은 그냥 값의 의미로, 속성보다는 내역으로서 정의하여 관리할 수는 있다.
엔터티, 인스턴스, 속성, 속성값의 관계
한 개의 엔터티에는 두 개 이상의 인스턴스가, 두 개 이상의 속성을 갖는다. 분석 단계에서는 엔터티 내 여러 개의 인스턴스가 가지는 동일한 성격이 뭔지 파악하고 이에 이름을 부여하여 엔터티 속성으로 기술하는 작업이 필요하다. 예를 들면 사원은 이름, 주소, 전화번호, 직책 등을 가질 수 있다. 사원이라는 엔터티에 속한 인스턴스들의 성격을 구체적으로 나타내는 것이 속성이며, 각각의 인스턴스는 속성의 집합이다. 한 속성은 하나의 인스턴스에만 존재할 수 있다. 속성은 관계로 기술될 수 없고 자신이 속성을 가질 수도 없다.
엔터티 내 하나의 인스턴스 속 한 개의 속성은 한 속성값만 가질 수 있다. 예를 들어 사원의 이름은 홍길동, 주소는 서울시, 전화번호가 1234, 직책이 대리라고 할 때 이름, 주소, 전화번호, 직책은 속성이고 홍길동, 서울시, 1234, 대리는 속성값이다. 따라서 속성값은 각각의 엔터티가 가지는 속성들의 구체적 내용이다.
속성은 엔터티에 속한 엔터티에 대한 자세하고 구체적인 정보이다. 예를 들어 사원이라는 엔터티에는 홍길동이라는 사람(엔터티)이 있을 수 있다. 홍길동이라는 사람의 이름은 홍길동이고 주소는 서울시이며 생년월일 1년 2월 3일이다. 여기에 이름, 주소, 생년월일과 같은 각각의 값을 대표하는 이름들을 속성이라 하고 홍길동, 서울시, 1년 2월 3일과 같이 각각의 이름에 대한 구체적인 값을 속성 값(VALUE)이라고 한다.
속성의 특징
- 엔터티와 마찬가지로 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이다. (강사의 교재이름 등)
- 정규화 이론을 근거로 주식별자에 함수적으로 종속된다. 즉 기본키가 변경되면 속성 값도 변경된다.
- 한 속성은 한 개의 값만 가진다. 한 속성에 다중값이 있을 경우 별도의 엔터티를 이용하여 분리한다.
- '속성명'은 데이터 모델에서 유일하게 사용하되, '속성값'은 중복될 수 있다.
속성의 분류
1. 특성에 따른 분류
기본속성Basic Attribute
-비즈니스 프로세스(업무)에서 도출되는 본래의 속성
-코드성 데이터, 엔터티 식별을 위한 일련 번호, 다른 속성을 계산하거나 다른 속성의 영향을 받아 생성된 속성을 제외한 모든 속성은 기본 속성
-업무로부터 분석한 속성이라도 이미 업무상 코드로 정의한 속성은 기본 속성이 아님
-회원 ID, 이름, 계좌번호, 주문 일자, 이자율, 원금, 예치기간 등
설계속성Designed Attribute
-데이터 모델링 과정에서 속성을 새로 만들거나 변형하여 도출된 속성
-유일한 값을 부여한다
-상품코드, 지점 코드, 예금분류 등
파생속성Derived Attribute
-다른 속성에 의해 만들어지는(계산되는) 속성이다.
-합계, 평균, 이자 등
-예를 들어 ‘이자’라는 속성이 존재한다고 하면 이자는 원금이 1,000원이고 예치기간이 5개월이며 이자율이 5.0%에서 계산되는 속성값이다. 그렇다면 이자는 원금이 1,000원에서 2,000원으로 변하여도 영향을 받고 예치기간이 5개월에서 7개월로 증가하여도 값이 변하며 이자율이 5.0%에서 6.0%로 되어도 이자속성이 가지는 값은 변할 것이다. 한 번 값이 변해도 또 다시 영향을 미치는 속성값의 조건이 변한다면 이자의 값은 지속적으로 변경될 것이다.
2. 엔터티 구성방식(분해 여부)에 따른 분류
엔터티를 식별할 수 있는 속성을 PK(Primary Key)속성, 다른 엔터티와의 관계에서 포함된 속성을 FK(Foreign Key)속성, 엔터티에 포함되어 있고 PK, FK에 포함되지 않은 속성을 일반속성이라 한다. 또 속성은 그 세부 의미를 쪼갤 수 있는지에 따라 나눌 수 있다.
단일 속성Single Attribute
-하나의 의미로 구성된 것
-회원 ID, 이름, 나이, 성별 등
복합 속성Composite Attribute
-여러 개의 의미가 있는 것
-주소(시, 구, 동, 번지와 같은 세부 속성으로 구성됨) 등
다중값 속성Multi Attribute
-속성에 여러 개의 값을 가질 수 있는 것
-다중값 속성은 엔터티로 분해되므로 1차 정규화를 하거나 별도의 엔터티를 만들어 관계로 연결해야 함
-상품 리스트, 자동차의 색상(차 지붕, 차체, 외부의 색 별로 색이 다를 수 있음) 등
도메인
각 속성은 가질 수 있는 값의 범위가 있는데 이를 그 속성의 도메인(Domain)이라 한다. 예를 들면 학생이라는 엔터티가 있을 때 학점이라는 속성의 도메인은 0.0에서 4.5 사이의 실수 값이며 주소라는 속성은 길이가 20자리 이내인 문자열로 정의할 수 있다. 여기서 물론 각 속성은 도메인 이외의 값을 갖지 못한다. 따라서 도메인은 엔터티 내에서 속성에 대한 데이터타입, 크기,제약사항을 지정하는 것이다.
속성의 명명
C/S환경이든 Web 환경이든 속성명은 곧 UI에 나타나므로 업무와 직결된다. 그래서 속성명을 정확하게 부여하고 용어의 혼란을 없애기 위해 '용어사전'을 사용한다. 또 각 속성이 가지는 값의 종류와 범위를 명확하게 하기 위해 미리 '도메인정의'를 정리하여 용어사전과 같이 사용한다. 용어사전과 도메인정의를 통해 용어적 표준과 데이터타입의 일관성을 확보할 수 있다.
속성명을 부여하는 원칙은 다음과 같다.
- 직원 엔터티의 이름, 고객 엔터티의 이름과 같이 각 엔터티별로 동일한 속성명을 사용하여 데이터모델의 일관성을 가지는 것이 좋다 (X)
- 전체 데이터 모델에서 유일성을 확보하는 것이 좋다 (O)
'SQLD > 데이터 모델링의 이해' 카테고리의 다른 글
2-1 성능 데이터모델링의 개요 (0) | 2020.02.16 |
---|---|
1-5 식별자 (0) | 2020.02.16 |
1-4 관계 (0) | 2020.02.13 |
1-2 엔터티 (0) | 2020.02.13 |
1-1 데이터 모델의 이해 (0) | 2020.02.10 |