- RDBMS란?
- 데이터베이스 설계
예를 들어, 게시글 테이블이 있다라고 해보자
게시글 번호 | 제목 | 소개 | 작성자 | 직업 | 생년월일 |
---|---|---|---|---|---|
1 | 안녕하세요1 | 도깨비 | 공유 | 영화 배우 | 790710 |
2 | 안녕하세요2 | 저승사자 | 이동욱 | 영화 배우 | 811106 |
3 | 안녕하세요3 | 도깨비 부인 | 김고은 | 영화 배우 | 910702 |
1 | 안녕하세요4 | 도깨비 | 공유 | 영화 배우 | 790710 |
1 | 안녕하세요5 | 커피집 사장 | 공유 | 커피집 사장 | 850101 |
위의 테이블을 보면, 게시글의 작성자가 동명이인일 수 있고, 한명의 작성자가 여러 게시글을 작성할 수 도 있다.
필연적으로, 데이터를 중복 작성해야하는 경우가 발생하는데, 관계형 데이터베이스에서는 중복을 최소화 하기 위해 테이블을 쪼개서 데이터를 저장한 후, 관계를 설정할 수 있다.
예를 들어, 위의 게시글 테이블을 게시글과 사용자로 테이블을 나눴다고 해보자
게시글 번호(PK) | 제목 | 소개 | 사용자 번호(FK) |
---|---|---|---|
1 | 안녕하세요1 | 도깨비 | 1 |
2 | 안녕하세요2 | 저승사자 | 2 |
3 | 안녕하세요3 | 도깨비 부인 | 3 |
1 | 안녕하세요4 | 도깨비 | 1 |
1 | 안녕하세요5 | 커피집 사장 | 4 |
사용자 번호(PK) | 작성자 | 직업 | 생년월일 |
---|---|---|---|
1 | 공유 | 도깨비 | 790710 |
2 | 이동욱 | 저승사자 | 811106 |
3 | 김고은 | 도깨비 부인 | 910702 |
4 | 공유 | 커피집 사장 | 850101 |
위처럼 테이블을 쪼갠 후 관계를 설정한다면, 중복되던 직업과 생년월일을 없앨 수 있고 동명이인 이더라도 구별할 수 있다
즉, 정규화란 데이터의 중복을 최소화하기 위해 테이블을 쪼갠것이다
PK(Primary Key)
해당 테이블의 각 행(row)을 유일(unique)하게 구분할 수 있는 Keyr값
FK(Foreign Key)
A테이블에서 B 테이블의 데이터를 찾아가고 싶을 때, 사용하는 Key값
즉, 외래키로 관계가 설정된 다른 테이블의 데이터를 얻을 수 있다