29_Oct_2021 ๐Ÿฐ ์—˜๋ฆฌ์Šค AI ํŠธ๋ž™ TIL: ํ”„๋กœ์ ํŠธ๋กœ ๋ฐฐ์šฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

์œ ํ™˜์ตยท2021๋…„ 10์›” 30์ผ
0

Alexander Yoo์˜ Back-end Engineering

๋ชฉ๋ก ๋ณด๊ธฐ
2/6

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

๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉํ•  ๋ชฉ์ ์œผ๋กœ ์ฒด๊ณ„ํ™”ํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์˜ ์ง‘ํ•ฉ์ด๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ถ„๋ฅ˜

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

EX) MariaDB, ์—‘์…€ ํ˜•ํƒœ

  • ๊ฐ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค
  • ์Šคํ‚ค๋งˆ๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  • ๊ตฌ์กฐ์ ์œผ๋กœ ์•ˆ์ •์ ์ด์ง€๋งŒ ์œ ์—ฐํ•˜์ง€ ๋ชปํ•œ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

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

EX) MongoDB (JSON ํ˜•ํƒœ)

  • ๊ฐ ํ…Œ์ด๋ธ” ๊ฐ„ ๊ด€๊ณ„๊ฐ€ ์—†๋‹ค
  • ์Šคํ‚ค๋งˆ ๋˜ํ•œ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค
  • ์œ ์—ฐ์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ๊ตฌ์กฐ ๊ฒฐ์ •์ด ์–ด๋ ต๋‹ค.

์ƒํ™ฉ๊ณผ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

๋ฐ์ดํ„ฐ๋ชจ๋ธ๋ง์ด๋ž€?

ํšจ์œจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ผˆ๋Œ€๋ฅผ ์„ธ์šฐ๋Š” ์ž‘์—…์ด๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋ธ๋ง ๋‹จ๊ณ„

์š”๊ตฌ ์‚ฌํ•ญ ์ •๋ฆฌ

๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋– ํ•œ ํ˜•ํƒœ, ์–ด๋–ค ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ง€ ์ •๋ฆฌํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค.

๊ฐœ๋…์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ์„ค๊ณ„

ํ•ต์‹ฌ ๊ฐœ์ฒด๋ฅผ ์ฐพ๊ณ , ๊ฐ ๊ฐœ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ •๋ฆฌํ•œ๋‹ค.

  • ๊ด€๋ จ์„ฑ์ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ผ๋ฆฌ ๋ฌถ๊ณ , ํ•ต์‹ฌ ๊ฐœ์ฒด๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ด€๊ณ„๋ฅผ ํ˜•์„ฑํ•œ๋‹ค.

๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ์„ค๊ณ„

์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋ธ๋ง ๋‹จ๊ณ„์ด๋‹ค.

  • ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์™€ ๊ตฌ๋ถ„๋˜๋Š” ์œ ์ผ ํ‚ค ํ˜น์€ ๊ธฐ๋ณธํ‚ค ์„ค์ • ๋“ฑ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผ ์„ค์ •ํ•œ๋‹ค.
    ex) ERD ๊ทธ๋ฆผ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ด€๊ณ„๋ฅผ ๊ทธ๋ ค๋ณธ๋‹ค.

๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ์„ค๊ณ„

๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ปดํ“จํ„ฐ์— ์ €์žฅ๋  ์ง€ ์„ค๊ณ„ํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค.

  • ๋ฌผ๋ฆฌ์  ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ณ , ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค.
    ex) ๊ฐ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์— ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ง€ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„.

์ฝ”๋”๋žœ๋“œ ๊ณต์œ  ํ‚ค๋ณด๋“œ ์‚ฌ์—…์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • ํ‚ฅ๋ณด๋“œ ์ •๋ณด
  • ๋Œ€์—ฌ ์ •๋ณด
  • ๊ณ ๊ฐ ์ •๋ณด

