Super Kawaii Cute Cat Kaoani
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
{Extracurricular Activities}/UMC 7๊ธฐ - Node.js

[UMC 7th Server] Chapter 1. Database ์„ค๊ณ„ ์›Œํฌ๋ถ

by wonee1 2024. 9. 26.
728x90

 Chapter 1. Database ์„ค๊ณ„

 
 
 
 
 

๐ŸŽฏํ•ต์‹ฌ ํ‚ค์›Œ๋“œ ์ •๋ฆฌ 


 
 
 

๐Ÿ”น์™ธ๋ž˜ํ‚ค (foreign key)

  • ์™ธ๋ž˜ํ‚ค๋Š” ๋‘ ํ…Œ์ด๋ธ”์„ ์„œ๋กœ ์—ฐ๊ฒฐํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ‚ค์ด๋‹ค.
  • ๋ฐ์ดํ„ฐ๊ฐ€ ์ผ๊ด€๋  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ์—ญํ• ์„ ํ•œ๋‹ค
  • ์™ธ๋ž˜ํ‚ค๊ฐ€ ํฌํ•จ๋œ ํ…Œ์ด๋ธ”์„ ์ž์‹ ํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ํ•˜๊ณ  ์™ธ๋ž˜ํ‚ค ๊ฐ’์„ ์ œ๊ณตํ•˜๋Š” ํ…Œ์ด๋ธ”์„ ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์ด๋ผ ํ•œ๋‹ค.

 

๐Ÿ”น์™ธ๋ž˜ํ‚ค (foreign key) ํŠน์ง•

  • ์™ธ๋ž˜ ํ‚ค๋Š” ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.
  • ์™ธ๋ž˜ ํ‚ค๋Š” ๊ธฐ๋ณธํ‚ค์™€ ๋‹ค๋ฅด๊ฒŒ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์ง€์ • ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์™ธ๋ž˜ ํ‚ค๋Š” NULL๊ฐ’๊ณผ ์ค‘๋ณต ๊ฐ’์ด ํ—ˆ์šฉ๋œ๋‹ค.
  • ์ฐธ์กฐ๋˜๋Š” ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์ฐธ์กฐํ•˜๋Š” ๊ฐ’๋„ ๋ณ€๊ฒฝ๋œ๋‹ค.
  • ์™ธ๋ž˜ ํ‚ค๋Š” ๊ธฐ๋ณธ ํ‚ค์˜ ์ผ๋ถ€๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

 
 


โœ… FOREIGN KEY (country_id) REFERENCES country(country_id)

 -> FK๋Š” country_id ์ด๊ณ  ์ด๊ฒƒ์€ country(country_id) ์ฐธ์กฐ๋˜์—ˆ๋‹ค! 

 
 
 
 

๐Ÿ”น๊ธฐ๋ณธํ‚ค

  • ๊ธฐ๋ณธํ‚ค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ๋‚ด์˜ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ์—์„œ ๊ณ ์œ ํ•œ ์•„์ด๋””๋ฅผ ์ œ๊ณตํ•œ๋‹ค
  • ์œ ์ผ์„ฑ๊ณผ ์ตœ์†Œ์„ฑ์„ ๊ฐ€์ง€๋ฉฐ(ํ›„๋ณดํ‚ค), ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ๋ฅผ ์‹๋ณ„ํ• ๋•Œ ๊ธฐ์ค€์ด ๋˜๋Š” ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ํ‚ค

 

๐Ÿ”น๊ธฐ๋ณธํ‚ค์˜ ํŠน์ง•

  • ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ๊ฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • NULL๊ฐ’์ด ์กด์žฌํ•  ์ˆ˜ ์—†๋‹ค.
  • ๋ ˆ์ฝ”๋“œ์˜ ๊ฐ’์€ ์ค‘๋ณต์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ํ…Œ์ด๋ธ”์—๋Š” ํ•˜๋‚˜์˜ ๊ธฐ๋ณธํ‚ค๋งŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ 1๊ฐœ ์ด์ƒ์˜ ๊ธฐ๋ณธํ‚ค๋ฅผ ์ •์˜ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. (๋‹ค์ˆ˜ ์—ด ๊ธฐ๋ณธ ํ‚ค, ๋ณตํ•ฉ ๊ธฐ๋ณธ ํ‚ค)

 

