CS/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ์ดˆ(๊ด€๊ณ„, ํ‚ค)

1eehyunji 2023. 9. 5. 00:36

๊ด€๊ณ„(relationship)

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํ…Œ์ด๋ธ”์€ ํ•˜๋‚˜๋งŒ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ , ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ํ…Œ์ด๋ธ”๋“ค์€ ์„œ๋กœ์˜ ๊ด€๊ณ„๊ฐ€ ์ •์˜๋˜์–ด ์žˆ๋‹ค. 

์ด๋Ÿฌํ•œ ๊ด€๊ณ„๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ด€๊ณ„ ํ™”์‚ดํ‘œ๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 

1:1 ๊ด€๊ณ„

ํ•˜๋‚˜์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ ํ•œ ๊ฐœ์™€ ์—ฐ๊ฒฐ๋œ ๊ฒฝ์šฐ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, '์œ ์ €' ํ…Œ์ด๋ธ”์˜ '์ด๋ฆ„'์€ ์™ธ๋ž˜ํ‚ค๋กœ, '์œ ์ € ์ด๋ฉ”์ผ' ํ…Œ์ด๋ธ”์˜ '์ด๋ฆ„'๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค. 

๊ฐ ์ด๋ฉ”์ผ์ด ๋‹จ ํ•œ ๋ช…์˜ ์œ ์ €์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ , ๊ทธ ๋ฐ˜๋Œ€๋„ ๋™์ผํ•˜๋‹ค๋ฉด ์œ ์ € ํ…Œ์ด๋ธ”๊ณผ ์œ ์ € ์ด๋ฉ”์ผ ํ…Œ์ด๋ธ”์€ 1:1 ๊ด€๊ณ„์ด๋‹ค.

ํ•˜์ง€๋งŒ, ์ด๋Ÿฌํ•œ 1:1 ๊ด€๊ณ„๋Š” ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ์œ ์ € ํ…Œ์ด๋ธ”์— ์ด๋ฉ”์ผ ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•ด์„œ ์ง์ ‘ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ๋‚˜์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋ž˜๋„ 1:1 ๊ด€๊ณ„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ํ…Œ์ด๋ธ”์„ ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”๋กœ ๋‚˜๋ˆ„์–ด ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋ฅผ ๋” ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

1:N ๊ด€๊ณ„

ํ•˜๋‚˜์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ” ๋ ˆ์ฝ”๋“œ์— ์—ฐ๊ฒฐ๋œ ๊ฒฝ์šฐ์ด๋‹ค. 

์˜ˆ๋ฅผ ๋“ค์–ด, ์–ด๋–ค ์‡ผํ•‘๋ชฐ์—์„œ ํ•œ ์œ ์ €๋‹น ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ƒํ’ˆ์„ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ๋ฅผ 1:N ๊ด€๊ณ„๋ผ ํ•œ๋‹ค.

๋ฌผ๋ก  ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ์ƒํ’ˆ์„ ํ•˜๋‚˜๋„ ๋„ฃ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— O๋„ ํฌํ•จ๋˜๋Š” ํ™”์‚ดํ‘œ๋ฅผ ํ†ตํ•ด ํ‘œํ˜„ํ•œ๋‹ค.

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

 

N:M ๊ด€๊ณ„

์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ์™€ ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ํ•™์ƒ๊ณผ ๊ฐ•์˜์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•œ๋‹ค๋ฉด ์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค. 

ํ•™์ƒ๋„ ๊ฐ•์˜๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋“ค์„ ์ˆ˜ ์žˆ๊ณ , ๊ฐ•์˜๋„ ์—ฌ๋Ÿฌ ๋ช…์˜ ํ•™์ƒ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ N:M ๊ด€๊ณ„๊ฐ€ ๋œ๋‹ค.

์œ„ ๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ ๋ณด๋ฉด ํ•™์ƒ_๊ฐ•์˜ ๋ผ๋Š” ํ…Œ์ด๋ธ”์ด ๋ผ์–ด ์žˆ๋Š”๋ฐ, N:M ๊ด€๊ณ„๋Š” ํ…Œ์ด๋ธ”์„ ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐํ•ด์„œ ๊ตฌ์ถ•ํ•˜์ง€ ์•Š๊ณ  1:N, 1:M์ด๋ผ๋Š” ๊ด€๊ณ„๋ฅผ ๊ฐ–๋Š” ํ…Œ์ด๋ธ” ๋‘ ๊ฐœ๋กœ ๋‚˜๋ˆ ์„œ ์„ค์ •ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ผ์–ด ์žˆ๋Š” ํ…Œ์ด๋ธ”์„ JOIN ํ…Œ์ด๋ธ”์ด๋ผ ํ•œ๋‹ค.

 