๋Œ€์—ฌ ์ •๋ณด๋Š” ํ‚ฅ๋ณด๋“œ ์ •๋ณด์™€ ๊ณ ๊ฐ ์ •๋ณด์™€ ์—ฐ๊ฒฐ๋œ ๊ด€๊ณ„๋ฅผ ๊ฐ™๋Š” ์ •๋ณด์ด๋‹ค. ๋”ฐ๋ผ์„œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ณต์œ  ํ‚ฅ๋ณด๋“œ ์šด์˜ ๋ฐฉ์นจ: ๋Œ€์—ฌ (์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„)

  1. ์›ํ™œํ•œ ๋Œ€์—ฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๋Œ€์—ฌ ์ •๋ณด๋Š” ๋Œ€์—ฌํ•œ ํ‚ฅ๋ณด๋“œ์˜ ID, ๋Œ€์—ฌํ•œ ๊ณ ๊ฐ์˜ ID, ๋Œ€์—ฌํ•ด๊ฐ„ ๋‚ ์งœ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
  2. ๋Œ€์—ฌํ•œ ํ‚ฅ๋ณด๋“œ์˜ ID๋Š” ์‹ค์ œ ์šด์˜(์†Œ์œ )ํ•˜๊ณ  ์žˆ๋Š” ํ‚ฅ๋ณด๋“œ ID๋งŒ ์ž…๋ ฅ ๋  ์ˆ˜ ์žˆ๋‹ค.
  3. ๋Œ€์—ฌํ•œ ๊ณ ๊ฐ์˜ ID๋Š” ์‹ค์ œ ๊ฐ€์ž…ํ•œ ๊ณ ๊ฐ์˜ ID๋งŒ ์ž…๋ ฅ ๋  ์ˆ˜ ์žˆ๋‹ค.
  4. ๋Œ€์—ฌ ์ผ์ž๋Š” ๋…„-์›”-์ผ ์‹œ:๋ถ„ ์œผ๋กœ ์ž…๋ ฅ๋˜๋ฉฐ ๊ณ ๊ฐ์€ ํ‚ฅ๋ณด๋“œ ๋Œ€์—ฌ ํ›„ 1๋ถ„ ์ด๋‚ด ๋‹ค์‹œ ๋Œ€์—ฌํ•  ์ˆ˜ ์—†๋‹ค. ๋‹จ, ๊ณ ๊ฐ์ด ๋Œ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ฅ๋ณด๋“œ์˜ ๋Œ€์ˆ˜์—๋Š” ์ œํ•œ์ด ์—†๋‹ค.

ํ…Œ์ด๋ธ”๋กœ ๋งŒ๋“  ์˜ˆ์‹œ

๊ตฌ๋ถ„ํƒ€์ž…์˜ˆ์‹œ
๋Œ€์—ฌ์ผ์ž๋ฌธ์žํ˜•2020-10-01 11:00
๋Œ€์—ฌํ•œ ๊ณ ๊ฐ ID๋ฌธ์žํ˜•elice_rabbit
๋Œ€์—ฌํ•œ ํ‚ฅ๋ณด๋“œ ID๋ฌธ์žํ˜•E01

๊ณต์œ  ํ‚ฅ๋ณด๋“œ ์šด์˜ ๋ฐฉ์นจ: ํ‚ฅ๋ณด๋“œ (์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„)

  1. ํ‚ฅ๋ณด๋“œ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ชจ๋“  ํ‚ฅ๋ณด๋“œ๋Š” ID, ์ด๋ฏธ์ง€ ์ •๋ณด, ์ข…๋ฅ˜ ์ •๋ณด, ์—ฐ์‹ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  2. ํ‚ฅ๋ณด๋“œ์˜ ID๋Š” ์ค‘๋ณต์ด ๋˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค.
  3. ํ‚ฅ๋ณด๋“œ์˜ ์ด๋ฏธ์ง€๋Š” 50์ž ๋ฏธ๋งŒ์˜ URL๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ ์—ฐ์‹๊ณผ ์ข…๋ฅ˜๊ฐ€ ๊ฐ™์€ ํ‚ฅ๋ณด๋“œ์ผ ๊ฒฝ์šฐ ๋™์ผํ•œ ์ด๋ฏธ์ง€๋ฅผ ํ™œ์šฉํ•œ๋‹ค.
  4. ํ‚ฅ๋ณด๋“œ์˜ ์ข…๋ฅ˜๋Š” ๋ธŒ๋ ˆ์ดํฌ์˜ ์œ„์น˜์— ๋”ฐ๋ผ ๋‘ ๊ฐ€์ง€(๋’ท๋ฐ”ํ€ด์— ์œ„์น˜ - Aํ˜•, ํ•ธ๋“ค์— ์œ„์น˜ - Bํ˜•)๋กœ ๊ตฌ๋ถ„๋˜๋ฉฐ ์ค‘๋ณต์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  5. ํ‚ฅ๋ณด๋“œ์˜ ์—ฐ์‹์€ ํ‚ฅ๋ณด๋“œ์˜ ์ƒ์‚ฐ๋…„๋„๋กœ 4์ž๋ฆฌ ์ˆซ์ž(YYYY)๋กœ ํ‘œํ˜„๋˜๋ฉฐ ์ค‘๋ณต์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ…Œ์ด๋ธ”๋กœ ๋งŒ๋“  ์˜ˆ์‹œ

