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

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

๋ฐ˜์ •๊ทœํ™” (De-Normalization)

์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•œ ๋ฐ์ดํ„ฐ๋ชจ๋ธ๋ง ์ˆ˜ํ–‰๋ฐฉ๋ฒ•


1. ๋ฐ์ดํ„ฐ๋ชจ๋ธ๊ตฌ์กฐ์— ์˜ํ•œ ์„ฑ๋Šฅํ–ฅ์ƒ

 ์ •๊ทœํ™”

 ๋ฐ˜์ •๊ทœํ™”

 ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๋‹จ์ˆœํ™”


2. ๋Œ€์šฉ๋Ÿ‰ ํŠน์„ฑ์„ ๊ณ ๋ คํ•œ ์„ฑ๋Šฅํ–ฅ์ƒ

 ํ…Œ์ด๋ธ” ์ˆ˜์ง/์ˆ˜ํ‰ ๋ถ„ํ• 

 ์Šˆํผํƒ€์ž… / ์„œ๋ธŒํƒ€์ž… ๊ณ ๋ ค

 ์ด๋ ฅ๋ชจ๋ธ


3. ์ธ๋ฑ์Šค ํŠน์„ฑ์„ ๊ณ ๋ คํ•œ ์„ฑ๋Šฅํ–ฅ์ƒน

 PK๊ตฌ์„ฑ

 FK๊ตฌ์„ฑ

 ๋ฐ์ดํ„ฐํƒ€์ž… ํŠน์„ฑ์„ ์ด์šฉ

 ํšจ์œจ์ ์ธ ์ฑ„๋ฒˆ ๋ฐฉ๋ฒ• ์„ ํƒ




๋ฐ˜์ •๊ทœํ™” (De-Normalization)


์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ํ†ตํ•ฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ด๋‹ค.



์ •๊ทœํ™”์™€ ๋ฐ˜์ •๊ทœํ™”๋Š” Trade off ๊ด€๊ณ„์— ์žˆ๋‹ค.


์ •๊ทœํ™”๋ฅผ ํ•˜๋ฉด ์ •ํ•ฉ์„ฑ๊ณผ ๋ฐ์ดํ„ฐ๋ฌด๊ฒฐ์„ฑ์ด ๋ณด์žฅ๋œ๋‹ค. ๋ฐ˜๋ฉด, ํ…Œ์ด๋ธ”์ด ๋ณต์žกํ•ด์ง€๊ณ  ์„ฑ๋Šฅ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ์— ๋”ฐ๋ผ ์ž…๋ ฅ(Create), ์ˆ˜์ •(Update), ์‚ญ์ œ(Delete)์˜ ์„ฑ๋Šฅ์€ ํ–ฅ์ƒ๋˜๊ณ  ์กฐํšŒ(Read)์˜ ๊ฒฝ์šฐ ๋‚˜๋น ์งˆ์ˆ˜๋„ ์žˆ๊ณ  ์ข‹์•„์งˆ ์ˆ˜๋„ ์žˆ๋‹ค.

๋ฐ˜ ์ •๊ทœํ™”๋ฅผ ํ•˜๋ฉด ํ…Œ์ด๋ธ”์ด ๋‹จ์ˆœํ™”๋˜๋ฉฐ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜๋Š” ๋ฐ˜๋ฉด, ์ •ํ•ฉ์„ฑ๊ณผ ๋ฐ์ดํ„ฐ๋ฌด๊ฒฐ์„ฑ์ด ๋ณด์žฅ๋˜์ง€ ์•Š์„ ์ˆ˜์žˆ๋‹ค. ๋ฐ˜ ์ •๊ทœํ™”๋Š” ์˜๋„์ ์œผ๋กœ ์ค‘๋ณต์„ ๋งŒ๋“ค์–ด ๊ฒ€์ƒ‰(Read) ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค. ํ•˜์ง€๋งŒ ์†์„ฑ์ด ๊ฐ๊ธฐ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์— ์ค‘๋ณต๋˜์–ด ๋‚˜ํƒ€๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ์ž…๋ ฅ(Create), ์ˆ˜์ •(Update), ์‚ญ์ œ(Delete)์˜ ์„ฑ๋Šฅ์€ ๋‚ฎ์•„์ง„๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ๋ฒจ์—์„œ ๊ผญ ํ•ด๋‹น ์†์„ฑ์— ํฌํ•จ๋œ ๋ชจ๋“  ํ…Œ์ด๋ธ”์— ํŠธ๋žœ์žญ์…˜์„ ๋ณด๋‚ด์•ผ ํ•œ๋‹ค.




