ER 모델링

속성 분류의 핵심은 이름이 아니라 저장 판단이다

속성을 보면 먼저 쪼개서 저장해야 하는지, 계산해서 얻는 값인지, 한 개체가 여러 값을 가질 수 있는지를 확인합니다. 이 세 질문이 컬럼 구조와 테이블 경계를 결정합니다.

먼저 묻는 세 가지
1

내부 구조가 있나? 있으면 검색 가능한 단위로 나눕니다.

2

다른 값에서 계산되나? 그렇다면 원본을 기준으로 관리합니다.

3

값이 여러 개인가? 그렇다면 한 칸에 몰지 않고 분리합니다.

새 속성을 만났을 때
한 번에 정의하지 말고 저장 방식을 먼저 결정

같은 "속성"이라도 성격에 따라 스키마가 달라집니다. 아래 세 갈래는 모두 한 개체의 속성을 어떻게 저장할지에 대한 다른 답입니다.

주소
나이
전화번호
복합 속성
분해가 필요한 값인가?

하나의 값처럼 보여도 내부 조각이 각각 의미를 가지면, 그 조각이 곧 검색과 정렬의 기준이 됩니다.

예시
주소 -> 시 | 구 | 동 | 상세주소
저장 결정
주소 전체를 한 칸에 두기보다 하위 속성으로 분해 저장하면 조건 검색과 정렬이 쉬워집니다.
유도 속성
계산으로 얻는 값인가?

원본 데이터를 알고 있으면 언제든 다시 만들 수 있는 값이라면, 저장보다 일관성 유지 방식이 더 중요합니다.

예시
나이 <- 생년월일, 오늘 날짜
저장 결정
기본은 저장하지 않고 계산합니다. 다만 조회가 많거나 계산 비용이 크면 저장 후 동기화 규칙이 필요합니다.
다중값 속성
값이 여러 개 들어오는가?

한 개체가 같은 종류의 값을 여러 개 가지면, 하나의 컬럼에 몰아넣는 순간 정규화와 조회가 함께 흔들립니다.

예시
전화번호 -> 010-... , 02-...
저장 결정
관계형 모델에서는 1NF를 지키기 위해 별도 테이블로 분리하고, 개체와 1:N 관계로 관리합니다.
학습 포인트

복합은 컬럼을 어디까지 나눌지, 유도는 값을 저장할지 계산할지, 다중값은 테이블을 분리할지 결정하게 만듭니다. 즉, 속성 분류는 정의 암기가 아니라 스키마 설계 규칙입니다.