๐Ÿ’ก 3์›” 4์งธ์ฃผ Weekly paper_Prisma

yeonjeongยท2025๋…„ 3์›” 23์ผ

๐Ÿ”– ์›น ์„œ๋น„์Šค์—์„œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

DataBase(DB)

  • ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„๋‘๋Š” ์ €์žฅ์†Œ

1) SQL ๋ฐฉ์‹

  • ๋ฐ์ดํ„ฐ๋“ค์„ ์—‘์…€๊ณผ ๋น„์Šทํ•œ ํ‘œ์— ์ •๋ฆฌํ•ด๋‘๋Š” ๋ฐฉ์‹
  • ํ‘œ ์‚ฌ์ด์— ๊ด€๊ณ„์„ฑ์„ ๋ถ€์—ฌ ๊ฐ€๋Šฅ -> ๊ด€๊ณ„์„ฑ์„ mappingํ•ด์ฃผ๋Š” ORM ์‚ฌ์šฉ
  • Oracle, MySQL, Postgres

2) NoSQL

  • ์„œ๋ฅ˜ ๋ด‰ํˆฌ์— ๋ฌธ์„œ๋ฅผ ๋ชจ์•„๋‘๋Š” ๋ฐฉ์‹
  • ์„œ๋ฅ˜๋ด‰ํˆฌ = ์ปฌ๋ ‰์…˜ -> ODM
  • MongoDB, FireBase

๊ด€๊ณ„ํ˜•/๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

1. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(RDBMS)

  • ํ…Œ์ด๋ธ”๊ณผ ๋กœ์šฐ, ์นผ๋Ÿผ์œผ๋กœ ๊ตฌ์„ฑ
  • ์ •ํ•ด์ง„ ํ‹€ ์•ˆ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌ
  • ๋ฐ์ดํ„ฐ๋“ค ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜
  • ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘๋ณต๋˜๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ฒƒ ๋ฐฉ์ง€ ๊ฐ€๋Šฅ
  • ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์œ ํšจํ•œ ์ •๋ณด ํ™•์ธ ๊ฐ€๋Šฅ

1) ์žฅ์ 

  • ์ง๊ด€์ ์ธ ๋ฐ์ดํ„ฐ ํ‘œํ˜„ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๊ณ , ๊ด€๋ จ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ์— ์‰ฝ๊ฒŒ ์•ก์„ธ์Šค ๊ฐ€๋Šฅ
  • ์ธ๋ฒคํ† ๋ฆฌ ์ถ”์ , ํŠธ๋žœ์žญ์…˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊น… ๋“ฑ ๋Œ€๋Ÿ‰์˜ ์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์กฐ์ง์—์„œ ๋งŽ์ด ์‚ฌ์šฉ
  • ์œ ์—ฐ์„ฑ: ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๊ฑดํŽธํ•˜๊ฒŒ ํ…Œ์ด๋ธ” ์ถ”๊ฐ€, ๊ด€๊ณ„ ์ถ”๊ฐ€, ์—…๋ฐ์ดํŠธ ๋ฐ ์‚ญ์ œ, ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์šฉ์ด
  • ACID ๊ทœ์ • ์ค€์ˆ˜: ACID(์›์ž์„ฑ, ์ผ๊ด€์„ฑ, ๊ฒฉ๋ฆฌ, ๋‚ด๊ตฌ์„ฑ) ์„ฑ๋Šฅ์„ ์ง€์›ํ•˜๋ฉฐ ์˜ค๋ฅ˜, ์‹คํŒจ ๋˜๋Š” ๊ธฐํƒ€ ์ž ์žฌ์  ์˜ค์ž‘๋™์— ๊ด€๊ณ„์—†์ด ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๋ณด์žฅ
  • ์‚ฌ์šฉ ํŽธ์˜์„ฑ: ๊ธฐ์ˆ ์ž๊ฐ€ ์•„๋‹Œ ์‚ฌ์šฉ์ž๋„ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” SQL์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ์‹คํ–‰ ๊ฐ€๋Šฅ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •๊ทœํ™”: ๋ฐ์ดํ„ฐ ์ค‘๋ณด์„ฑ์„ ์ค„์ด๊ณ  ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์ •๊ทœํ™”๋ผ๊ณ  ํ•˜๋Š” ์„ค๊ณ„ ๊ธฐ๋ฒ• ์‚ฌ์šฉ

