속성(Attribute)은 어떻게 나뉘나
같은 "컬럼"이라도 성격에 따라 몇 가지로 나눠볼 수 있습니다.
생겨난 원인에 따라
- 기본 속성: 업무에서 자연스럽게 나온 원래 속성 (이름, 생년월일 등)
- 설계 속성: 업무엔 없지만 설계 과정에서 필요해서 새로 만든 속성 (예: 상품코드)
- 파생 속성: 다른 속성을 계산해서 만든 속성 (예: 나이는 생년월일로부터 계산 가능, 합계 금액은 단가×수량)
테이블 안에서의 역할에 따라
- PK 속성: 행을 구분하는 식별자 역할
- FK 속성: 다른 테이블을 가리키는 역할 (외래키)
- 일반 속성: 그 외 순수 데이터 값
값을 쪼갤 수 있는지에 따라
이 분류가 특히 중요한 이유는, 바로 다음에 나올 정규화와 직결되기 때문입니다.
- 단순 속성: 더는 못 쪼개는 값 하나 (나이, 성별)
- 복합 속성: 여러 세부 속성으로 쪼개지는 값 (주소 → 시/도, 구/군, 동/호수)
- 다치 속성: 한 칸에 값이 여러 개 들어갈 수 있는 속성 (취미 → 축구, 영화, 독서)
다치 속성은 테이블 한 칸에 여러 값을 몰아넣는 모양이라, 그대로 두면 검색/수정이 어려워집니다. 그래서 모델링 단계에서 보통 별도 테이블로 분리하는데, 이 "한 칸엔 값 하나만"이라는 규칙이 뒤에 나올 1정규형의 핵심 조건입니다.
참고: 개인 Notion 학습 노트