TIL 10 Data Base

CastleQยท2021๋…„ 5์›” 20์ผ
0
post-thumbnail

DataBase์˜ ์˜๋ฏธ

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

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์— ์ €์žฅ๋œ ์ •๋ณด ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ณดํ†ต ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(DBMS)๋กœ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ์™€ DBMS๋Š” ์—ฐ๊ด€๋œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค๊ณผ ํ•จ๊ป˜ '๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ'์œผ๋กœ ์ผ์ปฌ์–ด์ง€๋ฉฐ, ๋” ์งง๊ฒŒ๋Š” '๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค'๋ผ๊ณ  ํ†ต์นญ๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค

  • Application์—์„œ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š”
    ๋ณด์กด์ด ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ข…๋ฃŒํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋˜ ๋ฐ์ดํ„ฐ๋“ค์€ ๋‹ค์‹œ ์ฝ์–ด ๋“ค์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    ๋”ฐ๋ผ์„œ, ๋ฐ์ดํ„ฐ๋ฅผ ์˜ค๋žœ ๊ธฐ๊ฐ„ ์ €์žฅ ๋ฐ ๋ณด์กด ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ์ผ๋ฐ˜์ ์œผ๋กœ database์—๋Š” ํฌ๊ฒŒ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(RDBMS)์™€ "NoSQL"๋กœ ๋ช…์นญ๋˜๋Š” ๋น„๊ด€๊ณ„ํ˜•(Non-relational) database๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๐Ÿ’ก๐Ÿ“Œ ์ •๋ฆฌํ•ด๋ณด์ž๋ฉด ! ๐Ÿ“Œ๐Ÿ’ก
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ •๋ณด ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ๊ณต๊ฐ„์ด๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(DBMS)๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.
์™œ๋ƒํ•˜๋ฉด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์ƒ ์กด์žฌํ•˜๋Š”๋ฐ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ญ์ƒ ๋ณด์กดํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
๊ทธ๋ ‡๊ธฐ์— ์‹œ์Šคํ…œ์„ ํ†ตํ•œ ์ €์žฅ๊ณผ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

DataBase๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š”?

Access(์ ‘๊ทผ์„ฑ)

  1. ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๊ณณ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ๊ฒ€์ƒ‰ ๋ฐ ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.
  4. ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์˜ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•ด ๋ณ€๊ฒฝ์ด ์žˆ์„ ๋•Œ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

Integrity(๋ฌด๊ฒฐ์„ฑ)

ACID(Atomicity, Consistency, Isolation, Durability)

  1. ์›์ž์„ฑ(Atomicity)์€ ํŠธ๋žœ์žญ์…˜๊ณผ ๊ด€๋ จ๋œ ์ž‘์—…๋“ค์ด ๋ถ€๋ถ„์ ์œผ๋กœ ์‹คํ–‰๋˜๋‹ค๊ฐ€ ์ค‘๋‹จ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜๋Š” ๋Šฅ๋ ฅ์ž…๋‹ˆ๋‹ค.

  2. ์ผ๊ด€์„ฑ(Consistency)์€ ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰์„ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒํ•˜๋ฉด ์–ธ์ œ๋‚˜ ์ผ๊ด€์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  3. ๊ณ ๋ฆฝ์„ฑ(Isolation)์€ ํŠธ๋žœ์žญ์…˜์„ ์ˆ˜ํ–‰ ์‹œ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์˜ ์—ฐ์‚ฐ ์ž‘์—…์ด ๋ผ์–ด๋“ค์ง€ ๋ชปํ•˜๋„๋ก ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํŠธ๋žœ์žญ์…˜ ๋ฐ–์— ์žˆ๋Š” ์–ด๋–ค ์—ฐ์‚ฐ๋„ ์ค‘๊ฐ„ ๋‹จ๊ณ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  4. ์ง€์†์„ฑ(Durability)์€ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋œ ํŠธ๋žœ์žญ์…˜์€ ์˜์›ํžˆ ๋ฐ˜์˜๋˜์–ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋ฌด๊ฒฐ์„ฑ์ด๋ž€ ์‚ฌ์ „์  ์˜๋ฏธ๋กœ ๊ฒฐํ•จ์ด๋‚˜ ํ ์ด ์—†๋‹ค๋Š” ๋œป์ด๋‹ค.
์œ„์— ์ •์˜๋œ ์ผ๋ ฌ์˜ ๋ฒ•์น™๋“ค๋กœ ์ธํ•ด DataBase๋Š” ๋ฌด๊ฒฐ์„ฑ์„ ๋ˆ๋‹ค.
๋งŒ์•ฝ์— ๋‚ด๊ฐ€ ์ €์žฅํ•ด๋†“์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ผ๊ด€์„ฑ ์—†์ด ์ž์œ ์ž์žฌ๋กœ ์›€์ง์ธ๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฝ์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.
์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์„ ์‚ฌ๋žŒ์ด ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š”๊ฒŒ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ์—ญํ™œ์ด๋ผ ์ƒ๊ฐํ•œ๋‹ค.

ํŠธ๋žœ์žญ์…˜(Transaction)

  • ํŠธ๋žœ์žญ์…˜์€ ์ผ๋ จ์˜ ์ž‘์—…๋“ค์ด ๋งˆ์น˜ ํ•˜๋‚˜์˜ ์ž‘์—…์ฒ˜๋Ÿผ ์ทจ๊ธ‰๋˜์–ด์„œ ๋ชจ๋‘ ๋‹ค ์„ฑ๊ณตํ•˜๊ฑฐ๋‚˜ ์•„๋‹ˆ๋ฉด ๋ชจ๋‘ ๋‹ค ์‹คํŒจํ•˜๋Š”๊ฑธ ์ด์•ผ๊ธฐ ํ•ฉ๋‹ˆ๋‹ค.(ACID๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ ฌ์˜ ์ž‘์—…์„ ํ•˜๋‚˜๋กœ ์ทจ๊ธ‰ํ•ด ์‹คํ–‰ํ•˜๋Š”๊ฒŒ ๊ฐ€๋Šฅํ•˜๋‹ค.)

