<ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค ํ’€์Šคํƒ> 2026-01-30 TIL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(PK, FK, ์ •๊ทœํ™”)

๐Ÿค” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€?

๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์ฒด

๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜์—ฌ ๊ด€๋ฆฌํ•จ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ๋ง‰๊ณ , ํšจ์œจ์ ์ด๊ณ  ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์—ฐ์‚ฐ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ

 

๐Ÿค” 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 ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ธฐ