๐Ÿ”นER ๋‹ค์ด์–ด๊ทธ๋žจ

  • ๊ฐœ์ฒด ๊ด€๊ณ„ ์ง€๋„, ๊ฐœ์ฒด ๊ด€๊ณ„ ๋‹ค์ด์–ด๊ทธ๋žจ์ด๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ˆ์— ์žˆ๋Š” ๊ฐœ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์‹œ๊ฐํ™”ํ•ด์„œ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ์‹์„ ๋งํ•œ๋‹ค.

 
 

๐Ÿ”น๋ณตํ•ฉ ํ‚ค

  • ๋‘๊ฐœ ์ด์ƒ์˜ ์ปฌ๋Ÿผ์„ ๋ฌถ์–ด์„œ ํ•˜๋‚˜์˜ ๊ธฐ๋ณธํ‚ค๋กœ ์ง€์ •ํ•˜๋Š”๊ฒƒ.
  • ๊ธฐ๋ณธํ‚ค๋Š” ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ํ•˜๋‚˜๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค, ๋˜ํ•œ ๊ธฐ๋ณธํ‚ค๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์ปฌ๋Ÿผ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
    • ๊ธฐ๋ณธํ‚ค๊ฐ€ ๋งŒ์•ฝ ๋ณตํ•ฉํ‚ค๋ผ๋ฉด, ๋ณตํ•ฉํ‚ค ๋˜ํ•œ ๋‹น์—ฐํžˆ ์œ ์ผ์„ฑ๊ณผ ์ตœ์†Œ์„ฑ์„ ๋งŒ์กฑํ•ด์•ผํ•œ๋‹ค.

 

๐Ÿ”น์—ฐ๊ด€ ๊ด€๊ณ„
 

์กด์žฌ์  ๊ด€๊ณ„๋ผ๊ณ ๋„ ํ•œ๋‹ค(์—ฐ๊ด€๊ด€๊ณ„)
ํ•œ ์—”ํ„ฐํ‹ฐ์˜ ์กด์žฌ๊ฐ€ ๋‹ค๋ฅธ ์—”ํ„ฐํ‹ฐ์˜ ์กด์žฌ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ด€๊ณ„

  • ์—”ํ„ฐํ‹ฐ ๊ฐ„์˜ ์—ฐ๊ด€๋œ ์ƒํƒœ๋ฅผ ์˜๋ฏธ
  • ์—ฐ๊ด€๊ด€๊ณ„๋Š” ํ•ญ์ƒ ์ด์šฉํ•˜๋Š” ๊ด€๊ณ„๋กœ ์กด์žฌ์  ๊ด€๊ณ„์— ํ•ด๋‹น

 
 

๐Ÿ”น์˜์กด ๊ด€๊ณ„
 

ํ–‰์œ„์  ๊ด€๊ณ„ (์˜์กด๊ด€๊ณ„)
์—”ํ„ฐํ‹ฐ ๊ฐ„์˜ ์–ด๋–ค ํ–‰์œ„๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ์˜๋ฏธ

  • ์˜์กด๊ด€๊ณ„๋Š” ์ƒ๋Œ€๋ฐฉ ํด๋ž˜์Šค์˜ ํ–‰์œ„์— ์˜ํ•ด ๊ด€๊ณ„๊ฐ€ ํ˜•์„ฑ๋˜๋Š” ํ–‰์œ„์  ๊ด€๊ณ„
  • ERD์—์„œ๋Š” ์กด์žฌ๊ด€๊ณ„์™€ ํ–‰์œ„๊ด€๊ณ„๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๋Š”๋‹ค
  • UML์—๋Š” ํด๋ž˜์Šค๋‹ค์ด์–ด๊ทธ๋žจ ๊ด€๊ณ„ ์ค‘ ์—ฐ๊ด€๊ด€๊ณ„์™€ ์˜์กด๊ด€๊ณ„๊ฐ€ ์žˆ๊ณ  ์ด๊ฒƒ์€ ์‹ค์„ ๊ณผ ์ ์„ ์˜ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ๋‹ค๋ฅด๊ฒŒ ํ‘œํ˜„์ด ๋œ๋‹ค
  • ์˜์กด๊ด€๊ณ„๋Š” ์˜คํผ๋ ˆ์ด์…˜์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ ๋“ฑ์œผ๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์—ฐ๊ด€๊ด€๊ณ„๋Š” ์†Œ์Šค์ฝ”๋“œ์—์„œ ๋ฉค๋ฒ„๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 
 

๐Ÿ”น์ •๊ทœํ™”

