SQL table 테이블 설계
이번 장에서 SQL 데이터베이스에서 테이블 설계하는 간단한 방법에 대해서 살펴보겠습니다. 우선 사람 정보를 담은 테이블부터 정의해 보겠습니다.
- 이름(name)
- 눈동자 색(eye_color)
- 생일(birth_date)
- 주소(address)
- 좋아하는 음식(favorite_foods)
열 | 자료형 | 허용값 |
name | varchar(40) | |
eye_color | char(2) | BL, BR, GR |
birth_data | date | |
address | varchar(100) | |
favorite_foods | varchar(200) |
varchar형태의 데이터는 자유로운 형식의 데이터 입력이 가능합니다. eye_color 같은 경우는 2 문자로 허용값 BL, BR, GR 중 하나만 가능합니다. birth_date과 같은 날짜에 대한 값은 date으로 설정하였습니다.
하지만 위와 같이 그대로 설정을 하게 되면 몇 가지 문제가 발생할 수 있습니다.
- 여러 사람의 이름, 눈동자 색, 생년월일 등이 같을 경우 테이블에는 고유성을 보장할 수 없습니다.
- address 열은 거리, 도시, 주, 국가, 우편번호 등으로 구성이 된 복잡한 구조입니다.
- favorite_foods 열은 0개 또는 1개 이상의 독립적인 항목을 포함하는 목록 개념의 열입니다. 특정 음식이 어떤 사람에게 귀속될 수 있는지 알 수 있도록 이 데이터에 대한 별도의 테이블을 작성하고 person 테이블에 대한 외래 키가 포함되도록 하는 게 가장 좋습니다.
Person 테이블
위와 같은 몇 가지 문제를 해결하기 위해 아래와 같이 테이블을 설계해 보겠습니다.
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) |
favoirte_food 테이블
이제 person 테이블에는 고유성을 보장하는 기본 키 person_id가 생겼습니다. 다음으로 favoirte_food 테이블을 생성해 보겠습니다.
person_id | smallint(unsigned) |
food | varchar(20) |
person_id와 food 열은 favorite_food 테이블의 기본 키를 구성하고 있습니다. 여기서 또 하나 참고해야 하는 점은 person_id 열은 person 테이블에 대한 외래 키이기도 합니다.
이렇게 두 테이블의 설계를 해보았습니다. 다음 장에서 SQL문을 만들어 데이터베이스에 테이블 생성을 해보도록 하겠습니다.
감사합니다.
'SQL' 카테고리의 다른 글
SQL table 테이블 수정 (0) | 2023.12.13 |
---|---|
SQL table 테이블 생성 2 (1) | 2023.12.11 |
Numerical Data 숫자 데이터 (1) | 2023.12.10 |
char, varchar 문자열 데이터 (0) | 2023.12.09 |
SELECT, FROM, WHERE 절 (0) | 2023.12.09 |