๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Data Base) ๋ฐ์ดํ„ฐ (Data) ๊ด€์ฐฐ์ด๋‚˜ ์ธก์ •์„ ํ†ตํ•ด ์ˆ˜์ง‘๋œ ์‚ฌ์‹ค์ด๋‚˜ ๊ฐ’.์ˆ˜์น˜๋‚˜ ์ŠคํŠธ๋ง ๋“ฑ์˜ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (DB: Database) ํ•œ ์กฐ์ง์˜ ์—ฌ๋Ÿฌ ์‘์šฉ์‹œ์Šคํ…œ์ด ๊ณต์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์†Œ์˜ ์ค‘๋ณต์œผ๋กœ ํ†ตํ•ฉ, ์ €์žฅ๋œ ์šด์˜๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ. ํ†ตํ•ฉ(integrated) ์›์น™์ ์œผ๋กœ๋Š” ๋˜‘๊ฐ™์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ตœ์†Œ์˜ ์ค‘๋ณต(Minimal Redundancy) / ํ†ต์ œ๋œ ์ค‘๋ณต (Controlled Redundancy) ์ €์žฅ(stored) ์ปดํ“จํ„ฐ๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ €์žฅ ๋งค์ฒด์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ์šด์˜(operational) ์–ด๋–ค ์กฐ์ง์˜ ๊ณ ์œ  ๊ธฐ๋Šฅ ์ˆ˜ํ–‰์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ๊ณต์šฉ(shared) ์กฐ์ง์˜ ์—ฌ๋Ÿฌ ์‘์šฉ ์‹œ์Šคํ…œ๋“ค์ด ๊ณต๋™์œผ๋กœ ์ƒ์„ฑ, ์œ ์ง€, ์ด์šฉํ•˜๋Š” ๊ณต๋™์˜ ๋ฐ์ดํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ (DBS: Database sy.. ๋”๋ณด๊ธฐ
์ด์ƒํ˜„์ƒ(Anomaly) ์ด์ƒํ˜„์ƒ(Anomaly)์ด์ƒํ˜„์ƒ์—๋Š” ์‚ฝ์ž…์ด์ƒ, ์ˆ˜์ •์ด์ƒ, ์‚ญ์ œ์ด์ƒ์ด ์žˆ๋‹ค. ์‚ฝ์ž…์ด์ƒ๋‚ด๊ฐ€ ์›ํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ์‚ฝ์ž…ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ.์˜ˆ๋ฅผ๋“ค์–ด, ์‚ฌ์› ์‚ฌ์›๋ฒˆํ˜ธ ์ด๋ฆ„ ๊ธ‰์—ฌ ํŒ€์ฝ”๋“œ ํŒ€๋ช… (NOT NULL) 001 ๊ผฌ๋ถ์ด 2,000 A ๊ธฐํšํŒ€ 002 ํ”ผ์นด์ธ„ 3,000 !!! ํŒ€์ด ์•„์ง ์•ˆ์ •ํ•ด์กŒ์–ด๋„, ๊ผญ ์ž…๋ ฅ์„ ํ•ด์•ผํ•˜๋ฉด ์‚ฝ์ž…์ด์ƒ. ์‹ ์ž…์‚ฌ์› ํ”ผ์นด์ธ„๊ฐ€ ๋“ค์–ด์™”์ง€๋งŒ ์•„์ง ๋ถ€์„œ๊ฐ€ ์ •ํ•ด์ง€์ง€ ์•Š์•˜์„ ๋•Œ, ์‚ฌ์› ํ…Œ์ด๋ธ”์— ํ”ผ์นด์ธ„๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ถ€์„œ๊นŒ์ง€ ์ž…๋ ฅํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ. ์ˆ˜์ •์ด์ƒ๋‚ด๊ฐ€ ์›ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๊นŒ์ง€ ์ˆ˜์ •ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ. ์‚ฌ์› ์‚ฌ์›๋ฒˆํ˜ธ ์ด๋ฆ„ ๊ธ‰์—ฌ ํŒ€์ฝ”๋“œ ํŒ€๋ช… 001 ๊ผฌ๋ถ์ด 2,000 A ๊ธฐํšํŒ€ -> ๊ต์œกํŒ€ 002 ํ”ผ์นด์ธ„ 3,000 A ๊ธฐํšํŒ€ -> ๊ต์œกํŒ€ ํ”ผ์นด์ธ„์˜ ๋ถ€์„œ๋ฅผ ๊ต์œกํŒ€์œผ๋กœ ์ˆ˜์ •ํ•  ๋•Œ, ๊ผฌ๋ถ์ด์˜ ํŒ€๊นŒ์ง€ ์ˆ˜์ •๋˜๋Š” ๊ฒฝ์šฐ.. ๋”๋ณด๊ธฐ
๋ฐ˜์ •๊ทœํ™” (De-Normalization) ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•œ ๋ฐ์ดํ„ฐ๋ชจ๋ธ๋ง ์ˆ˜ํ–‰๋ฐฉ๋ฒ• 1. ๋ฐ์ดํ„ฐ๋ชจ๋ธ๊ตฌ์กฐ์— ์˜ํ•œ ์„ฑ๋Šฅํ–ฅ์ƒ ์ •๊ทœํ™” ๋ฐ˜์ •๊ทœํ™” ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๋‹จ์ˆœํ™” 2. ๋Œ€์šฉ๋Ÿ‰ ํŠน์„ฑ์„ ๊ณ ๋ คํ•œ ์„ฑ๋Šฅํ–ฅ์ƒ ํ…Œ์ด๋ธ” ์ˆ˜์ง/์ˆ˜ํ‰ ๋ถ„ํ•  ์Šˆํผํƒ€์ž… / ์„œ๋ธŒํƒ€์ž… ๊ณ ๋ ค ์ด๋ ฅ๋ชจ๋ธ 3. ์ธ๋ฑ์Šค ํŠน์„ฑ์„ ๊ณ ๋ คํ•œ ์„ฑ๋Šฅํ–ฅ์ƒน PK๊ตฌ์„ฑ FK๊ตฌ์„ฑ ๋ฐ์ดํ„ฐํƒ€์ž… ํŠน์„ฑ์„ ์ด์šฉ ํšจ์œจ์ ์ธ ์ฑ„๋ฒˆ ๋ฐฉ๋ฒ• ์„ ํƒ ๋ฐ˜์ •๊ทœํ™” (De-Normalization) ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ํ†ตํ•ฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ด๋‹ค. ์ •๊ทœํ™”์™€ ๋ฐ˜์ •๊ทœํ™”๋Š” Trade off ๊ด€๊ณ„์— ์žˆ๋‹ค. ์ •๊ทœํ™”๋ฅผ ํ•˜๋ฉด ์ •ํ•ฉ์„ฑ๊ณผ ๋ฐ์ดํ„ฐ๋ฌด๊ฒฐ์„ฑ์ด ๋ณด์žฅ๋œ๋‹ค. ๋ฐ˜๋ฉด, ํ…Œ์ด๋ธ”์ด ๋ณต์žกํ•ด์ง€๊ณ  ์„ฑ๋Šฅ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ์— ๋”ฐ๋ผ ์ž…๋ ฅ(Create), ์ˆ˜์ •(Update), ์‚ญ์ œ(Delete)์˜ ์„ฑ๋Šฅ์€ ํ–ฅ์ƒ๋˜๊ณ  ์กฐํšŒ(Read)์˜ ๊ฒฝ์šฐ ๋‚˜๋น ์งˆ์ˆ˜๋„ ์žˆ๊ณ  ์ข‹์•„์งˆ ์ˆ˜๋„ .. ๋”๋ณด๊ธฐ
์ •๊ทœํ™”(Nomalization) ์ •๊ทœํ™”(Nomalization)๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ์—์„œ ์ •๊ทœํ™”๋ž€ ์ค‘๋ณต์„ ์—†์•  ์ด์ƒํ˜„์ƒ์„ ์ œ๊ฑฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งํ•œ๋‹ค. ์ •๊ทœํ™”๋ฅผ ํ†ตํ•ด ์ด์ƒํ˜„์ƒ์„ ์ œ๊ฑฐํ•˜๋ฉด ์•ˆ์ •์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.๊ทธ๋ฆฌ๊ณ  ๋ฐ˜ ์ •๊ทœํ™”๋ž€ ์ •๊ทœํ™”๋œ ๋ฐ์ดํ„ฐ๋ชจ๋ธ์„ ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅํ–ฅ์ƒ์„ ์œ„ํ•ด ํ†ตํ•ฉ(์˜๋„์ ์œผ๋กœ ์ค‘๋ณต์„ ํ—ˆ์šฉ)ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งํ•œ๋‹ค 1์ฐจ ์ •๊ทœํ™” ๋ณต์ˆ˜์˜ ์†์„ฑ๊ฐ’์„ ๊ฐ€์ง„ ๊ฒฝ์šฐ ๋ณ„๋„์˜ ํ…Œ์ด๋ธ”(;์—”ํ„ฐํ‹ฐ)๋กœ ๋ถ„๋ฆฌํ•œ๋‹ค. ์ฃผ ์‹๋ณ„์ž์— ๋Œ€ํ•œ ์›์ž์„ฑ(Atomic Value)๋ฅผ ํ™•๋ณดํ•˜๋Š” ๊ณผ์ •. ํ•™์ƒ_๊ณผ๋ชฉ ํ•™์ƒ๋ฒˆํ˜ธ ์ด๋ฆ„ ๊ณผ๋ชฉ๋ฒˆํ˜ธ ๊ณผ๋ชฉ์ด๋ฆ„ ์ด๋ผ๋ฉด, ํ•™์ƒ ํ•™์ƒ๋ฒˆํ˜ธ ์ด๋ฆ„ ๊ณผ๋ชฉ ๊ณผ๋ชฉ๋ฒˆํ˜ธ ๊ณผ๋ชฉ์ด๋ฆ„ ์œผ๋กœ ๋ถ„๋ฆฌ. 1์ฐจ ์ •๊ทœํ™”๋ฅผ ๋งˆ์นœ ์ƒํƒœ๋ฅผ 1nf, 1์ฐจ์ •๊ทœํ˜•์ด๋ผ ๋ถ€๋ฆ„. 2์ฐจ ์ •๊ทœํ™” ๋ถ€๋ถ„ ์ข…์† ์†์„ฑ(PDA: Partial Dependency Attribute)์„ ๋ณ„๋„์˜ ํ…Œ์ด๋ธ”(;์—”ํ„ฐ.. ๋”๋ณด๊ธฐ