๊ตฌ๋ถ„ํƒ€์ž…์˜ˆ์‹œ
ํ‚ฅ๋ณด๋“œ ID๋ฌธ์žํ˜•E01
ํ‚ฅ๋ณด๋“œ ์ข…๋ฅ˜๋ฌธ์žํ˜•A
ํ‚ฅ๋ณด๋“œ ์ด๋ฏธ์ง€๋ฌธ์žํ˜•https://..
ํ‚ฅ๋ณด๋“œ ์—ฐ์‹์ˆซ์žํ˜•2019

๊ณต์œ  ํ‚ฅ๋ณด๋“œ ์šด์˜ ๋ฐฉ์นจ: ํ‚ฅ๋ณด๋“œ (์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„)

  1. ๊ณ ๊ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ชจ๋“  ๊ณ ๊ฐ์€ ID, ์ด๋ฆ„, ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  2. ๊ณ ๊ฐID๋Š” ์˜๋ฌธ + ํŠน๋ฌธ + ์ˆซ์ž๋กœ ์กฐํ•ฉ๋˜๋ฉฐ ๊ธธ์ด๋Š” 15์ž ๋ฏธ๋งŒ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ๋˜ํ•œ ID๋Š” ์ค‘๋ณต์ด ๋˜๊ฑฐ๋‚˜ ์ˆ˜์ •๋  ์ˆ˜ ์—†๋‹ค.
  3. ๊ณ ๊ฐ์˜ ์ด๋ฆ„์€ 10์ž ๋ฏธ๋งŒ์˜ ํ•œ๊ธ€๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋™๋ช…์ด์ธ์„ ๊ณ ๋ คํ•˜์—ฌ ์ค‘๋ณต์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  4. ๊ณ ๊ฐ์˜ ์ „ํ™”๋ฒˆํ˜ธ๋Š” 15์ž ๋ฏธ๋งŒ์˜ ๋ฌธ์ž(*-****-****)๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
  5. ๋Œ€์—ฌ ์ค‘์ธ ํ‚ฅ๋ณด๋“œ๊ฐ€ ์—†์–ด์•ผ ํšŒ์› ํƒˆํ‡ด(๊ณ ๊ฐ ์ •๋ณด ์‚ญ์ œ)๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ…Œ์ด๋ธ”๋กœ ๋งŒ๋“  ์˜ˆ์‹œ

๊ตฌ๋ถ„ํƒ€์ž…์˜ˆ์‹œ
๊ณ ๊ฐ ID๋ฌธ์žํ˜•elice_rabbit
์ด๋ฆ„๋ฌธ์žํ˜•์—˜๋ฆฌ์Šค ํ† ๋ผ
์ „ํ™”๋ฒˆํ˜ธ๋ฌธ์žํ˜•010-1234-5678

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋„ค์ด๋ฐ ๊ทœ์น™

์œ ์ง€๋ณด์ˆ˜์™€ ์˜๋ฏธ์˜ ๋ช…ํ™•์„ฑ์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ๋„ค์ด๋ฐ ๊ทœ์น™์„ ์„ค์ •ํ•œ๋‹ค.

