Skip to main content

속성 (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)

다른 속성에 의해 계산되거나 도출되는 속성입니다.

특징:

  • 합계, 평균 등의 계산값
  • 데이터 중복을 발생시킬 수 있음
  • 성능 향상을 위해 사용되기도 함
  • 가능한 한 적게 사용하는 것이 좋음

속성 명명 규칙

기본 원칙

  1. 일관성 유지: 전체 데이터 모델에서 동일한 명명 규칙 적용
  2. 의미 명확성: 업무적 의미를 명확하게 표현
  3. 약어 사용 자제: 불가피한 경우 표준 약어 사전 활용
  4. 길이 제한 고려: DBMS의 제약사항 확인

권장 사항

  • 한글명과 영문명을 함께 관리
  • 속성명은 명사형으로 작성
  • 띄어쓰기는 언더스코어(_)로 표현
  • 예약어 사용 금지

주의사항

  • 속성은 **원자값(Atomic Value)**을 가져야 함
    • 기본 속성, 단일 속성처럼 의미있는 값을 가질 수 있어야 하는 것으로 이해했습니다.
  • 다중값 속성은 정규화를 통해 별도 엔터티로 분리 필요
  • 파생속성은 성능과 데이터 무결성 사이의 트레이드오프 고려
  • 설계속성은 최소화하되, 필요시 명확한 목적을 가지고 생성

관련 개념