데이터베이스(Database)의 개념을 이해합니다.
관계형 데이터베이스 (RDBMS)가 무엇이며, 왜 사용하는지 이해합니다.
테이블(Table)이 무엇인지 이해하고, Column, Row를 설명할 수 있습니다.
테이블(Table)의 관계 - One to One, One to Many, Many to Many 예시를 나열할 수 있습니다.
Primary Key 와 Foreign Key 의 관계를 설명하고, 테이블에 지정할 수 있습니다.
관계형 데이터베이스와 비관계형 데이터베이스의 차이를 알 수 있습니다.
ERD 구성도로 데이터 관계를 모델링 할 수 있습니다.
Database란?
- 컴퓨터 시스템에 저장된 정보나 데이터를 모두 모아 놓은 집합
- 데이터를 휘발성으로 사라지게 하지 않고 오랜 기간 저장하며 동시에 체계적으로 보관하기 위해서 사용한다.
관계형 데이터베이스(RDBMS)
- 데이터 사이의 관계에 기초를 둔 데이터베이스
- 관계형 데이터베이스에서 모든 데이터는 2차원 테이블로 표현
id | name | price |
---|
1 | Americano | 4,500 |
2 | cold brew latte | 5,000 |
3 | Banana smoothie | 5,500 |
column
은 id
name
price
category
에 해당하는 항목을 의미
row
는 항목들의 실제값 (예를 들면 Americano, 4500, espresso)
Primary Key(PK)
는 각 항목의 고유번호(id)를 의미
Primary Key
를 통해서 특정 로우를 찾거나, 인용(reference)할 수 있다.
관계의 종류
- one - to - one
만약 위의 커피 메뉴에 다음과 같이 카테고리를 추가한다고 하자.
Category
id | category | menu_id |
---|
1 | smoothie | 3 |
2 | espresso | 1 |
3 | cold brew | 2 |
이와 같이 Menu와 Category의 항목이 정확히 하나씩 맞대응 되는 경우 one-to-one 이라 한다. 이 경우 id항목은 PK(Primary Key), menu_id항목은 위의 MENU에서 가져온 것으로 FK(Foreign Key)라 한다.
- one - to - many
만약 위의 커피 메뉴에 다음과 같이 주재료를 추가한다고 하자.
Main Ingredients
id | main ingredients | menu_id |
---|
1 | coffee | 1 |
1 | coffee | 2 |
2 | banana | 3 |
coffee 는 Americano 와 Cold brew 두 항목과 중복연결되어있다. 한 테이블의 로우 하나가 다른 테이블의 여러 로우와 연결되어있는 경우 one - to - many라 한다.
알러지 정보에 대한 테이블을 음료와 연결하려한다. (실제로 있는지 모르겠지만) 커피, 바나나, 우유 알러지가 있다고 가정해보자. Menu Table의 Banana smoothie 같은 경우 바나나, 우유 두 항목에 해당이된다. 거꾸로 우유항목도 Cold brew latte 와 Bananan Smoothie 두 항목에 해당이 된다. 이처럼 서로서로 다른 테이블의 두 개 이상의 항목과 연결되는 항목이 있는 경우 many-to-many 로 분류한다.
이 경우 관계를 표현하는 방법은 junction table을 이용하는 것이다.
id | name | price |
---|
1 | Americano | 4,500 |
2 | cold brew latte | 5,000 |
3 | Banana smoothie | 5,500 |
Allergen
id | allergen |
---|
1 | milk |
2 | coffee |
3 | banana |
id | menu_id | allergen_id |
---|
1 | 1 | 2 |
2 | 2 | 1 |
3 | 2 | 2 |
4 | 3 | 1 |
5 | 3 | 3 |
스타벅스 메뉴 모델링
배운 것을 바탕으로 스타벅스 메뉴 DB 모델링을 한 결과이다.
PK 와 FK는 아래 그림처럼 선을 연결하여 표시하면 된다.