2) ๋‹จ์ 

  • ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ํ•œ๊ณ„๊ฐ€ ์žˆ์Œ
  • ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ฒ˜๋ฆฌ๊ฐ€ ์–ด๋ ค์›€
  • ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๊ฐ€ ๋ณต์žกํ•ด์งˆ์ˆ˜๋ก ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Œ
  • ํ…Œ์ดํ„ฐ ๋ฒ ์ด์Šค ๋ชจ๋ธ๋ง์ด ๊ฐœ๋ฐœ ์ „์— ์™„๋ฃŒ๋˜์–ด์•ผํ•ด์„œ ๊ฐœ๋ฐœ์†๋„๊ฐ€ ๋”๋ŽŒ์ง

2. ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • ๊ทœ์น™ ๊ธฐ๋ฐ˜์˜ ํ…Œ์ด๋ธ” ํ˜•์‹ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์„ฑXX
  • ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ๊ฐœ๋ณ„ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋ฉฐ ๋ฌธ์„œ ๋˜๋Š” ๋ฆฌ์น˜ ๋ฏธ๋””์–ด ํŒŒ์ผ๊ณผ ๊ฐ™์€ ๋ณต์žกํ•œ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ ์œ ํ˜•์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

1) ์žฅ์ 

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

2) ๋‹จ์ 

  • ์œ ์—ฐ์„ฑ์œผ๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๊ฒฐ์ •์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Œ
  • NoSQL๋งˆ๋‹ค ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„ ์ด์‹์„ฑ์ด ๋‚ฎ์Œ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ปฌ๋ ‰์…˜์ด ๋‹ค์–‘ํ•œ ๊ฒฝ์šฐ ์ˆ˜์ •์‹œ ๋ชจ๋“  ์ปฌ๋ ‰์…˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•ด์•ผํ•จ
  • ๋ฌธ์„œ ์ €์žฅ์— ๋‹จ์œ„ ์š”์†Œ ์ˆ˜์ค€์—์„œ ์„ธ๋ฐ€ํ•œ ๋ณด์•ˆ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Œ

๐Ÿ”– Primary Key์™€ Foreign Key์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

1. Primary Key(PK) ๊ธฐ๋ณธํ‚ค

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

2. Foreign Key(FK) ์™ธ๋ž˜ํ‚ค

  • ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ PK๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์ปฌ๋Ÿผ -> ๊ด€๊ณ„๋ฅผ ๋งŒ๋“œ๋Š” ์ž‘์—…
  • ๋ฐ์ดํ„ฐ๊ฐ€ ์ผ๊ด€๋  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ์—ญํ• 
  • ์™ธ๋ถ€ ํ‚ค๋Š” ํ•œ ํ…Œ์ด๋ธ”์˜ ํ•„๋“œ๋กœ, ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ์„ ๋‚˜ํƒ€๋ƒ„
  • ์™ธ๋ž˜ ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ…Œ์ด๋ธ”์„ ํ•˜์œ„ ์ผ€์ด๋ธ”, ๊ธฐ๋ณธ ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐ ํ…Œ์ด๋ธ”๋˜๋Š” ์ƒ์œ„ ํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ํ•จ
  • ๊ฐ ์™ธ๋ถ€ํ‚ค์™€ ๊ธฐ๋ณธ ํ‚ค๋Š” 1:1 ๊ด€๊ณ„๋กœ ๋งค์นญ -> ๊ธฐ๋ณธ ํ‚ค์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฐ’์ด ์™ธ๋ถ€ํ‚ค์— ์กด์žฌํ•  ์ˆ˜ ์—†์Œ

์ถœ์ฒ˜
https://cloud.google.com/learn/what-is-a-relational-database?hl=ko
https://excited-hyun.tistory.com/112
https://velog.io/@hiy7030/DB-Primary-key%EC%99%80-foreign-key

profile
Backend ๊ฐœ๋ฐœ์ž๋กœ ๊ฑฐ๋“ญ๋‚˜๋Š” ๊ทธ ๋‚ ๊นŒ์ง€ !

0๊ฐœ์˜ ๋Œ“๊ธ€