제 3절 속성(Attribute)
1. 속성의 개념
사전적인 의미 : 사물의 성질, 특징 또는 본질적인 성질, 그것이 없다면 실체를 생각할 수 없는 것
데이터 모델링 관점에서의 의미 : 업무에서 필요로 하는 인스턴스로 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위
- 업무에서 필요로 함
- 의미상 더 이상 분리되지 않음
- 엔티티를 설명하고 인스턴스의 구성요소가 됨
2. 엔티티, 인스턴스와 속성, 속성값에 대한 내용과 표기법
가. 엔티티, 인스턴스, 속성, 속성값의 관계
엔티티에는 두 개이상의 인스턴스가 존재하고 각각의 엔티티에는 고유의 성격을 표현하는 속성정보를 두 개 이상 갖는다.
엔티티 내에 있는 하나의 인스턴스는 각각의 속성들에 대해 한 개의 속성값 만을 가질 수 있다.
예를 들면, 사원의 이름은 홍길동이고 주소는 서울시 강남구이며, 전화번호는 1234-255, 직책은 대리 일 때
속성은 이름, 주소, 전화번호, 직책이고 속성값은 홍길동, 서울시 강남구, 1234-255, 대리이다.
- 한 개의 엔티티는 두 개 이상의 인스턴스의 집합이어야 한다.
- 한 개의 엔티티는 두 개 이상의 속성을 갖는다.
- 한 개의 속성은 한 개의 속성값을 갖는다.
나. 속성의 표기법
3. 속성의 특징
- 엔티티와 마찬가지로 반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야 한다.
- 정규화 이론에 근간하여 정해진 주식별자에 함수적 종속성을 가져야 한다.
- 하나의 속성에는 한 개의 값만을 가진다. 하나의 속성에 여러 개의 값이 있는 다중값일 경우 별도의 엔티티를 이용하여 분리한다.
4. 속성의 분류
가. 속성의 특성에 따른 분류
1) 기본속성
기본속성은 업무로부터 추출한 모든 속성이 해당되며, 가장 일반적이고 많은 속성을 차지한다.
코드성 데이터, 엔티티를 식별하기 위해 부여된 일련번호, 그리고 다른 속성을 계산하거나 영향을 받아 생성된 속성을 제외한 모든 속성은 기본속성이다.
주의해야 할 것은 업무로부터 분석한 속성이라도 이미 업무상코드로 정의한 속성이 많다는 것이다. 이런 경우는 기본 속성이 되지 않는다.
2) 설계속성
설계속성은 업무상 필요한 데이터 이외에 데이터 모델링을 위해, 업무를 규칙화 하기 위해 속성을 새로 만들거나 변형하여 정의하는 속성이다.
대게 코드성 속성은 원래 속성을 업무상 필요에 의해 변형하여 만든 설계 속성이고 일련번호와 같은 속성은 단일한 식별자를 부여하기 위해 모델 상에서 새로 정의하는 설계 속성이다.
3) 파생속성
파생속성은 다른 속성에 영향을 받아 발생하는 속성으로 보통 계산된 값들이 이에 해당한다.
다른 속성에 영향을 받기 때문에 프로세스 설계 시 데이터 정합성을 유지하기 위해 유의해야 할 점이 많으며 가급적 파생속성을 적게 정의하는 것이 좋다.
나. 엔티티구성방식에 따른 분류
- PK(Primary Key) 속성 : 엔티티를 식별 할 수 있는 속성
- FK(Foreign Key) 속성 : 다른 엔티티와의 관계에서 포함된 속성
- 일반속성 : PK, FK에 포함되지 않는 속성
- 단순형 속성 : 더 이상 다른 속성들로 구성될 수 없는 단순한 속성
- 복합형 속성 : 여러 세부 속성들로 구성될 수 있는 속성
- 단일값 속성 : 속성 하나에 한 개의 값을 가지는 속성
- 다중값 속성 : 여러 개의 값을 가지는 속성, 하나의 엔티티에 포함 될 수 없으므로 1차 정규화를 하거나 별도의 엔티티를 만들어 관계로 연결함
5. 도메인(Domain)
각 속성은 가질 수 있는 값의 범위를 가지게 되는데 이를 그 속성의 도메인이라고 한다.
예를 들어 학생이라는 엔티티가 있을 때 학점이라는 속성의 도메인은 0.0에서 4.5 사이의 실수 값이며 주소라는 속성은 길이가 20자리이내인 문자열로 정의 할 수 있다.
각 속성은 도메인 이외의 값을 갖지 못하며 도메인은 엔티티 내에서 속성에 대한 데이터 타입과 크기, 그리고 제약사항을 지정하는 것이다.
6. 속성의 명명(Naming)
- 해당 업무에서 사용하는 이름을 부여
- 서술식 속성명은 사용하지 않음
- 약어사용은 가급적 제한
- 전체 데이터모델에서 유일성을 확보하는 것이 좋음
'Computer Science > SQL-D' 카테고리의 다른 글
[SQLD] 6. 성능 데이터 모델링의 개요 (0) | 2016.08.04 |
---|---|
[SQLD] 5. 식별자(Identifiers) (0) | 2016.08.01 |
[SQLD] 4. 관계(Relationship) (0) | 2016.08.01 |
[SQLD] 2. 엔티티(Entity) (0) | 2016.08.01 |
[SQLD] 1. 데이터 모델의 이해 (0) | 2016.08.01 |