๋ณธ๊ฒฉ์ ์ธ ๋ฐ˜ ์ •๊ทœํ™” ๋ฐฉ์‹์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ ํ•˜๊ธฐ ์ „์— ๋””์ง€ํ„ธ ๋””๋ฐ”์ด์Šค(ํ•˜๋“œ์›จ์–ด)์˜ ์„ฑ๋Šฅ์„ ์–ด๋–ค์‹์œผ๋กœ ๋ณด์žฅํ•ด ์ฃผ์–ด์•ผํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž.



๋””์Šคํฌ์™€ ๋ฉ”๋ชจ๋ฆฌ(M/M), CPU ํฐ ์†๋„์™€ ๊ฐ€๊ฒฉ ์ฐจ์ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” CPU๊ฐ€ ๊ฐ€์žฅ ๋น ๋ฅด๊ณ  ๋น„์‹ธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋””์Šคํฌ๋Š” ๊ฐ€์žฅ ํฐ ์ €์žฅ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ๋Š๋ฆฌ๋‹ค. ๋””์Šคํฌ์™€ CPU๋Š” 1๋งŒ๋ฐฐ ์ด์ƒ์˜ ์†๋„ ์ฐจ์ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ค‘๊ฐ„์— ์ž๋ฆฌ์žก๊ณ  ์žˆ๋Š”๋ฐ, ๋””์Šคํฌ๊ฐ€ ์žฅ๊ธฐ๊ธฐ์–ต์žฅ์†Œ๋ผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋‹จ๊ธฐ๊ธฐ์–ต์žฅ์†Œ์ด๋‹ค. (๋ฉ”๋ชจ๋ฆฌ์™€ CPU์˜ ์†๋„์ฐจ์ด๋„ ์ปค์„œ ์บ์‹œ๋ผ๋Š” ๋น„์‹ผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ทธ ๊ฐ„๊ทน์„ ๋ณด์™„ํ•œ๋‹ค.)

๋ฉ”๋ชจ๋ฆฌ๋Š” ํ•œ ํŠธ๋žœ์žญ์…˜์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์—์„œ ๊ฐ€์ ธ์™€ CPU ์—ฐ์‚ฐ์ž‘์—…์„ ํ•˜๋Š” ๊ธฐ๊ฐ„๋™์•ˆ ์ €์žฅํ•ด๋†“๋Š”๋‹ค. ๋””์Šคํฌ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํผ์˜ค๋Š” ํšŸ์ˆ˜๋ฅผ ์ค„์ผ์ˆ˜๋ก (์†๋„)๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. 


๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB)๋Š” ์–ด๋””์— ์ €์žฅ๋ ๊นŒ? 


๋‹น์—ฐํžˆ ์žฅ๊ธฐ๊ธฐ์–ต๋งค์ฒด์ธ ๋””์Šคํฌ์— ์ €์žฅ๋˜๋ฉฐ, ๋””์Šคํฌ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํผ์˜ค๋Š” ํšŸ์ˆ˜๋ฅผ ์ค„์ด๋ ค๋Š” ๋…ธ๋ ฅ์ด ๋ฐ˜์ •๊ทœํ™”์ด๋‹ค.




ํ…Œ์ด๋ธ” ๋ฐ˜์ •๊ทœํ™” ๋ฐฉ๋ฒ•


1. ํ…Œ์ด๋ธ” ๋ณ‘ํ•ฉ 


- 1:1๊ด€๊ณ„์˜ ํ…Œ์ด๋ธ” ๋ณ‘ํ•ฉ:

๋ณ‘ํ•ฉํ–ˆ์„ ๋•Œ ์ดํ–‰์  ์ข…์†์ด ๋ฐœ์ƒํ•˜๋”๋ผ๋„, ์ž์ฃผ ๋ณ€๊ฒฝ(Update)๋˜๋Š” ์ •๋ณด๊ฐ€ ์•„๋‹ˆ๋ฉฐ ๊ฐ™์ด ์กฐํšŒ(Read)๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค๋ฉด ํ†ตํ•ฉํ•œ๋‹ค.


1:m๊ด€๊ณ„์˜ ํ…Œ์ด๋ธ” ๋ณ‘ํ•ฉ


- ์ˆ˜ํผํƒ€์ž… ์„œ๋ธŒํƒ€์ž… ํ…Œ์ด๋ธ” ๋ณ‘ํ•ฉ


2. ํ…Œ์ด๋ธ” ๋ถ„ํ•  


