๐ค ๋ฐ์ดํฐ๋ฒ ์ด์ค๋?
๋ฐ์ดํฐ๋ฅผ ํตํฉํ์ฌ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ฐ์ดํฐ ์งํฉ์ฒด
๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐํํ์ฌ ๊ด๋ฆฌํจ์ผ๋ก์จ ๋ฐ์ดํฐ ์ค๋ณต์ ๋ง๊ณ , ํจ์จ์ ์ด๊ณ ๋น ๋ฅธ ๋ฐ์ดํฐ ์ฐ์ฐ์ ๊ฐ๋ฅํ๊ฒ ํจ
๐ค DBMS
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด์ํ๊ณ ๊ด๋ฆฌํ๊ธฐ์ํ DBMS๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉ!
๐ก RDBMS
= Relational DBMS : ๋ฐ์ดํฐ ๊ฐ "๊ด๊ณ", ํํธ๋ฅผ ํตํด ์ํ๋ ๊ฒ์ ๋ฝ์๋ผ ์ ์์!
๊ฒ์๊ธ
| ๊ฒ์๊ธ ๋ฒํธ | ์ ๋ชฉ | ๋ด์ฉ | ์์ฑ์ผ์ | ์์ ์ผ์ | ์์ฑ์ | ์ง์ | ์๋ ์์ผ |
| 1 | ๋๋ ๋๊นจ๋น.. | ์๋ ํ์ธ์ | 2026-01-01 | 2026-01-15 | ๊ณต์ | ์ํ๋ฐฐ์ฐ | 800101 |
| 2 | ๋๋ ์ ์น์ฌ์.. | ์ ๋ ์ ์น์ฌ์์ ๋๋ค.. | 2026-01-02 | 2026-01-15 | ์ด๋์ฑ | ์ ํ๋ฒ | 820105 |
| 3 | ๋๋ ์นด๋ํ๋ ๋๊นจ๋น | ์นด๋ ๋ง์๋ค.. | 2026-01-03 | 2026-01-15 | ๊ณต์ | ์ํ๋ฐฐ์ฐ | 800101 |
| 4 | ๋์ํ๋ ๋๊นจ๋น | ๋์ ๋ฌด์์... | 2026-01-04 | 2026-01-15 | ๊ณต์ | ์ํ๋ฐฐ์ฐ | 830501 |
| 5 | ์์ ๊ณ ์์ด | ๋๋ ์์๋ค.. | 2026-01-06 | ๊น๊ณ ์ | ์ํ๋ฐฐ์ฐ | 850101 | |
| 5 | ์์ ๊ณ ์์ด | ๋๋ ์์๋ค.. | 2026-01-07 | ๊น๊ณ ์ | ์ํ๋ฐฐ์ฐ | 850101 |
๊ฒ์๊ธ ๋ฒํธ ํ์ํ ์ด์ ? : ์๋ฌด๋ฆฌ ๋๊ฐ์ ๋ด์ฉ์ ์ ์ด๋ ๋ค๋ฅธ ๊ฒ์๊ธ์ด์ด์ผํจ -> ๊ฐ ๋ฐ์ดํฐ๊ฐ ์ ๋ํฌํ๊ฒ ๊ด๋ฆฌํ ์๋ฌด๊ฐ์์
๐ Primary Key : PK(๊ธฐ๋ณธํค)
ํด๋น ํ ์ด๋ธ์ ๊ฐ row(ํ)์ ์ ๋ํฌํ๊ฒ ๊ตฌ๋ณํ ์ ์๊ฒ
๐๐ป ๊ทธ๋ผ์๋๋ถ๊ตฌํ๊ณ ์ค๋ณต๋๋ ๋ด์ฉ์ด ๋๋ฌด๋ง์. ํ ์ด๋ธ์ ์ชผ๊ฐ์!
= ์ ๊ทํ
- ์ฅ์ : ์ค๋ณต ์ต์ํ, ์์ &์ญ์ ์ฉ์ด
- ๋จ์ : Join ํด์ผํจ!
๊ฒ์๊ธ(๋ถ๋ฆฌ)
| ๊ฒ์๊ธ ๋ฒํธ(PK) | ์ ๋ชฉ | ๋ด์ฉ | ์์ฑ์ผ์ | ์์ ์ผ์ | ์ฌ์ฉ์ ๋ฒํธ(FK) |
| 1 | ๋๋ ๋๊นจ๋น.. | ์๋ ํ์ธ์ | 2026-01-01 | 2026-01-15 | 1 |
| 2 | ๋๋ ์ ์น์ฌ์.. | ์ ๋ ์ ์น์ฌ์์ ๋๋ค.. | 2026-01-02 | 2026-01-15 | 2 |
| 3 | ๋๋ ์นด๋ํ๋ ๋๊นจ๋น | ์นด๋ ๋ง์๋ค.. | 2026-01-03 | 2026-01-15 | 3 |
| 4 | ๋์ํ๋ ๋๊นจ๋น | ๋์ ๋ฌด์์... | 2026-01-04 | 2026-01-15 | 3 |
| 5 | ์์ ๊ณ ์์ด | ๋๋ ์์๋ค.. | 2026-01-06 | 4 | |
| 5 | ์์ ๊ณ ์์ด | ๋๋ ์์๋ค.. | 2026-01-07 | 4 |
์ฌ์ฉ์
| ์ฌ์ฉ์ ๋ฒํธ(PK) | ์ด๋ฆ | ์ง์ | ์๋ ์์ผ |
| 1 | ๊ณต์ | ์ํ๋ฐฐ์ฐ | 800107 |
| 2 | ์ด๋์ฑ | ์ ํ๋ฒ | 820105 |
| 3 | ๊ณต์ | ์ํ๋ฐฐ์ฐ | 830501 |
| 4 | ๊น๊ณ ์ | ์ํ๋ฐฐ์ฐ | 850101 |
๐Foreign Key : FK(์ธ๋ํค)
: A ํ ์ด๋ธ์์ B ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์๊ฐ๊ณ ์ถ์ ๋, ์ฌ์ฉํ๋ Key๊ฐ
๐ก ์ต๋ํ Bํ ์ด๋ธ์ PK๊ฐ์ Aํ ์ด๋ธ์ FK๋ก ์ฐ๋ ๊ฒ์ด ์ด์์
์ฐ๊ด ๊ด๊ณ
๋ฐ์ดํฐ๋ฒ ์ด์ค "ํ ์ด๋ธ ๊ฐ ์ด๋ค ๊ด๊ณ๋ฅผ ๊ฐ์ง๊ณ ์๋์ง" ์ฐ๊ด๊ด๊ณ๋ 1:1, 1:N, M:N
๊ฒ์๊ธ vs ์ฌ์ฉ์
1) ์ฌ์ฉ์ 1๋ช : ๊ฒ์๊ธ ์ฌ๋ฌ๊ฐ 1 : N โ๏ธ
2) ๊ฒ์๊ธ 1๊ฐ : ์ฌ์ฉ์ 1๋ช 1 : 1
๊ฒ์๊ธ - ์ฌ์ฉ์ ํ ์ด๋ธ ๋ถ๋ฆฌ
- ๊ฒ์๊ธ ํ ์ด๋ธ์ ๋ณด๊ณ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ํ์ธ : ์ฐ๊ด ๊ด๊ณ โ๏ธ
=> ๊ฒ์๊ธ ํ ์ด๋ธ์ ๋ณด๊ณ ์ฌ์ฉ์๋ ์ด๋ค ๊ด๊ณ์ธ์ง
// - ์ฌ์ฉ์ ํ ์ด๋ธ์ ๋ณด๊ณ ๊ฒ์๊ธ ๋ฐ์ดํฐ๋ฅผ ํ์ธ X
์ ํ๋ธ ์ค์ต ์ฑ๋-์ฌ์ฉ์
(ํ์ id๋ ์ค๋ณต ํ์ฉ X)
์ฑ๋
| ์ฑ๋ ๋ฒํธ(PK) | ์ฑ๋๋ช | ๊ตฌ๋ ์์ | ์์ ์ | ์ฑ๋ ์ฃผ์ธ | ํ์ id | ๋น๋ฐ๋ฒํธ | ์ฐ๋ฝ์ฒ |
| 1 | ๋ฌ๋ ค๋ผ ๊ฐ์ | 1 | 5 | ๊น๊ฐ์ | kim | 1111 | 010-1234-1234 |
| 2 | ๋ ์๋ผ ๊ฐ์ | 20 | 50 | ์ด๊ฐ์ | lee | 2222 | 010-2345-2345 |
| 3 | ๊ฑธ์ด๋ผ ๊ฐ์ | 400 | 200 | ๋ฐ๊ฐ์ | park | 3333 | 010-3456-3456 |
| 4 | ์ง์๊ฐ๊ณ ์ถ์์ฑ๋ | 1000 | 600 | ์ด๊ฐ์ | lee | 2222 | 010-2345-2345 |
| 5 | ์นจ์ฐฉ๋งจ | 10000 | 900 | ๊น์นจ์ฐฉ | chim | 5555 | 010-5678-5678 |
์ ๊ทํ
โฌ๏ธ
์ฑ๋(๋ถ๋ฆฌ)
| ์ฑ๋ ๋ฒํธ(PK) | ์ฑ๋๋ช | ๊ตฌ๋ ์์ | ์์ ์ | ํ์ id |
| 1 | ๋ฌ๋ ค๋ผ ๊ฐ์ | 1 | 5 | kim |
| 2 | ๋ ์๋ผ ๊ฐ์ | 20 | 50 | lee |
| 3 | ๊ฑธ์ด๋ผ ๊ฐ์ | 400 | 200 | park |
| 4 | ์ง์๊ฐ๊ณ ์ถ์์ฑ๋ | 1000 | 600 | lee |
| 5 | ์นจ์ฐฉ๋งจ | 10000 | 900 | chim |
์ฌ์ฉ์
| ํ์ id (PK) | ์ด๋ฆ | ๋น๋ฐ๋ฒํธ | ์ฐ๋ฝ์ฒ |
| 1 | ๊น๊ฐ์ | 1111 | 010-1234-1234 |
| 2 | ์ด๊ฐ์ | 2222 | 010-2345-2345 |
| 3 | ๋ฐ๊ฐ์ | 3333 | 010-3456-3456 |
| 4 | ๊น์นจ์ฐฉ | 5555 | 010-5678-5678 |
์ฐ๊ด๊ด๊ณ
์ฑ๋ vs ์ฌ์ฉ์
1) ์ฌ์ฉ์ 1๋ช -> ์ฑ๋ n๊ฐ = 1:n โ๏ธ
2) ์ฑ๋ 1๊ฐ -> ์ฌ์ฉ์ 1๋ช = 1:1
์ฑ๋ - ์ฌ์ฉ์ ํ ์ด๋ธ ๋ถ๋ฆฌ
- ์ฑ๋ ํ ์ด๋ธ์์๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์๊ฐ ์ ์์ โ๏ธ
// - ์ฌ์ฉ์ ํ ์ด๋ธ์์๋ ์ฑ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์๊ฐ ์ ์์
MariaDB ์คํํ์(๋ณต์ต)
CLI๋ก
1๏ธโฃ Docker ์คํ
2๏ธโฃ mariadb๊ฐ ์๋ ์ปจํ ์ด๋ ์ ์ : docker exec -it mariadb /bin/bash
3๏ธโฃ mariadb ์คํ : mariadb -u root -p
GUI๋ก
MySQL Workbench 8.0.34 ๋ค์ด๋ก๋ ๋ฐ๊ธฐ