복합 속성
분해가 필요한 값인가?
하나의 값처럼 보여도 내부 조각이 각각 의미를 가지면, 그 조각이 곧 검색과 정렬의 기준이 됩니다.
예시
주소 -> 시 | 구 | 동 | 상세주소
저장 결정
주소 전체를 한 칸에 두기보다 하위 속성으로 분해 저장하면 조건 검색과 정렬이 쉬워집니다.
속성을 보면 먼저 쪼개서 저장해야 하는지, 계산해서 얻는 값인지, 한 개체가 여러 값을 가질 수 있는지를 확인합니다. 이 세 질문이 컬럼 구조와 테이블 경계를 결정합니다.
내부 구조가 있나? 있으면 검색 가능한 단위로 나눕니다.
다른 값에서 계산되나? 그렇다면 원본을 기준으로 관리합니다.
값이 여러 개인가? 그렇다면 한 칸에 몰지 않고 분리합니다.
같은 "속성"이라도 성격에 따라 스키마가 달라집니다. 아래 세 갈래는 모두 한 개체의 속성을 어떻게 저장할지에 대한 다른 답입니다.
하나의 값처럼 보여도 내부 조각이 각각 의미를 가지면, 그 조각이 곧 검색과 정렬의 기준이 됩니다.
원본 데이터를 알고 있으면 언제든 다시 만들 수 있는 값이라면, 저장보다 일관성 유지 방식이 더 중요합니다.
한 개체가 같은 종류의 값을 여러 개 가지면, 하나의 컬럼에 몰아넣는 순간 정규화와 조회가 함께 흔들립니다.
복합은 컬럼을 어디까지 나눌지, 유도는 값을 저장할지 계산할지, 다중값은 테이블을 분리할지 결정하게 만듭니다. 즉, 속성 분류는 정의 암기가 아니라 스키마 설계 규칙입니다.