id | 메뉴명 | 가격 |
---|---|---|
1 | 커피 | 3000 |
2 | 아이스티 | 2500 |
3 | 밀크티 | 3500 |
관계형 데이터베이스는 각 테이블이 상호관련성을 가지고 서로 연결되어있다.
⇒ 테이블과 테이블이 서로 연관되어 있다!
One To One relation
예시) 한명의 한국인은 하나의 주민등록번호를 갖는다.
Users
id | Name |
---|---|
1 | 홍길동 |
2 | 김둘리 |
Identitication numbers
id | Identification Number | user_id |
---|---|---|
1 | 980101 - 1234567 | 2 |
2 | 950404 - 9999999 | 1 |
→ Identification numbers 테이블의 user_id는 Users의 id를 참조한다.
⇒ Identification numbers 테이블의 user 컬럼은 users 테이블의 id(pk)를 참조한다.
id | Identification Number | user |
---|---|---|
1 | 980101 - 1234567 | 김둘리 |
2 | 950404 - 9999999 | 홍길동 |
⇒ users 테이블이 있는데 굳이 또 이름을 저장할 필요가 없기 때문에 참조한다.
결론 : Users 테이블과 Identification numbers 테이블은 서로 일대일 관계이다.
One To Many relation
예시)
한 출판사는 여러 도서를 출판한다.
한 권의 도서는 하나의 출판사에 의해 출판된다.
publisher
id | name |
---|---|
1 | A |
2 | B |
book
id | name | publisher_id |
---|---|---|
1 | myBook | 2 |
2 | yourBook | 1 |
3 | ourBook | 1 |
→ book 테이블의 publisher_id 는 publisher 테이블의 id를 참조한다.
→ “yourBook”의 출판사는 A이고, “ourBook”의 출판사도 A이다.
→ publisher의 Row 하나는 book의 여러 Row와 연결된다.
book의 Row 하나는 publisher의 여러 Row와 연결된다.
⇒ publisher테이블은 One, book테이블은 Many이다.
Many To Many relation
예시) 한 고객은 여러 도서를 구매할 수 있다.
한 도서는 여러 고객에 의해 구매될 수 있다.
customer
id | name | order | price |
---|---|---|---|
1 | 김길동 | yourBook | 20000 |
2 | 김길동 | ourBook | 35000 |
3 | 홍길동 | myBook | 15000 |
4 | 고길동 | yourBook | 20000 |
→ name과 order, price 컬럼의 데이터가 반복된다!
이렇게 되면 구매 한 건이 생기면 똑같은 데이터를 여러번 입력해야 한다.
book
id | name | price |
---|---|---|
1 | myBook | 15000 |
2 | yourBook | 20000 |
3 | ourBook | 35000 |
customer
id | name |
---|---|
1 | 김길동 |
2 | 홍길동 |
3 | 고길동 |
order
id | user_id | book_id |
---|---|---|
1 | 1 | 2 |
2 | 1 | 3 |
3 | 2 | 1 |
4 | 3 | 2 |
→ Foreign Key(참조키)를 사용하면 위의 테이블처럼 중복된 데이터를 줄일 수 있다.
⇒ 서로 다른 두 테이블의 조합을 입력하기 위한 중간 테이블이 생성된다.(order 테이블)
⇒ customer테이블과 book테이블은 다대다 관계이다.
테이블간의 관계에 익숙해지려면 시간이 좀 걸릴것같다. 앞으로 웹페이지를 볼 때 어떤 테이블이 필요할지, 테이블간에 관계는 어떻게 되어있을지 조금씩 자주 생각해보면 좋을것같다.