๊ณตํ†ต ๊ทœ์น™

  1. ์ค„์ž„๋ง ์‚ฌ์šฉ์€ ์ตœ์†Œํ™”ํ•œ๋‹ค. (๋‹จ, ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋ฒ”์šฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ค„์ž„๋ง์„ ์‚ฌ์šฉํ•œ๋‹ค.)
  • kb_img (X) -> kickboard_image(O)
  • tb_KickboardInfo(๊ฐ€๋Šฅ) info: information์˜ ์ค„์ž„๋ง.

ํ…Œ์ด๋ธ” ๋„ค์ด๋ฐ ๊ทœ์น™

  1. ํ…Œ์ด๋ธ” ๋ช…์„ ์ž‘์„ฑํ•  ๋•Œ๋Š” ํŒŒ์Šค์นผ ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • kickboard_rental (X) -> KickboardRental(O)
  • customer_info (X) -> CustomerInfo(O)
  1. ํ…Œ์ด๋ธ”, ๋ทฐ(View)์ž„์„ ํ•œ๋ˆˆ์— ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ…Œ์ด๋ธ” ๋ช… ์•ž์—๋Š”
    'tb', 'v'๋ฅผ ๋ถ™์ธ๋‹ค.
  • tb_KickboardRental (ํ‚ฅ๋ณด๋“œ ๋Œ€์—ฌ์™€ ๊ด€๋ จ๋œ ํ…Œ์ด๋ธ”)
  • v_ KickboardInfoAnalysis (๋ทฐ: ๋ฐ์ดํ„ฐ ๋ถ„์„์„ ์œ„ํ•ด ํ•„์š”ํ•œ ์ •๋ณด๋งŒ ๋ชจ์•„ ๋‘” ๊ฐ€์ƒ ํ…Œ์ด๋ธ”)

์†์„ฑ ๋„ค์ด๋ฐ ๊ทœ์น™

  1. ์†์„ฑ ๋ช…์„ ์ž‘์„ฑํ•  ๋•Œ๋Š” ์Šค๋„ค์ดํฌ ํ‘œ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•œ๋‹ค.
  • customer_id
  • customer_tel
  1. ์œ ์ผํ‚ค, ์™ธ๋ž˜ํ‚ค ๋“ฑ์€ ํ•œ ๋ˆˆ์— ์•Œ์•„ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์†์„ฑ ๋ช… ์•ž์— 'pk', 'fk'๋ฅผ ๋ถ™์ธ๋‹ค.
  • pk_kickboard_id
  • fk_pk_customer_id

๋Œ€์—ฌ ํ…Œ์ด๋ธ” (๋…ผ๋ฆฌ์  ๋ชจ๋ธ๋ง)

๊ตฌ๋ถ„ํƒ€์ž…์˜ˆ์‹œ
๋Œ€์—ฌ์ผ์žvarchar(20)rental_date
๋Œ€์—ฌํ•œ ๊ณ ๊ฐ IDvarchar(15)customer_id
๋Œ€์—ฌํ•œ ํ‚ฅ๋ณด๋“œ IDvarchar(5)kickboard_id
  • varchar๋Š” ๋ฌธ์žํ˜• ํƒ€์ž…์„ ์˜๋ฏธ(๊ฐ€๋ณ€ ๋ฌธ์ž์—ด)ํ•˜๋ฉฐ ๋’ค์— ๊ด„ํ˜ธ ์•ˆ์˜ ์˜๋ฏธ๋Š” ํ•ด๋‹น ๋ฌธ์ž์—ด์˜ ํฌ๊ธฐ(byte)๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

๊ณ ๊ฐ ํ…Œ์ด๋ธ” (๋…ผ๋ฆฌ์  ๋ชจ๋ธ๋ง)

๊ตฌ๋ถ„ํƒ€์ž…์˜ˆ์‹œ
ํ‚ฅ๋ณด๋“œ IDvarchar(5)kickboard_id
ํ‚ฅ๋ณด๋“œ ์ข…๋ฅ˜varchar(5)customer_kind
ํ‚ฅ๋ณด๋“œ ์ด๋ฏธ์ง€varchar(50)kickboard_img
ํ‚ฅ๋ณด๋“œ ์—ฐ์‹intkickboard_year
  • int๋Š” ์ •์ˆ˜ํ˜• ํƒ€์ž…์„ ์˜๋ฏธํ•˜๋ฉฐ, ๊ด„ํ˜ธ๋กœ ํฌ๊ธฐ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค
