DB ์„ค๊ณ„์˜ ์ค‘์š”์„ฑ๊ณผ 3๋‹จ๊ณ„ ์„ค๊ณ„ ํ”„๋กœ์„ธ์Šค

2025. 10. 7. 20:00ใ†Database

๋ฐ˜์‘ํ˜•

์™œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„๊ฐ€ ์ค‘์š”ํ•œ๊ฐ€?

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„๋Š” ์ง‘์„ ์ง“๊ธฐ ์ „์— ์„ค๊ณ„๋„๋ฅผ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

์•„๋ฌด๋ฆฌ ์ข‹์€ ์žฌ๋ฃŒ์™€ ๊ธฐ์ˆ ์ด ์žˆ์–ด๋„ ์„ค๊ณ„๋„ ์—†์ด ์ง‘์„ ์ง“๋Š”๋‹ค๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ธฐ ๋งˆ๋ จ์ด๋‹ค.

์ฒด๊ณ„์ ์ธ ์„ค๊ณ„ ์—†์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๋ฉด ์ฒ˜์Œ์—๋Š” ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์„์ง€ ๋ชฐ๋ผ๋„,

์„œ๋น„์Šค๊ฐ€ ๋ณต์žกํ•ด์งˆ์ˆ˜๋ก ๋ฐ์ดํ„ฐ ์ค‘๋ณต, ์„ฑ๋Šฅ ์ €ํ•˜, ์œ ์ง€๋ณด์ˆ˜ ์–ด๋ ค์›€ ๋“ฑ์˜ '๊ธฐ์ˆ  ๋ถ€์ฑ„'๊ฐ€ ์Œ“์ด๊ฒŒ ๋œ๋‹ค.

์ด๋Š” ๋‚˜์ค‘์— ๋” ํฐ ๋น„์šฉ๊ณผ ์‹œ๊ฐ„์„ ์š”๊ตฌํ•˜๊ฒŒ ๋œ๋‹ค.

์ข‹์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐœ๋…์  ์„ค๊ณ„, ๋…ผ๋ฆฌ์  ์„ค๊ณ„, ๋ฌผ๋ฆฌ์  ์„ค๊ณ„๋ผ๋Š” 3๋‹จ๊ณ„ ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค.

์ด ๊ณผ์ •์—์„œ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ  ๋ฌด๊ฒฐ์„ฑ์„ ๋†’์ด๋Š” '์ •๊ทœํ™”'๋ฅผ ์ ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

์ž˜ ์„ค๊ณ„๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ์˜ ๋ณ€ํ™”์—๋„ ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ๋Š” ํŠผํŠผํ•œ ๊ธฐ๋ฐ˜์ด ๋˜์–ด์ค€๋‹ค.



์ž˜๋ชป๋œ ์„ค๊ณ„๊ฐ€ ๊ฐ€์ ธ์˜ค๋Š” ๋ฌธ์ œ๋“ค

1. ๋ฐ์ดํ„ฐ ์ค‘๋ณต

๋™์ผํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ๊ณณ์— ์ค‘๋ณต ์ €์žฅ๋˜๋ฉด์„œ ์ €์žฅ ๊ณต๊ฐ„์ด ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋‚ญ๋น„๋œ๋‹ค.

2. ์ˆ˜์ • ์ด์ƒ (Update Anomaly)

ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ณณ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด ๊ณผ์ •์—์„œ ์ผ๋ถ€๊ฐ€ ๋ˆ„๋ฝ๋˜๋ฉด ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

3. ์‚ฝ์ž… ์ด์ƒ (Insertion Anomaly)

์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ถˆํ•„์š”ํ•œ ์ •๋ณด๊นŒ์ง€ ํ•จ๊ป˜ ์ž…๋ ฅํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค.

4. ์‚ญ์ œ ์ด์ƒ (Deletion Anomaly)

ํŠน์ • ์ •๋ณด๋ฅผ ์‚ญ์ œํ–ˆ์„ ๋ฟ์ธ๋ฐ, ์œ ์ง€๋˜์–ด์•ผ ํ•  ๋‹ค๋ฅธ ์ค‘์š”ํ•œ ์ •๋ณด๊นŒ์ง€ ์—ฐ์‡„์ ์œผ๋กœ ์‚ญ์ œ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค.