Security(๋ณด์•ˆ)

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

โ—๏ธ ๋ฐ”๋กœ ์œ„์— ๋ฐ์ดํ„ฐ๋Š” ๋ณด์•ˆ์ด ์ข‹์•„์„œ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ ์–ด ๋†“์•˜์ง€๋งŒ
์‚ฌ์‹ค RDMBS(๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ)์— ๋น„ํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ๋งŽ์€ ๋ณด์•ˆ์„ ์ œ๊ณตํ•˜์ง€๋Š” ์•Š๊ณ 
๋ฐ์ดํ„ฐ๋ฅผ ์ •๊ทœํ™” ํ•  ์ˆ˜ ์—†์–ด ๋†’์€ ์ค‘๋ณต์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜๋„ ์žˆ๋Š” ์ทจ์•ฝ์ ์ด ์žˆ๋‹ค. โ—๏ธ

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(RDBMS, Relational DataBase Management System)

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์— ๊ธฐ์ดˆ๋ฅผ ๋‘” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์„ ๋งํ•œ๋‹ค.

  • ex) MySQL, Postgres, Oracle DB

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋กœ ์ƒํ˜ธ๊ด€๋ จ์„ฑ์„ ๊ฐ€์ง„ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋œปํ•จ.

๋ชจ๋“  ๋ฐ์ดํ„ฐ๋“ค์€ 2์ฐจ์› ํ…Œ์ด๋ธ”๋กœ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ฐ ํ…Œ์ด๋ธ”์€ ์ปฌ๋Ÿผ(column)๊ณผ row(๋กœ์šฐ)๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

  • ์ปฌ๋Ÿผ์€ ํ…Œ์ด๋ธ”์˜ ๊ฐ ํ•ญ๋ชฉ์„ ๋œปํ•˜๊ณ 
  • ๋กœ์šฐ๋Š” ๊ฐ ํ•ญ๋ชฉ๋“ค์˜ ์‹ค์ œ ๊ฐ’๋“ค์„ ์ด์•ผ๊ธฐ ํ•œ๋‹ค.
    ๋กœ์šฐ๋Š” ๊ณ ์œ ์˜ (Primary Key)๋ผ๋Š” ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ Primary Key๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ๋กœ์šฐ๋ฅผ ์ฐพ๊ฑฐ๋‚˜ ์ธ์šฉํ•œ๋‹ค.

๊ฐ ํ…Œ์ด๋ธ”์€ ์„œ๋กœ ์ƒํ˜ธ๊ด€๋ จ์„ฑ์„ ๊ฐ€์ง€๊ณ  ์„œ๋กœ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋‹ค.

One To One

ํ…Œ์ด๋ธ” A์˜ ๋กœ์šฐ์™€ ํ…Œ์ด๋ธ” B์˜ ๋กœ์šฐ๊ฐ€ ์ •ํ™•ํžˆ ์ผ๋Œ€์ผ ๋งค์นญ์ด ๋˜๋Š” ๊ด€๊ณ„ = one to one ๊ด€๊ณ„

One To Many

ํ…Œ์ด๋ธ” A์˜ ๋กœ์šฐ๊ฐ€ ํ…Œ์ด๋ธ” B์˜ ์—ฌ๋Ÿฌ ๋กœ์šฐ์™€ ์—ฐ๊ฒฐ์ด ๋˜๋Š” ๊ด€๊ณ„ = one to many ๊ด€๊ณ„

๊ฐ ๊ณ ๊ฐ์€ ์—ฌ๋Ÿฌ ์ œํ’ˆ์„ ๊ตฌ๋งคํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ตฌ๋งค๋œ ์ œํ’ˆ์˜ ์ฃผ์ธ์€ ์˜ค์ง ํ•œ ๊ณ ๊ฐ ๋ฟ์ด๋‹ค - one to many

Many To Many

ํ…Œ์ด๋ธ” A์˜ ์—ฌ๋Ÿฌ ๋กœ์šฐ๊ฐ€ ํ…Œ์ด๋ธ” B์˜ ์—ฌ๋Ÿฌ ๋กœ์šฐ์™€ ์—ฐ๊ฒฐ์ด ๋˜๋Š” ๊ด€๊ณ„๋ฅผ many to many ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ฑ…์€ ์—ฌ๋Ÿฌ ์ž‘๊ฐ€์— ์˜ํ•ด ์“ฐ์ผ ์ˆ˜ ์žˆ๊ณ  ์ž‘๊ฐ€๋“ค์€ ์—ฌ๋Ÿฌ ์ฑ…์„ ์“ธ ์ˆ˜ ์žˆ๋‹ค - many to many

ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•˜๋Š” ์ด์œ 

ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ๋ชจ๋“  ์ •๋ณด๋ฅผ ๋„ฃ์œผ๋ฉด ๋™์ผํ•œ ์ •๋ณด๋“ค์ด ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์ค‘๋ณต๋˜์–ด ์ €์žฅ๋œ๋‹ค. (์ €์žฅ๊ณต๊ฐ„์˜ ๋‚ญ๋น„)

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

์ถœ์ฒ˜
์˜ค๋ผํด ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€
https://www.futurelearn.com/info/courses/introduction-to-databases-and-sql/0/steps/75849
https://m.blog.naver.com/cjhol2107/221758915414

profile
DONE IS BETTER THAN PERFECT

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