ํ‚ค(key)

ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ข€ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ณ  ํ…Œ์ด๋ธ” ์ž์ฒด์˜ ์ธ๋ฑ์Šค๋ฅผ ์œ„ํ•ด ์„ค์ •๋œ ์žฅ์น˜๋กœ ๊ธฐ๋ณธํ‚ค, ์™ธ๋ž˜ํ‚ค, ํ›„๋ณดํ‚ค, ์Šˆํผํ‚ค, ๋Œ€์ฒดํ‚ค๊ฐ€ ์žˆ๋‹ค. 

ํ‚ค๋“ค์€ ์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค.

์Šˆํผํ‚ค๋Š” ์œ ์ผ์„ฑ์ด ์žˆ๋Š” ํ‚ค์ด๊ณ , ๊ทธ ์•ˆ์— ํฌํ•จ๋œ ํ›„๋ณดํ‚ค๋Š” ์ตœ์†Œ์„ฑ๊นŒ์ง€ ๊ฐ–์ถ˜ ํ‚ค์ด๋‹ค. 

๋Œ€์ฒดํ‚ค๋Š”ํ›„๋ณดํ‚ค ์ค‘์—์„œ ๊ธฐ๋ณธํ‚ค๋กœ ์„ ํƒ๋˜์ง€ ๋ชปํ•œ ํ‚ค์ด๋‹ค. 

์œ ์ผ์„ฑ์€ ์ค‘๋ณต๋˜๋Š” ๊ฐ’์ด ์—†๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ณ , ์ตœ์†Œ์„ฑ์€ ํ•„๋“œ๋ฅผ ์กฐํ•ฉํ•˜์ง€ ์•Š๊ณ  ์ตœ์†Œ ํ•„๋“œ๋งŒ ์จ์„œ ํ‚ค๋ฅผ ํ˜•์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. 

 

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

๊ธฐ๋ณธํ‚ค๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ ˆ์ฝ”๋“œ์˜ ์‹๋ณ„์ž๋กœ ์ด์šฉํ•˜๊ธฐ์— ์ ํ•ฉํ•œ ๊ฒƒ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์ž์— ์˜ํ•ด ํ…Œ์ด๋ธ”๋งˆ๋‹ค ์„ ํƒ๋œ ํ›„๋ณดํ‚ค์ด๋‹ค.

์ค„์—ฌ์„œ PK ๋˜๋Š” ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๋ผ๊ณ  ๋งŽ์ด ๋ถˆ๋ฆฐ๋‹ค. 

์œ ์ผ์„ฑ๊ณผ ์ตœ์†Œ์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” ํ‚ค์ด๋‹ค.

๊ธฐ๋ณธํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด ์•ˆ๋œ๋‹ค. ID, NAME ๋ชจ๋‘ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘๋ณต๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋ฏ€๋กœ ๊ธฐ๋ณธํ‚ค๊ฐ€ ๋  ์ˆ˜ ์—†๋‹ค. 

์œ„ ๊ทธ๋ฆผ์—์„œ ID๋Š” ๊ธฐ๋ณธํ‚ค๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ {ID, NAME} ์ด๋ผ๋Š” ๋ณตํ•ฉํ‚ค๋ฅผ ๊ธฐ๋ณธํ‚ค๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ์ตœ์†Œ์„ฑ์„ ๋งŒ์กฑํ•  ์ˆ˜ ์—†๋‹ค. 

๋”ฐ๋ผ์„œ ์œ ์ผ์„ฑ์„ ๋งŒ์กฑํ•˜๊ณ , ์ตœ์†Œ์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” ID ํ•„๋“œ๊ฐ€ ๊ธฐ๋ณธํ‚ค๋กœ ์ฑ„ํƒ๋  ์ˆ˜ ์žˆ๋‹ค. 

 