5. ์„ฑ๋Šฅ ์ €ํ•˜

๊ฑฐ๋Œ€ํ•œ ํ…Œ์ด๋ธ”์—์„œ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ ์ฟผ๋ฆฌ ์†๋„๊ฐ€ ํ˜„์ €ํžˆ ๋А๋ ค์ง„๋‹ค.

6. ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ ์ฆ๊ฐ€

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



๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์˜ 3๋‹จ๊ณ„

 



1๋‹จ๊ณ„: ๊ฐœ๋…์  ์„ค๊ณ„ (Conceptual Design)

๊ฑด๋ฌผ์˜ ์ „์ฒด์ ์ธ ๋ชจ์Šต๊ณผ ๊ฐ ๊ณต๊ฐ„์˜ ๋ฐฐ์น˜๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์Šค์ผ€์น˜ํ•˜๋Š” ๋‹จ๊ณ„๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

๊ฐœ๋…์  ์„ค๊ณ„๋Š” ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ์ถ”์ƒ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ณ  ์ดํ•ด๊ด€๊ณ„์ž๋“ค๊ณผ ์›ํ™œํ•˜๊ฒŒ ์†Œํ†ตํ•˜๊ธฐ ์œ„ํ•œ ๋‹จ๊ณ„๋‹ค. ์ฃผ๋กœ ERD (Entity-Relationship Diagram) ๋กœ ํ‘œํ˜„๋˜๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์งˆ๋ฌธ์— ๋‹ตํ•œ๋‹ค.

  • ๋‹ค๋ฃจ์–ด์•ผ ํ•  ๋ฐ์ดํ„ฐ๋Š” ๋ฌด์—‡์ธ๊ฐ€ (Entity)
  • ๊ฐ ๋ฐ์ดํ„ฐ๋“ค์ด ์„œ๋กœ ์–ด๋–ค ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ๋Š”๊ฐ€ (Relationship)

 

2๋‹จ๊ณ„: ๋…ผ๋ฆฌ์  ์„ค๊ณ„ (Logical Design)

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

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

  • ๊ฐœ๋… ๋ชจ๋ธ์˜ ๊ฐ ์š”์†Œ๋ฅผ ์–ด๋–ค ํ…Œ์ด๋ธ”(Table) ๊ตฌ์กฐ๋กœ ํ‘œํ˜„ํ•  ๊ฒƒ์ธ๊ฐ€
  • ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ๋ง‰๊ณ  ๊ด€๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ์ •๊ทœํ™” ๊ทœ์น™์„ ์ ์šฉํ•  ๊ฒƒ์ธ๊ฐ€

 

3๋‹จ๊ณ„: ๋ฌผ๋ฆฌ์  ์„ค๊ณ„ (Physical Design)

๋…ผ๋ฆฌ์  ์„ค๊ณ„์—์„œ ๋งŒ๋“  ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ๋ฅผ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ํŠน์ • RDBMS(MySQL, PostgreSQL ๋“ฑ)์˜ ํŠน์„ฑ์— ๋งž๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„๋‹ค.

๋ฌผ๋ฆฌ์  ์„ค๊ณ„๋Š” ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ตœ์ ํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋‹จ๊ณ„๋กœ, ํ…Œ์ด๋ธ” ์ •์˜์„œ๋‚˜ SQL ์Šคํฌ๋ฆฝํŠธ๋กœ ํ‘œํ˜„๋œ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” ๋‹ค์Œ์„ ์„ค๊ณ„ํ•œ๋‹ค.

  • ๊ฐ ์ปฌ๋Ÿผ์— ์–ด๋–ค ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ํ• ๋‹นํ•  ๊ฒƒ์ธ๊ฐ€
  • ์–ด๋–ค ์ปฌ๋Ÿผ์— ์ธ๋ฑ์Šค(Index)๋ฅผ ์„ค์ •ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•  ๊ฒƒ์ธ๊ฐ€
๋ฐ˜์‘ํ˜•