[DB] 데이터베이스 속성(Attribute)이란 무엇인가?
- DB/Database Knowledge
- 2022. 11. 2.
속성(Attribute)이란?
국어사전에서 속성이라는 단어를 찾아보면 "사물의 특징이나 성질"이라는 뜻을 이라고 명시하고 있습니다. 이것을 데이터 모델링에서 적용한다면 엔터티가 가지고 있는 특징이나 성질이라고 할 수 있겠습니다. 데이터 모델링에서의 속성은 엔터티의 정보를 나타내고 더 이상 분리되지 않는 최소의 단위로써 엔티티의 성질, 분류, 수량, 상태, 특성 등을 나타내는 세부 항목으로 업무에 필요한 데이터를 저장할 수 있습니다.
※ 속성(Attribute)는 왜 분리되지 않는 단위인가?
속성은 하나의 값만 가져야 하기 때문입니다. 그래야 해당 속성에 저장되는 데이터가 의미가 있습니다. 그렇기에 멀티 파트가 되는 속성들은 쪼개서 하나의 의미만 가질 수 있도록 만들어야 합니다.
속성(Attribute)를 설정할 때 고려사항
엔터티에 필요한 속성인가?
엔터티에 꼭 필요한 속성만을 구성하도록 합니다. 예를 들어 학생이라는 엔터티 안에 과목 번호라는 속성 값이 들어가 있으면 학생이라는 엔터티의 개념이 모호해집니다. 학생이라는 속성에는 과목 번호가 아닌 학번이라는 속성이 들어가야 합니다.
속성이 하나의 값만을 가지고 있는가?
엔티티 타입 내에서 하나의 속성은 한 시점에 한 개의 값만을 가져야 합니다. 하지만 위의 "방문 고객"이라는 테이블의 속성을 보시면 고객의 방문 횟수에 따라 방문시간, 방문 목적의 속성의 값에 여러 가지 값이 들어가고 있습니다. 이렇게 여러 개의 값이 들어가는 속성을 다중값 속성이라고 하며 이럴 경우에는 새로운 엔티티를 생성해서 다중 값을 없애야 합니다.
예) 한 고객이 여러 번 방문한 방문일, 방문 내용을 관리해야 합니다.
위와 같이 고객과 고객 방문이라는 엔티티를 나누어 관계는 고객과 고객방문 테이블이 1:M 관계로 설정하는 방식으로 다중값을 해결해야 합니다.
속성이 하나의 의미만 가지고 있는가?
속성은 단 하나의 독립적인 의미를 가지고 있어야 합니다. 여러 개의 속성을 통합하여 하나의 의미를 가지는 것을 지양해야 합니다.
예) 주민번호 = 주민번호 1 + 주민번호 2
→ 주민등록번호 전체만이 의미가 있으므로 분리해서는 안됩니다.
동일한 의미를 가지는 속성이 하나만 존재하는가?
동일한 의미를 가지는 여러 개의 속성 해서는 안됩니다. 중복되는 의미를 가지는 속성들은 하나로 통합해야 합니다.
동일한 의미를 가지는 속성의 통합
예 1) 주문일자 + 등록일자 = 주문일자
→ 주문일자와 등록일자는 서로 동일한 의미를 가지는 속성입니다. 안에 들어가는 값 또한 동일합니다. 고로 주문 일자와 등록일자의 속성을 하나로 합쳐 하나로 관리해야 합니다.
배타적인 의미를 가지는 속성의 통합
예 1) 제품의 입고일자와 출고일자는 서로 반대되는 개념입니다.
입고일자 + 출고일자 = 처리일자
→ 제품의 입고일자와 출고일자는 서로 상충되는 의미를 가지는 속성입니다. 고로 처리일자라는 속성으로 하나로 통합하여 관리해야 합니다.
속성의 분류
분해 여부에 따른 속성의 종류
종류 | 설명 |
단일 속성 | - 하나의 이미로 구성된 것으로 회원ID, 이름 등을 말합니다. |
복합 속성 | - 여러개의 의미가 있는것으로 대표적으로 주소가 있습니다. - 주소는 시, 군, 동 등으로 분해될 수 있습니다. |
다중값 속성 | - 속성에 여러개의 값을 가질 수 있는 것으로 예를 들자면 상품리스트가 있습니다. - 다중값 속성은 엔터티로 분해가 가능합니다. |
특성에 따른 속성의 종류
종류 | 설명 |
기본 속성 | - 비즈니스 프로세스에서 도출되는 본래의 속성을 말합니다. - 예) 회원ID, 이름, 계좌번호, 주문 일자 등 |
설계 속성 | - 데이터 모델링 과정에서 발생되는 속성입니다. - 유일한 값을 부여합니다. - 예) 상품코드, 사번 등 |
파생 속성 | - 다른 속성에 의해서 만들어지는 속성을 말합니다. - 예) 합계, 평균 등 |
'DB > Database Knowledge' 카테고리의 다른 글
[DB] 데이터베이스 엔터티(Entity)란 무엇인가? (3) | 2022.10.31 |
---|---|
[DB] 데이터 모델링이란 무엇인가? (1) | 2022.10.27 |
[DB] 파티션 테이블(Partition Table)이란 무엇인가? (1) | 2022.06.25 |
[DB] 데이터베이스 HASH JOIN (해시 조인)에 대하여 (0) | 2021.07.17 |