ํ•˜๋‚˜์˜ ์—”ํ„ฐํ‹ฐ์— ๋งŽ์€ ์†์„ฑ์„ ๋„ฃ์Œ→ ์—”ํ„ฐํ‹ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ ๋งˆ๋‹ค ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์กฐํšŒ ๋จ

  • ์ตœ์†Œํ•œ์˜ ๋ฐ์ดํ„ฐ๋งŒ์„ ํ•˜๋‚˜์˜ ์—”ํ„ฐํ‹ฐ์— ๋„ฃ๋Š”์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ•ดํ•˜๋Š” ๊ณผ์ •์„ ์ •๊ทœํ™”๋ผ๊ณ  ํ•จ
  • ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜์—ฌ ์šฉ๋Ÿ‰์„ ์ตœ์†Œํ™”์‹œํ‚ด
  • ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ, ์ตœ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ์œ ์—ฐ์„ฑ์„ ์œ„ํ•œ ๊ณผ์ •
  • ๋ฐ์ดํ„ฐ์˜ ์ด์ƒํ˜„์ƒ์„ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ๊ธฐ๋ฒ•
  • ๋…ผ๋ฆฌ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ์ˆ˜ํ–‰ ์‹œ์ ์—์„œ ๊ณ ๋ ค๋จ

 
 

๐Ÿ”น์ด์ƒํ˜„์ƒ

์ •๊ทœํ™”๋ฅผ ํ•˜์ง€ ์•Š์•„ ๋ฐœ์ƒํ•˜๋Š” ํ˜„์ƒ

  1. ์‚ฝ์ž…์ด์ƒ
  2. ๊ฐฑ์‹ ์ด์ƒ
  3. ์‚ญ์ œ์ด์ƒ

 
 

๐Ÿ”น์ •๊ทœํ™”๋‹จ๊ณ„
 

1) ์ œ 1์ •๊ทœํ™”

  • ๋ชจ๋“  ์†์„ฑ์€ ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•จ
  • ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ์ด ์›์ž์„ฑ์„ ๊ฐ–๋„๋ก ํ…Œ์ด๋ธ”์„ ๋ถ„ํ•ดํ•˜๋Š” ๋‹จ๊ณ„

2) ์ œ 2 ์ •๊ทœํ™”

  • ์ œ 1์ •๊ทœํ™”๋ฅผ ์ง„ํ–‰ํ•œ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ์™„์ „ ํ•จ์ˆ˜ ์ข…์†์„ ๋งŒ๋“ค๋„๋ก ํ…Œ์ด๋ธ”์„ ๋ถ„ํ•ด
  • ์—”ํ„ฐํ‹ฐ์˜ ์ผ๋ฐ˜์†์„ฑ์€ ์ฃผ์‹๋ณ„์ž ์ „์ฒด์— ์ข…์†์ด์–ด์•ผ ํ•œ๋‹ค

3) ์ œ 3 ์ •๊ทœํ™”

  • ์—”ํ„ฐํ‹ฐ์˜ ์ผ๋ฐ˜ ์†์„ฑ ๊ฐ„์—๋Š” ์„œ๋กœ ์ข…์†์ ์ด์ง€ ์•Š๋‹ค
  • ์ดํ–‰์  ์†์„ฑ์„ ์ œ๊ฑฐํ•˜๋„๋ก ํ…Œ์ด๋ธ”์„ ๋ถ„ํ•ด

4) BNCF ์ •๊ทœํ™”

  • ๋ชจ๋“  ๊ฒฐ์ •์ž๊ฐ€ ํ›„๋ณดํ‚ค๊ฐ€ ๋˜๋„๋ก ํ…Œ์ด๋ธ”์„ ๋ถ„ํ•ดํ•˜๋Š” ๊ฒƒ(๊ฒฐ์ •์ž๊ฐ€ ํ›„๋ณดํ‚ค๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์ปฌ๋Ÿผ์— ์ข…์†๋˜๋ฉด ์•ˆ๋จ)

5) ์ œ 4 ์ •๊ทœํ™”

  • ์—ฌ๋Ÿฌ ์ปฌ๋Ÿผ๋“ค์ด ํ•˜๋‚˜์˜ ์ปฌ๋Ÿผ์„ ์ข…์†์‹œํ‚ค๋Š” ๊ฒฝ์šฐ ๋ถ„ํ•ดํ•˜์—ฌ ๋‹ค์ค‘๊ฐ’ ์ข…์†์„ฑ์„ ์ œ๊ฑฐ