๊ธฐ๋ณธํ‚ค๋Š” ์ž์—ฐํ‚ค์™€ ์ธ์กฐํ‚ค ์ค‘ ๊ณจ๋ผ์„œ ์„ค์ •ํ•œ๋‹ค.

  • ์ž์—ฐํ‚ค
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ ์ € ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ, ์ด๋ฆ„, ์„ฑ๋ณ„ ๋“ฑ์˜ ์†์„ฑ์ด ์žˆ๋‹ค.
    • ์ด ์ค‘ ์ด๋ฆ„, ์„ฑ๋ณ„ ๋“ฑ์€ ์ค‘๋ณต๋œ ๊ฐ’์ด ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ธฐ๋ณธํ‚ค๋กœ์„œ ๋ถ€์ ์ ˆํ•˜๊ณ  ๋‚จ๋Š” ๊ฒƒ์€ ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ์ด๋‹ค.
    • ์ด์™€ ๊ฐ™์ด ์ค‘๋ณต๋œ ๊ฐ’๋“ค์„ ์ œ์™ธํ•˜๋ฉฐ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ฝ‘๋‹ค๊ฐ€ ๋‚˜์˜ค๋Š” ํ‚ค๋ฅผ '์ž์—ฐํ‚ค'๋ผ ํ•œ๋‹ค.
    • ์ž์—ฐํ‚ค๋Š” ์–ธ์  ๊ฐ€ ๋ณ€ํ•˜๋Š” ์†์„ฑ์„ ๊ฐ€์ง„๋‹ค.
  • ์ธ์กฐํ‚ค
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ ์ € ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ, ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ, ์ด๋ฆ„, ์„ฑ๋ณ„ ๋“ฑ์˜ ์†์„ฑ์ด ์žˆ๋‹ค.
    • ์—ฌ๊ธฐ์— ์ธ์œ„์ ์œผ๋กœ ์œ ์ € ID๋ฅผ ๋ถ€์—ฌํ•˜๊ณ , ์ด๋ฅผ ํ†ตํ•ด ๊ฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์‹๋ณ„์ž๊ฐ€ ์ƒ๊ฒจ๋‚œ๋‹ค.
    • oracle์—์„  sequence, MySQL์—์„  auto increament ๋“ฑ์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.
    • ์ด๋ ‡๊ฒŒ ์ธ์œ„์ ์œผ๋กœ ์ƒ์„ฑํ•œ ํ‚ค๋ฅผ '์ธ์กฐํ‚ค'๋ผ ํ•œ๋‹ค
    • ์ž์—ฐํ‚ค์™€๋Š” ๋‹ฌ๋ฆฌ ๊ฐ’์ด ๋ณ€ํ•˜์ง€ ์•Š์•„์„œ ๋ณดํ†ต ๊ธฐ๋ณธํ‚ค๋Š” ์ธ์กฐํ‚ค๋กœ ์„ค์ •ํ•œ๋‹ค. 

 

์™ธ๋ž˜ํ‚ค(foreign key)

FK๋ผ๊ณ  ๋งŽ์ด ๋ถˆ๋ฆฌ๋ฉฐ, ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค๋ฅผ ๊ทธ๋Œ€๋กœ ์ฐธ์กฐํ•˜๋Š” ๊ฐ’์œผ๋กœ ํ…Œ์ด๋ธ”๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค. 

์™ธ๋ž˜ํ‚ค๋Š” ์ค‘๋ณต์„ ํ—ˆ์šฉํ•œ๋‹ค.

์œ„ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด client ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค์ธ ID๊ฐ€ product ํ…Œ์ด๋ธ”์˜ user_id๋ผ๋Š” ์™ธ๋ž˜ํ‚ค๋กœ ์„ค์ •๋  ์ˆ˜ ์žˆ์Œ์„ ๋ณด์—ฌ์ค€๋‹ค.

 

ํ›„๋ณดํ‚ค(candidate key)

๊ธฐ๋ณธํ‚ค๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ํ›„๋ณด๋“ค์ด๋ฉฐ, ์œ ์ผ์„ฑ๊ณผ ์ตœ์†Œ์„ฑ์„ ๋™์‹œ์— ๋งŒ์กฑํ•œ๋‹ค.

 

๋Œ€์ฒดํ‚ค(alternate key)

ํ›„๋ณดํ‚ค๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ์ผ ๊ฒฝ์šฐ ์–ด๋А ํ•˜๋‚˜๋ฅผ ๊ธฐ๋ณธํ‚ค๋กœ ์ง€์ •ํ•˜๊ณ  ๋‚จ์€ ํ›„๋ณดํ‚ค๋“ค์„ ๋งํ•œ๋‹ค.

 

์Šˆํผํ‚ค(super key)

๊ฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผ์„ฑ์„ ๊ฐ–์ถ˜ ํ‚ค์ด๋‹ค.