๊ตฌ๋ถ„ํƒ€์ž…์˜ˆ์‹œ
๊ณ ๊ฐ IDvarchar(15)customer_id
์ด๋ฆ„varchar(20)customer_name
์ „ํ™”๋ฒˆํ˜ธvarchar(15)customer_tel
  • varchar์—์„œ ํ•œ๊ธ€์˜ ๊ฒฝ์šฐ ํ•œ ๊ธ€์ž ๋‹น 2byte๊ฐ€ ํ•„์š”ํ•˜๋ฏ€๋กœ 20์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

์œ ์ผํ‚ค๋ž€?

key

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํŠœํ”Œ(๋ ˆ์ฝ”๋“œ, ํ–‰)๊ฐ„ ๊ตฌ๋ถ„์„ ์œ„ํ•œ ๊ฐ’(์†์„ฑ)์ด๋‹ค
-> ์œ ์ผํ‚ค, ๋ณตํ•ฉํ‚ค, ์™ธ๋ž˜ํ‚ค ๋“ฑ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค.

์œ ์ผํ‚ค(Primary key)

ํ…Œ์ด๋ธ”์—์„œ ํŠœํ”Œ(๋ ˆ์ฝ”๋“œ, ํ–‰)์„ ๊ตฌ๋ถ„์ง€์–ด์ฃผ๋Š” ๊ณ ์œ  ์‹๋ณ„ ๊ฐ’(์†์„ฑ)

  • ์œ ์ผํ‚ค ๊ฐ’์€ ์ค‘๋ณต ๋  ์ˆ˜ ์—†์œผ๋ฉฐ, NULL ๊ฐ’ ๋˜ํ•œ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

์œ ์ผํ‚ค ์„ ์ • ํŒ
์œ ์ผ ํ‚ค ์„ ์ •์‹œ์—๋Š” ์ค‘๋ณต์ด ๋˜์ง€ ์•Š๋Š” ์ค‘์š” ์†์„ฑ์„ ์œ ์ผํ‚ค๋กœ ์„ ํƒํ•œ๋‹ค.

์œ ์ผํ‚ค์˜ ์„ ์–ธ

CREATE TABLE 'ํ…Œ์ด๋ธ” ๋ช…' {
	'์†์„ฑ๋ช…' ํƒ€์ž…,
    '์†์„ฑ๋ช…2' ํƒ€์ž…,
    PRIMARY KEY('์œ ์ผํ‚ค๋กœ ์‚ฌ์šฉํ•  ์†์„ฑ๋ช…');
}

๋ณตํ•ฉํ‚ค(Composite Key)๋ž€?

๋ฌธ์ œ
Primary ํ‚ค ๊ฐ’๊ณผ ๋™์ผํ•œ ๊ฐ’์„ ํ•œ๋ฒˆ ๋” ํ…Œ์ด๋ธ”์— ์ฃผ์ž…ํ•œ๋‹ค๋ฉด ์œ ์ผํ‚ค ์ค‘๋ณต ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

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

-> ๋ˆ„๊ฐ€, ์–ธ์ œ ํ‚ฅ๋ณด๋“œ๋ฅผ ๋นŒ๋ ค ๊ฐ”๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€์—ฌ ์ผ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ณตํ•ฉํ‚ค๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.
--> ๊ณ ๊ฐ ID๊ฐ€ ์ค‘๋ณต ๋˜์–ด๋„ ๋˜ ๋‹ค๋ฅธ ์†์„ฑ์ธ ๋Œ€์—ฌ ์ผ์ž๊ฐ€ ๋‹ฌ๋ผ ์„œ๋กœ ๋‹ค๋ฅธ ํ–‰์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

๋ณตํ•ฉํ‚ค ์„ ์–ธ

