속성(Attribute, 사물의 성질, 본질적인 성질, 실체를 생각할 수 없는 것)
속성의 개념
- 본질적 속성이란 어떤 사물 또는 개념에 없어서는 안 될 징표의 전부
- 이 징표는 사물이나 개념이 어떤 것인지를 나타내고 그것을 다른 것과 구별하는 성질
- 데이터 모델링 관점에서 속성 정의
-> '업무에서 필요로 하는 인스턴스로 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위' - 업무상 관리하기 위한 최소의 의미 단위, 엔터티의 한 분야

- 업무에서 필요
- 의미상 더 이상 분리되지 않는다
-> 생년월일을 생년, 생월, 생일로 구분(하나의 속성을 관리목적에 따라 구분) - 엔터티를 설명하고 인스턴스의 구성요소가 된다.
엔터티, 인스턴스와 속성, 속성값에 대한 내용과 표기법
- 엔터티, 인스턴스, 속성, 속성값의 관계
-> 한 개의 엔터티는 두 개 이상의 인스턴스의 집합이어야 한다.
한 개의 엔터티는 두 개 이상의 속성을 갖는다.
한 개의 속성은 한 개의 속성값을 갖는다.

-> 속성은 엔터티에 속한 엔터티에 대한 자세하고 구체적인 정보를 나타내며 각각의 속성은 구체적인 값을 갖게 된다.
ex) 사원(엔터티)안에 홍길동(엔터티) -> 이름: 홍길동, 주소: 서울시 강서구, 생년월일: 1967년 12월 31일
(이름, 주소, 생년월일 -> 속성 / 홍길동, 서울시 강서구, 1967년 12월 31일 -> 값(value))
- 속성의 표기법
-> 속성의 표기법은 엔터티 내에 이름을 포함하여 표현

속성의 특징
- 엔터티와 마찬가지로 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이어야 한다.(ex) 강사의 교재이름)
- 정규화 이론에 근간하여 정해진 주식별자에 함수적 종속성을 가져야 한다.
- 하나의 속성에는 한 개의 값만을 가진다. 하나의 속성에 여러 개의 값이 있는 다중값일 경우 별도의 엔터티를 이용하여 분리한다.
속성의 분류
- 속성의 특성에 따른 분류
- 기본속성
-> 업무분석을 통해 바로 정의한 속성
업무로부터 추출한 모든 속성이 해당하며 가장 일반적이고 많은 속성을 차지
코드성 데이터, 엔터티를 식별하기 위해 부여된 일련번호, 다른 속성을 계산하거나 영향을 받아 생성된 속성을 제외한 모든 속성
주의)업무로부터 분석한 속성이라도 이미 업무상 코드로 정의한 속성이 많다. 이러한 경우도 속성의 값이 원래 속성을 나타내지 못하므로 기본속성이 아니다. - 설계속성
-> 원래 업무상 존재하지 않지만 설계를 하면서 도출해내는 속성
업무상 필요한 데이터 이외에 데이터 모델링을 위해, 업무를 규칙화하기 위해 속성을 새로 만들거나 변형하여 정의하는 속성
대개 코드성 속성은 원래 속성을 업무상 필요에 의해 변형하여 만든 설계 속성이고 일련번호와 같은 속성은 단일(Unique)한 식별자를 부여하기 위해 모델 상에서 새로 정의하는 설계속성이다. - 파생속성
-> 다른 속성으로부터 계산이나 변형이 되어 생성되는 속성으로서 보통 계산된 값들이 이에 해당
다른 속성에 영향을 받기 때문에 설계 시 데이터 정합성을 유지하기 위해 유의해야 할 점이 많으며 가급적 파생속성을 적게 정의하는 것이 좋다.
- 기본속성

- 엔터티 구성방식에 따른 분류
- 엔터티를 식별할 수 있는 속성 -> PK(Primary Key)
- 다른 엔터티와의 관계에서 포함된 속성 -> FK(Foreign Key)
- 엔터티에 포함되어 있고 PK, FK에 포함되지 않은 속성 -> 일반속성

