BETTER WAY 4 컬럼당 하나의 특성만 저장하자
관계형 용어에서 관계(테이블)는 오직 한 주제나 액션만 기술해야 한다. 속성(컬럼)은 관계로 정의된 주제를 기술하는 유일한 특성(종종 ‘원자성’ 데이터라고도 한다)과 관련된 데이터를 포함한다. 또 속성은 다른 관계의 속성을 포함하는 외래키가 될 수 있고, 이 외래키는 다른 관계에 있는 일부 튜플(로우)과 연관성을 제공한다.
단일 컬럼에 특성 값을 두 개 이상 저장하는 것은 좋은 생각이 아니다. 이렇게 하면 검색을 하거나 값을 집계할 때 특성 값을 분리하기가 어렵기 때문이다. 중요한 개별 특성은 자체 컬럼에 넣는 것을 고려해야 한다. 표 1-1은 컬럼에 여러 특성이 포함된 테이블의 예를 보여 준다(이 샘플 데이터에 있는 주소는 실제 주소지만, 저자들의 주소는 아니다).
▼ 표 1-1 여러 컬럼에 여러 속성이 있는 테이블
AuthID |
AuthName |
AuthAddress |
1 |
John L. Viescas |
144 Boulevard Saint-Germain, 75006, Paris, France |
2 |
Douglas J. Steele |
555 Sherbourne St., Toronto, ON M4X 1W6, Canada |
3 |
Ben Clothier |
2015 Monterey St., San Antonio, TX 78207, USA |
4 |
Tom Wickerath |
2317 185th Place NE, Redmond, WA 98052, USA |