CREATE TABLE 'ํ…Œ์ด๋ธ” ๋ช…' {
	'์†์„ฑ๋ช…' ํƒ€์ž…,
    '์†์„ฑ๋ช…2' ํƒ€์ž…,
    ...
}
PRIMARY KEY(`๋ณตํ•ฉํ‚ค๋กœ ์‚ฌ์šฉํ•  ์†์„ฑ๋ช…1`,`๋ณตํ•ฉํ‚ค๋กœ ์‚ฌ์šฉํ•  ์†์„ฑ๋ช…2`)

์œ ์ผํ‚ค์— ๋ณต์ˆ˜ ๊ฐœ์˜ ์†์„ฑ๋ช…์„ ๋„ฃ์–ด ๋ณตํ•ฉํ‚ค๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.

์™ธ๋ž˜ํ‚ค๋ž€?

ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์ž…๋ ฅํ•˜๋ ค ํ–ˆ์„ ๋•Œ, ์‹ค์ˆ˜๋กœ ๋‹ค๋ฅด๊ฒŒ ์ถ”๊ฐ€ํ•˜๋ฉด ์ถ”ํ›„ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

์™ธ๋ž˜ํ‚ค(Foreign Key)๋Š” ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ํ‚ค์™€ ์—ฐ๊ฒฐ์„ ํ•ด์ฃผ๋Š” ํ‚ค์ด๋ฉฐ, ์ฐธ์กฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ™œ์šฉํ•œ๋‹ค.

  • ์ฐธ์กฐ์˜ ๋ฌด๊ฒฐ์„ฑ: ์™ธ๋ž˜ํ‚ค ๊ฐ’์ด ์ฐธ์กฐ ์ค‘์ธ ํ…Œ์ด๋ธ”์˜ ๊ฐ’๊ณผ ์ผ๊ด€์„ฑ์„ ๊ฐ€์ง€๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

์ฝ”๋”๋žœ๋“œ ํ‚ฅ๋ณด๋“œ ๋Œ€์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฒฝ์šฐ, ๊ณ ๊ฐ์˜ ID์— ๋Œ€ํ•ด ๋”ฐ๋กœ ํ…Œ์ด๋ธ”์„ ๊ตฌ์„ฑํ•˜๊ณ , ๊ณ ๊ฐ ํ…Œ์ด๋ธ”์˜ '๊ณ ๊ฐID' ์†์„ฑ์„ ์ฐธ์กฐํ•˜๋Š” ์™ธ๋ž˜ํ‚ค๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.

-> ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ํ–‰ ์ค‘ ์™ธ๋ž˜ํ‚ค์ธ '๊ณ ๊ฐID'์˜ ๋‚ด์šฉ์ด ๊ณ ๊ฐ ํ…Œ์ด๋ธ”(๊ธฐ๋ณธํ‚ค ์ฐธ์กฐ)์— ์žˆ์ง€ ์•Š์€ ๋‚ด์šฉ์ด๋ฏ€๋กœ ์ถ”๊ฐ€๋˜์ง€ ์•Š๋Š”๋‹ค.

์™ธ๋ž˜ํ‚ค(Foreign Key) ์„ ์–ธ

CREATE TABLE 'ํ…Œ์ด๋ธ” ๋ช…' {
	'์†์„ฑ๋ช…' ํƒ€์ž…,
    '์†์„ฑ๋ช…2' ํƒ€์ž…,
    ...
    FOREIGN KEY ('์™ธ๋ž˜ํ‚ค๋กœ ์‚ฌ์šฉํ•  ์†์„ฑ ๋ช…') 
    REFERENCES '์ฐธ์กฐํ•˜๋Š” ์†์„ฑ์ด ์žˆ๋Š” ํ…Œ์ด๋ธ”' ('์ฐธ์กฐํ•  ์†์„ฑ๋ช…')
}
profile
์‚ฌ์šฉ์ž์˜ ํŽธ์˜๋ฅผ ๋” ์ƒ๊ฐํ•˜๊ณ  ํŽธ์•ˆํ•œ UI/UX ๊ฐœ๋ฐœ์„ ๊ฟˆ๊พธ๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ง€๋ง์ƒ์ž…๋‹ˆ๋‹ค.

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