6) ์ œ 5 ์ •๊ทœํ™”

  • ์กฐ์ธ์— ์˜ํ•ด์„œ ์ข…์†์„ฑ์ด ๋ฐœ์ƒ๋˜๋Š” ๊ฒฝ์šฐ ๋ถ„ํ•ด

 
 

๐Ÿ”น๋ฐ˜ ์ •๊ทœํ™”

  • ์—ญ์ •๊ทœํ™”(De-Normalization)์˜ ๊ฐœ๋…
  • ์„ฑ๋Šฅ์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ํ—ˆ์šฉ
  • ์„ฑ๋Šฅ์˜ ํ–ฅ์ƒ์„ ํ•ญ์ƒ ๋ณด์ •ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹˜
  • ์กฐํšŒ(SELECT) ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค์ง€๋งŒ, ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ์œ ์—ฐ์„ฑ์€ ๋‚ฎ์•„์ง
  • ๋น„์ •๊ทœํ™”๋Š” ์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Œ์„ ์˜๋ฏธ

 


 
 

โ˜‘๏ธ ์‹ค์Šต ์ธ์ฆ


 

1. Data grip ์„ค์น˜

 

 

 
 
 
 

2. ๋กœ์ปฌ DB ์…‹ํŒ…  

 

 
 


 
 
 
 

๐Ÿ”ฅ ๋ฏธ์…˜


 

  1. ์ฃผ์–ด์ง„ IA(๊ธฐํš ํ”Œ๋กœ์šฐ)์™€ ์™€์ด์–ด ํ”„๋ ˆ์ž„(๋””์ž์ธ ํ”„๋กœํ† ํƒ€์ž…)์„ ๋ณด๊ณ  ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค๊ณ„ํ•ด์˜ค๊ธฐ, ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒฝ์šฐ๋ฅผ ๋‹ค ์ ์šฉํ•ด์„œ ํ•  ๊ฒƒ
  2. ์ด๋ฆ„ ๊ธ€์ž ์ˆ˜ ๋“ฑ ์„ธ๋ถ€์ ์ธ ๋ถ€๋ถ„์€ ์›ํ•˜๋Š” ๋Œ€๋กœ ํ•ด๋„ ๋จ!
  3. ๊ฐ ์ง€์—ญ ๋ณ„๋กœ ๊ฐ€๊ฒŒ๋“ค์ด ์žˆ์œผ๋ฉฐ ๊ฐ€๊ฒŒ๋ฅผ ๋ฐฉ๋ฌธํ•˜๋Š” ๋ฏธ์…˜์„ ํ•ด๊ฒฐํ•˜๋ฉฐ ํฌ์ธํŠธ๋ฅผ ๋ชจ์œผ๋Š” ์„œ๋น„์Šค
    1. ๋ชจ๋“  ์ง€์—ญ๋งˆ๋‹ค 10๊ฐœ์˜ ๋ฏธ์…˜ ํด๋ฆฌ์–ด์‹œ 1000 point ๋ถ€์—ฌ๋กœ ๊ณ ์ •

์ตœ์†Œํ•œ ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž…, ๋ฏธ์…˜, ํ™ˆ ํ™”๋ฉด์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋Š” ์„ค๊ณ„๋ฅผ ํ•ด์•ผํ•จ
 
 
 

์„ค๊ณ„ํ•œ ERD (Draw io ์‚ฌ์šฉ)

 
 
 


 
 

๐Ÿ“ข 1์ฃผ์ฐจ ํ•™์Šต ํ›„๊ธฐ


๐Ÿ˜บ:  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์•ž์œผ๋กœ ํ”„๋กœ์ ํŠธ์— ์žˆ์–ด์„œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด๊ธฐ ๋•Œ๋ฌธ์— ์–ป์–ด๊ฐˆ ์ ์ด ๋งŽ์•˜์Šต๋‹ˆ๋‹ค. ๋˜ ์ด๋•Œ๊นŒ์ง„  Draw.io ๋กœ๋งŒ erd๋ฅผ ์„ค๊ณ„ํ–ˆ์—ˆ๋Š”๋ฐ ์•ž์œผ๋ก  ERDcloud ๋“ฑ ๋‹ค์–‘ํ•œ ํˆด๋„ ์‚ฌ์šฉํ•ด๋ด์•ผ๊ฒ ๋‹ค๊ณ  ๋‹ค์งํ–ˆ์Šต๋‹ˆ๋‹ค. 

 

728x90