- 또한 속성은 그 안에 세부 의미를 쪼갤 수 있는지에 따라 단순형 혹은 복합형으로 분류
- 주소 속성 -> 시, 구, 동, 번지 등과 같은 여러 세부 속성들로 구성 => 복합 속성(Composite Attribute)
- 나이, 성별 등의 속성 -> 더 이상 다른 속성들로 구성될 수 없는 단순한 속성 => 단순 속성(Simple Attribute)
- 일반적으로 속성은 하나의 값을 가지고 있으나, 그 안에 동일한 성질의 여러 개의 값이 나타나는 경우가 있다.
- 속성 하나에 한 개의 값을 가지는 경우 -> 단일값 속성(Single-Valued Attribute)
-> 주민등록번호와 같은 속성은 반드시 하나의 값만 존재 - 여러 개의 값을 가지는 경우 -> 다중값 속성(Multi-Valued Attribute)
-> 전화번호와 같은 속성은 집, 휴대전화, 회사 전화번호와 같이 여러 개의 값이 있을 수 있다.(또는 자동차의 색상 속성 차 지붕, 차체, 외부의 색 다를 수 있다)
다중값 속성의 경우 하나의 엔터티에 포함될 수 없으므로 1차 정규화를 하거나, 아니면 별도의 엔터티를 만들어 관계로 연결해야 한다.
- 속성 하나에 한 개의 값을 가지는 경우 -> 단일값 속성(Single-Valued Attribute)
도메인(Domain)
- 각 속성은 가질 수 있는 값의 범위가 있다 -> 속성의 도메인
- 엔터티 내에서 속성에 대한 데티어 타입과 크기 그리고 제약사항을 지정하는 것
ex) 학생이라는 엔터티가 있을 때 학점이라는 속성의 도메인
-> 0.0에서 4.0사이의 실수 값이며 주소라는 속성은 길이가 20자리 이내인 문자열로 정의할 수 있다.
여기서 물론 각 속성은 도메인 이외의 값을 갖지 못한다.
- 엔터티 내에서 속성에 대한 데티어 타입과 크기 그리고 제약사항을 지정하는 것
속성의 명명(Naming)

- 현업에서 사용하는 이름을 부여하는 것이 중요
-> 아무리 일반적인 용어라 할지라도 그 업무에서 사용되지 않으면 속성의 명칭으로 사용하지 않는 것이 좋다. - 서술식의 속성명은 되도록 사용하지 말아야 한다.
-> 명사형을 이용하고 수식어가 많이 붙지 않도록 유의
수식어가 많으면 의미파악이 힘들고 상세 설계단계에서 물리속성으로 전환하는데 명확한 의미파악이 어렵게 된다.
소유격도 사용하지 않는다. - 공용화되지 않은 업무에서 사용하지 않는 약어는 사용하지 않는다.
-> 지나치게 약어를 많이 사용하면 업무분석자 내에서도 의사소통이 제약을 받으며 시스템을 운영할 때도 많은 불편을 초래할 수 있다. - 가능하면 모든 속성의 이름은 유일하게 작성하는 것이 좋다.
-> 물론 대량의 속성을 정의하는 경우 유일하게 작성하는 것이 어려울 수도 있지만 이렇게 하는 것이 나중에 데이터에 대한 흐름을 파악하고 데이터의 정합성을 유지하는데 큰 도움이 된다.
또한 반정규화(테이블통합, 분리, 칼럼의 중복 등)를 적용할 때 속성명의 충돌(Conflict)을 해결하여 안정적으로 반정규화를 적용할 수 있게 된다.
https://dataonair.or.kr/db-tech-reference/d-guide/sql/?pageid=2&mod=list
해당 사이트의 글을 공부를 위해 작성하였습니다.

'SQLD' 카테고리의 다른 글
[SQLD] 데이터 모델링의 이해 - 3. 관계 (1) | 2023.05.09 |
---|---|
[SQLD] 데이터 모델링의 이해 - 1. 엔터티 (0) | 2023.05.08 |