속성 (Attribute)
개요
Database Table
| id | col1 | col2 | col3 | ---> Attribute 속성
-----------------------------------------------
| uuid_1 | col1_val | col2_val | col3_val | ---> Row
| uuid_2 | col1_val | col2_val | col3_val | (Tuple)
| uuid_3 | col1_val | col2_val | col3_val |
속성(Attribute)은 엔터티가 가지는 항목, 더 이상 분리되지 않는 단위, 업무에 필요한 데이터 저장 정의를 의미합니다.
속성의 내용은 테이블 "칼럼" 혹은 객체의 "필드"로 이해하였습니다.
데이터베이스 테이블에서 컬럼(Column)에 해당하며,
엔터티의 특성을 구체적으로 표현하는 최소 단위의 정보입니다.
특징
- 업무에서 관리되는 정보
- 하나의 값만 가질 수 있음 (원자성)
- 주식별자에게 함수적 종속됨
- 속성(
Attribute)은 엔터티의 주식별자(Primary Key) 에 의해 고유하게 결정된다는 뜻입니다.
주식별자(
Primary Key):
엔터티(테이블)에서 각 행(Row)을 유일하게 식별할 수 있는 속성(또는 속성의 조합) 입니다.
- ex: 회원ID, 주문번호, 학번 등
함수적 종속(
Functionally Dependent):
어떤 속성 A의 값이 주어지면, 그에 따라 속성 B의 값이 하나로 결정되는 관계를 말합니다.
A → B: B는 A에 함수적으로 종속
분류
1. 정의 방법에 따른 분류
정의 (Defined Attribute)
엔터티가 가지는 항목, 더 이상 분리되지 않는 단위,
업무에 필요한 데이터 저장 정의를 나타내는 기본적인 속성입니다.
특징 (Characteristic Attribute)
- 업무에서 관리되는 정보
- 하나의 값만 가짐
- 주식별자에게 함수적 종속되는 속성
2. 분해 여부에 따른 분류
단일속성:
- 나이 → 일반적인 의미로 더이상 분해는 불가능
복합속성:
- 주소 → 시, 군, 동으로 분해 가능
- 이름 → 성, 이름으로 분해 가능
다중값 속성:
- 상품리스트 속성 → 상품(테이블)의 여러 속성을 "상품리스트" 속성에 포함하고 있음
- 단일속성 (Simple Attribute): 더 이상 분해되지 않는 하나의 의미를 가진 속성입니다.
- 복합속성 (Composite Attribute): 여러 개의 의미로 분해될 수 있는 속성입니다. 주소를 시, 군, 동으로 나눌 수 있는 경우가 대표적입니다.
- 다중값 속성 (Multi-valued Attribute): 하나의 속성이 여러 개의 값을 가질 수 있는 속성입니다.
- 정규화 과정에서 별도의 엔터티로 분리됨
- 1차 정규형(1NF)을 위반하므로 별도 테이블로 분리 필요
3. 종류에 따른 분류
기본속성 (Basic Attribute)
업무 분석을 통해 도출되는 본래의 속성입니다.
- 회원아이디, 이름, 계좌번호 등
- 비즈니스 프로세스에서 직접 관찰되는 속성
설계속성 (Designed Attribute)
데이터 모델링 과정에서 발생되는 속성으로, 업무상 직접적으로 존재하지는 않지만 시스템 구현을 위해 필요한 속성입니다.
- 유일값 부여: 일련번호, 순번 등
- 상품코드, 지점코드 등
- 시스템 운영을 위한 기술적 속성
파생속성 (Derived Attribute)
다른 속성에 의해 계산되거나 도출되는 속성입니다.
특징:
- 합계, 평균 등의 계산값
- 데이터 중복을 발생시킬 수 있음
- 성능 향상을 위해 사용되기도 함
- 가능한 한 적게 사용하는 것이 좋음
속성 명명 규칙
기본 원칙
- 일관성 유지: 전체 데이터 모델에서 동일한 명명 규칙 적용
- 의미 명확성: 업무적 의미를 명확하게 표현
- 약어 사용 자제: 불가피한 경우 표준 약어 사전 활용
- 길이 제한 고려: DBMS의 제약사항 확인
권장 사항
- 한글명과 영문명을 함께 관리
- 속성명은 명사형으로 작성
- 띄어쓰기는 언더스코어(_)로 표현
- 예약어 사용 금지
주의사항
- 속성은 **원자값(
Atomic Value)**을 가져야 함- 기본 속성, 단일 속성처럼 의미있는 값을 가질 수 있어야 하는 것으로 이해했습니다.
- 다중값 속성은 정규화를 통해 별도 엔터티로 분리 필요
- 파생속성은 성능과 데이터 무결성 사이의 트레이드오프 고려
- 설계속성은 최소화하되, 필요시 명확한 목적을 가지고 생성
관련 개념
- 엔터티 (Entity)
- 관계 (Relationship)
- 식별자 (Identifier)
- 정규화 (Normalization)