1. 테이블 설계
설계 → 정제 → 테이블 작성 및 생성
1. 설계(Design)
사람에 대한 정보를 담을 테이블 정의
“한 사람을 간단하게 묘사”
이름 - name
눈동자 색 - eye_color
생일 - birth_date
주소 - address
좋아하는 음식 - favorite_foods
“열 이름과 자료형 지정”
| 열(column, field) | 자료형(data types) | 허용값 |
|---|---|---|
| name | varchar(40) | |
| eye_color | char(2) | BL, BR, GR |
| birth_date | date | |
| address | varchar(100) | |
| favorite_foods | varchar(200) |
eye_color 열은 영문 2글자로 제한하고, BR, BL, GR 중 하나만 허용
2. 정제(Refinement)
name 열은 이름과 성으로 구성된 복합 객체임
여러 사람이 동일한 이름, 눈동자, 색, 생년월일 등을 가질 수 있기 때문에 Person 테이블에 고유성을 보장하는 열을 추가해야함
address 열은 거리, 도시, 국가 등으로 구성된 복합 객체
favorite_foods 열은 0개 혹은 1개 이상의 독립적인 항목을 포함하는 목록(enumeration) 형태임
특정 음식이 어떤 사람이 좋아하는 음식인지 구분시킬 수 있도록 이 열에 대한 별도의 테이블을 작성하는 것이 좋음
정규화 진행 후 테이블
| 열 | 자료형 | 허용값 |
|---|---|---|
| person_id | smallint(unsigned) | |
| first_name | varchar(20) | |
| last_name | varchar(20) | |
| eye_color | char(2) | BR, BL, GR |
| birth_date | date | |
| street | varchar(30) | |
| city | varchar(20) | |
| state | varchar(20) | |
| country | varchar(20) | |
| postal_code | varchar(20) |
고유성을 보장하는 기본 키 person_id 추가
favorite_food를 담을 별도의 테이블 생성
| 열 | 자료형 |
|---|---|
| person_id | smallint(unsigned) |
| food_name | varchar(20) |
person_id가 1인 사람 - 유정호
person_id = 1 food_name = 짜장면
person_id = 1 food_name = 탕수육
Last updated on