- ์ˆ˜์ง ๋ถ„ํ•  (column ๋‹จ์œ„): 

ํ•œ ์—”ํ„ฐํ‹ฐ(ํ…Œ์ด๋ธ”)์—์„œ ์ง‘์ค‘ํ™”๋œ ์ผ๋ถ€ ํ•ญ๋ชฉ๋“ค์„ ๋‹ค๋ฅธ ์—”ํ„ฐํ‹ฐ๋กœ ๋ถ„๋ฆฌํ•œ๋‹ค


- ์ˆ˜ํ‰ ๋ถ„ํ•  (recode ๋‹จ์œ„): 

ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ตฌ๊ฐ„๋ณ„(e.g ์›”๋ณ„)๋กœ ๋ฐœ์ƒํ•˜๋Š” ํ•œ ์—”ํ„ฐํ‹ฐ(ํ…Œ์ด๋ธ”)๋ฅผ ๊ตฌ๊ฐ„๋ณ„ ์—”ํ„ฐํ‹ฐ๋กœ ๋ถ„ํ• ํ•œ๋‹ค.

๊ตฌ๊ฐ„๋ณ„๋กœ ์—”ํ„ฐํ‹ฐ๋ฅผ ๋ถ„ํ• ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB)์˜ ์„ฑ๋Šฅ์€ ํ–ฅ์ƒ๋˜๋‚˜ ์ฝ”๋“œ๋ฅผ ์งค ๋•Œ๋Š” ๋น„ํšจ์œจ์ ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๊ทผ๋ž˜ DBMS์—๋Š” ํŒŒํ‹ฐ์…”๋‹์ด๋ผ๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ํ…Œ์ด๋ธ”์„ ๋…ผ๋ฆฌ์ ์œผ๋กœ๋Š” 1๊ฐœ์ธ ํ…Œ์ด๋ธ”์„ ๋ฌผ๋ฆฌ์ ์œผ๋กœ๋Š” N๊ฐœ๋กœ ์ชผ๊ฐœ์„œ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.


3. ํ…Œ์ด๋ธ” ์ถ”๊ฐ€ 


 ์ค‘๋ณต ํ…Œ์ด๋ธ”, ์ง‘๊ณ„ ํ…Œ์ด๋ธ”, ์ด๋ ฅ ํ…Œ์ด๋ธ”, ๋ถ€๋ถ„ ํ…Œ์ด๋ธ” ์ถ”๊ฐ€: ์ค‘๋ณต์›๋ฆฌ์— ์˜ํ•ด ์กฐํšŒ(Read)์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋œ๋‹ค.




์ปฌ๋Ÿผ์˜ ๋ฐ˜์ •๊ทœํ™” ๋ฐฉ๋ฒ•


- ์ค‘๋ณต ์ปฌ๋Ÿผ ์ถ”๊ฐ€:

์ด๋ฏธ ํ…Œ์ด๋ธ” C์—์„œ ํ…Œ์ด๋ธ” A์˜ e์ปฌ๋Ÿผ์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ๊ด€๊ณ„๊ฐ€ ์žˆ์œผ๋‚˜, ์ž์ฃผ ์กฐํšŒ(Read)ํ•˜๋Š” ์ปฌ๋Ÿผ e๋ฅผ ํ…Œ์ด๋ธ” C์—๋„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ ‘๊ทผ ๊ฒฝ๋กœ๋ฅผ ๋‹จ์ถ•์‹œ์ผœ์ค€๋‹ค. 


- ํŒŒ์ƒ ์ปฌ๋Ÿผ ์ถ”๊ฐ€


- Primary Key์— ์˜ํ•œ ์ปฌ๋Ÿผ ์ถ”๊ฐ€


- ์˜ค ์ž…๋ ฅ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ปฌ๋Ÿผ ์ถ”๊ฐ€




๊ด€๊ณ„์˜ ๋ฐ˜์ •๊ทœํ™”


- ๊ด€๊ณ„์ค‘๋ณต:

์ด๋ฏธ Aํ…Œ์ด๋ธ”์—์„œ Cํ…Œ์ด๋ธ”์˜ ์ •๋ณด๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๊ด€๊ณ„๊ฐ€ ์žˆ์Œ์—๋„ ๊ด€๊ณ„๋ฅผ ์ค‘๋ณตํ•˜์—ฌ ์กฐํšŒ(Read) ๊ฒฝ๋กœ๋ฅผ ๋‹จ์ถ•์‹œํ‚จ๋‹ค.