2025-08-11 02:25
Tags:
데이터 모델링의 핵심, 속성(Attribute) 완벽 해부 핸드북
1. 속성이란 무엇이고, 왜 분류해야 하는가?
만들어진 이유
데이터베이스는 현실 세계의 정보를 컴퓨터 시스템에 저장하기 위해 만들어졌습니다. 이때 정보의 가장 작은 논리적 단위를 **속성(Attribute)**이라고 부릅니다. 예를 들어 ‘학생’이라는 데이터 덩어리가 있다면, ‘학번’, ‘이름’, ‘전공’ 등이 바로 속성이죠.
속성을 제대로 분류하고 정의하는 것은 데이터 모델링의 첫 단추이자 가장 중요한 과정입니다. 속성을 어떻게 설계하느냐에 따라 데이터의 정합성이 보장되고, 시스템의 성능이 좌우되며, 향후 유지보수의 용이성이 결정되기 때문입니다. 마치 건물을 지을 때 벽돌, 철근, 시멘트의 특성을 정확히 알고 용도에 맞게 사용해야 튼튼한 건물이 되는 것과 같은 이치입니다.
2. 속성의 종류: 특성에 따른 분류
속성은 그 자체의 성질과 역할에 따라 크게 기본 속성, 설계 속성, 파생 속성으로 나눌 수 있습니다.
가. 기본 속성 (Basic Attribute)
-
정의: 업무 분석을 통해 자연스럽게 추출되는 가장 기본적인 속성입니다. 원래부터 그 업무에 존재하는 속성이죠.
-
예시:
회원ID
,이름
,계좌번호
,주문일자
,상품명
-
특징: 업무의 근간을 이루는 데이터로, 다른 속성의 기반이 됩니다.
나. 설계 속성 (Designed Attribute)
-
정의: 원래 업무에는 존재하지 않았지만, 데이터 모델링 과정에서 필요에 의해 인위적으로 만들어낸 속성입니다.
-
예시:
상품코드
,주문번호
,지점코드
-
특징:
-
업무 규칙 단순화: 복잡한 업무 규칙을 코드화하여 단순하게 만듭니다. 예를 들어 ‘식기류’, ‘의류’, ‘가전제품’이라는 문자열 대신 ‘001’, ‘002’, ‘003’과 같은 코드를 부여하는 것입니다.
-
유일성 보장: 일련번호와 같은 설계 속성은 각 데이터를 고유하게 식별하는 역할을 합니다.
-
다. 파생 속성 (Derived Attribute)
-
정의: 다른 속성으로부터 계산이나 가공을 통해 만들어지는 속성입니다.
-
예시:
주문금액
(상품가격 * 수량),현재나이
(현재년도 - 출생년도),총주문횟수
-
특징:
-
장점: 데이터를 조회할 때마다 계산할 필요가 없어 성능이 향상됩니다. 통계 관련 데이터를 미리 계산해두면 복잡한 쿼리의 응답 속도를 획기적으로 줄일 수 있습니다.
-
단점: 원본 데이터가 변경될 때마다 파생 속성도 함께 업데이트해야 하므로 데이터 정합성을 유지하기 위한 관리 부담이 커집니다. 예를 들어, 주문 수량이 바뀌면 주문금액도 다시 계산해야 하는 번거로움이 있습니다.
-
언제 파생 속성을 사용할까?
조회는 매우 빈번하지만, 데이터 변경은 드물게 일어나는 경우
계산 과정이 매우 복잡하여 실시간으로 처리하기에 부담이 큰 경우
에 사용하는 것이 효과적입니다.
3. 속성의 종류: 구성 방식에 따른 분류
속성이 더 작은 단위로 쪼개질 수 있는지에 따라 단순 속성과 복합 속성으로 나뉩니다.
가. 단순 속성 (Simple Attribute)
-
정의: 더 이상 다른 속성으로 분해할 수 없는, 원자(atomic)적인 속성입니다.
-
예시:
나이
,성별
,가격
나. 복합 속성 (Composite Attribute)
-
정의: 여러 개의 의미 있는 하위 속성들로 구성된 속성입니다.
-
예시:
주소
(시, 구, 동, 상세주소로 분해 가능),이름
(성, 이름으로 분해 가능) -
특징: 복합 속성은 필요에 따라 개별 하위 속성으로 분리하여 사용하거나, 전체를 하나의 값으로 사용할 수 있어 유연한 데이터 관리가 가능합니다.
4. 속성의 종류: 값의 개수에 따른 분류
하나의 엔터티 인스턴스에 대해 속성이 몇 개의 값을 가질 수 있는지에 따라 단일값 속성과 다중값 속성으로 구분합니다.
가. 단일값 속성 (Single-Value Attribute)
-
정의: 속성 하나가 단 하나의 값만 가질 수 있습니다. 대부분의 속성이 여기에 해당합니다.
-
예시:
주민등록번호
,이름
,나이
(한 사람은 하나의 이름과 나이만 가짐)
나. 다중값 속성 (Multi-Value Attribute)
-
정의: 속성 하나가 여러 개의 값을 가질 수 있습니다.
-
예시:
취미
,자격증
,전화번호
(한 사람이 여러 개의 취미나 자격증을 가질 수 있음) -
처리 방법: 관계형 데이터베이스에서는 다중값 속성을 그대로 표현할 수 없습니다. 따라서 별도의 엔터티(테이블)를 만들어 1:N 관계로 분리하여 정규화를 수행해야 합니다. 예를 들어, ‘학생’ 테이블과 ‘취미’ 테이블을 만들고 ‘학생-취미’라는 관계 테이블을 두어 연결합니다.
5. 속성의 종류: 역할에 따른 분류
엔터티(테이블) 내에서 어떤 역할을 하느냐에 따라 기본키, 외래키, 일반 속성으로 나뉩니다.
가. 기본키 속성 (Primary Key)
-
정의: 엔터티의 인스턴스(행)들을 고유하게 식별할 수 있는 속성 또는 속성들의 집합입니다.
-
예시:
사원번호
,주민등록번호
,학번
-
특징:
NULL
값을 가질 수 없으며, 중복된 값을 허용하지 않습니다.
나. 외래키 속성 (Foreign Key)
-
정의: 다른 엔터티의 기본키를 참조하여 엔터티 간의 관계를 표현하는 속성입니다.
-
예시: ‘주문’ 테이블의
고객ID
(이는 ‘고객’ 테이블의 기본키를 참조) -
특징: 데이터의 참조 무결성을 유지하는 데 핵심적인 역할을 합니다.
다. 일반 속성 (General Attribute)
-
정의: 기본키나 외래키가 아닌, 대상을 설명하는 모든 속성입니다.
-
예시:
사원명
,주소
,전화번호
이처럼 속성은 다양한 기준에 따라 분류될 수 있으며, 각 속성의 특징을 정확히 이해하고 데이터 모델에 적용하는 것이 성공적인 시스템 구축의 지름길입니다.
혹시 특정 속성을 어떻게 설계해야 할지 고민되는 부분이 있으신가요? 혹은 실제 업무에서 마주쳤던 흥미로운 속성 설계 사례가 있다면 함께 이야기 나눠봐도 좋을 것 같습니다.