๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–‹๏ธ ๊ธฐ์ˆ ์‹ฌํ™”/SQLD

[SQLD๋ฒผ๋ฝ์น˜๊ธฐ] SQL ์ž๊ฒฉ๊ฒ€์ • ์‹ค์ „๋ฌธ์ œ ์˜ค๋‹ต๋…ธํŠธ(1๊ณผ๋ชฉ)

by OR15A 2023. 11. 17.

[ 1๊ณผ๋ชฉ ๋ฐ์ดํ„ฐ๋ชจ๋ธ๋ง์˜ ์ดํ•ด ]

1-1 ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์˜ ์ดํ•ด 

๋ฐ์ดํ„ฐ๋ชจ๋ธ๋ง ์ค‘์š”์„ฑ๊ณผ ์œ ์˜์  : ์ค‘๋ณต, ๋น„์œ ์—ฐ์„ฑ(์—…๋ฌด๋ณ€ํ™”๋กœ ์˜ํ–ฅX), ๋น„์ผ๊ด€์„ฑ(a๊ฐฑ์‹ ์œผ๋กœ b์ž๋™๊ฐฑ์‹ X)

'์‚ฌ์šฉ์ž์ฒ˜๋ฆฌ ํ”„๋กœ์„ธ์Šค'์™€ 'ํ…Œ์ด๋ธ”' ์—ฐ๊ณ„์„ฑ์ด ๋†’์•„์ง€๋ฉด ๋ฐ์ดํ„ฐ๋ชจ๋ธ๋ง ์—…๋ฌด๋ณ€๊ฒฝ์ด ์ทจ๋žตํ•ด์ง€๋ฏ€๋กœ ์—ฐ๊ณ„์„ฑX ๋ถ„๋ฆฌO = ๋น„์œ ์—ฐ์„ฑ

๋ฐ์ดํ„ฐ๋ชจ๋ธ๋ง ์ˆœ์„œ : ๊ฐœ ๋…ผ ๋ฌผ (๊ฐœ๋…-์—…๋ฌด์ค‘์‹ฌ ์ „์‚ฌ์ , ๋…ผ๋ฆฌ-์—…๋ฌด ์ •ํ™•ํžˆ ํ‘œํ˜„, ๋ฌผ๋ฆฌ-์‹ค์ œ DB)

๋ฐ์ดํ„ฐ ๋…๋ฆฝ์„ฑ ์š”์†Œ : ์™ธ ๊ฐœ ๋‚ด (์™ธ๋ถ€์Šคํ‚ค๋งˆ-์‚ฌ์šฉ์ž, ๋‚ด๋ถ€์Šคํ‚ค๋งˆ-๋ชจ๋“ ์‚ฌ์šฉ์ž๊ด€์ , ๋ฌผ๋ฆฌ์Šคํ‚ค๋งˆ-๋ฌผ๋ฆฌ์žฅ์น˜)

๋ฐ์ดํ„ฐ ๋…๋ฆฝ์„ฑ : ๋…ผ๋ฆฌ, ๋ฌผ๋ฆฌ (๋…ผ๋ฆฌ-๋ชจ๋“ ์‚ฌ์šฉ์ž๋ณ€๊ฒฝ์œผ๋กœ ๊ฐœ์ธ์‚ฌ์šฉ์ž ์˜ํ–ฅX, ๋ฌผ๋ฆฌ์žฅ์น˜ ๋ณ€๊ฒฝ๋œ๋‹ค๊ณ  ์‚ฌ์šฉ์ž์Šคํ‚ค๋งˆ ์˜ํ–ฅX)

ERD ์ž‘์„ฑ์ˆœ์„œ : ์—”ํ‹ฐํ‹ฐ ๊ทธ๋ฆฐ๋‹ค -> ๋ฐฐ์น˜ -> ๊ด€๊ณ„์„ค์ • -> ๊ด€๊ณ„๋ช… ๊ธฐ์ˆ  -> ์ฐธ์—ฌ๋„ ๊ธฐ์ˆ  -> ํ•„์ˆ˜์—ฌ๋ถ€ 

์—”ํ‹ฐํ‹ฐ ๋ถ„๋ฅ˜(์œ ๋ฌดํ˜•) : ์œ  ๊ฐœ ์‚ฌ (์œ ํ˜•, ๊ฐœ๋…, ์‚ฌ๊ฑด)

์—”ํ‹ฐํ‹ฐ ๋ถ„๋ฅ˜(๋ฐœ์ƒ์‹œ์ ) : ๊ธฐ ์ค‘ ํ–‰ (๊ธฐ๋ณธ, ์ค‘์‹ฌ, ํ–‰์œ„)

์†์„ฑ ๋ถ„๋ฅ˜(ํŠน) : ๊ธฐ ์„ค ํŒŒ (๊ธฐ๋ณธ, ์„ค๊ณ„, ํŒŒ์ƒ)

์†์„ฑ ๋ช…์นญ ๋ถ€์—ฌ : ๊ฐ ์—”ํ‹ฐํ‹ฐ๋ณ„๋กœ ๋™์ผํ•œ ์†์„ฑ๋ช…X

UML : ์—ฐ๊ด€/์˜์กด ๊ตฌ๋ถ„O.   ERD : ์กด์žฌ/ํ–‰์œ„ ๊ตฌ๋ถ„ X ๋‹จ์ผํ™”O

์‹๋ณ„์ž ๋ถ„๋ฅ˜ : ์Šค์Šค๋กœ ์ƒ์„ฑ์—ฌ๋ถ€(๋‚ด๋ถ€/์™ธ๋ถ€), ๋Œ€ํ‘œ์„ฑ(์ฃผ์‹๋ณ„์ž/๋ณด์กฐ์‹๋ณ„์ž), ์†์„ฑ๊ฐœ์ˆ˜(๋‹จ์ผ/๋ณตํ•ฉ), ๋Œ€์ฒด์—ฌ๋ถ€(๋ณธ์งˆ/์ธ์กฐ)

๊ด€๊ณ„ํ‘œ๊ธฐ๋ฒ• : ๊ด€๊ณ„๋ช…, ๊ด€๊ณ„์ฐจ์ˆ˜, ์„ ํƒ์‚ฌ์–‘

๋‘ ์—”ํ‹ฐํ‹ฐ ์‚ฌ์ด์˜ ๊ด€๊ณ„ ์ฒดํฌ ์‚ฌํ•ญ : ๊ด€์‹ฌ์žˆ๋Š” ์—ฐ๊ด€๊ทœ์น™ ์กด์žฌ? ์ •๋ณด ์กฐํ•ฉ ๋ฐœ์ƒ? ๊ด€๊ณ„์—ฐ๊ฒฐ ๋™์‚ฌ? ๊ทœ์น™ ์„œ์ˆ ?

์‹๋ณ„์ž ๊ด€๊ณ„ : ๋ถ€๋ชจ์—”ํ‹ฐํ‹ฐ ์‹๋ณ„์ž ์ƒ์†๋˜์–ด์„œ ์ž์‹์ด ์‹๋ณ„์ž๋กœ ์”€

๋น„์‹๋ณ„์ž ๊ด€๊ณ„ : ๋ผ์ดํ”„์‚ฌ์ดํด ๋‹ค๋ฅผ ๋•Œ, ๋”ฐ๋กœ๊ฐ€ ๋” ์œ ๋ฆฌ, ๊ฐ๊ฐ ์—”ํ‹ฐํ‹ฐ ๊ฐ–๊ณ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ๋ณ„๊ด€๊ณ„ ํ†ตํ•ฉ ์‹œ

 

 


1-2 ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๊ณผ ์„ฑ๋Šฅ

์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ๊ณ ๋ ค์‚ฌํ•ญ : ์ •๊ทœํ™” -> [DB์šฉ๋Ÿ‰ ์‚ฐ์ • -> ํŠธ๋žœ์žญ์…˜ ์œ ํ˜• ํŒŒ์•…] -> ์•ž์— ๋”ฐ๋ผ ๋ฐ˜์ •๊ทœํ™” -> ๋ฌผ๋ฆฌ์  ๋ชจ๋ธ๋ง ํ• ์ˆ˜์žˆ๋Š”๊ฑฐ ๋‹คํ•ด๋ณด๊ธฐ(PK/FK์กฐ์ •, ์ด๋ ฅ๋ชจ๋ธ์กฐ์ •, ์Šˆํผ/์„œ๋ธŒํƒ€์ž…์กฐ์ •) -> ์„ฑ๋Šฅ๊ด€์ ์—์„œ ๊ฒ€์ฆ

๋ฐ์ดํ„ฐ๋ชจ๋ธ์€ ์„ฑ๋Šฅ ํŠœ๋‹ํ•˜๋ฉด์„œ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Œ

์„ฑ๋Šฅ๊ณ ๋ ค ๋ฐ์ดํ„ฐ๋ชจ๋ธ๋ง์€ Rework ๋น„์šฉ ์ตœ์†Œํ™”

1์ฐจ ์ •๊ทœํ™” : ์ปฌ๋Ÿผ, ์†์„ฑ ์ค‘๋ณต ์ œ๊ฑฐ๋กœ ์›์ž์„ฑ ํ™•๋ณด, ๊ธฐ๋ณธํ‚ค๋ฅผ ์„ค์ •

2์ฐจ ์ •๊ทœํ™” : ํ•จ์ˆ˜์ข…์†์„ฑ์œผ๋กœ PK๋กœ ์ธํ•ด ์•Œ์ˆ˜์žˆ๋Š” ์ปฌ๋Ÿผ์„ ๋นผ๊ธฐ = ๋ถ€๋ถ„ ํ•จ์ˆ˜์ข…์†์„ฑ ์ œ๊ฑฐ (๊ธฐ๋ณธํ‚ค๊ฐ€ 2๊ฐœ ์ด์ƒ์˜ ์†์„ฑ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ์„ ๋•Œ)

3์ฐจ ์ •๊ทœํ™” : ์ผ๋ฐ˜ ์ปฌ๋Ÿผ๊ฐ„์— ํ•จ์ˆ˜์ข…์†์„ฑ ์ œ๊ฑฐ = ์ดํ–‰ ํ•จ์ˆ˜์ข…์†์„ฑ ์ œ๊ฑฐ  (ํ…Œ์ด๋ธ” ์ชผ๊ฐœ๊ธฐ)

๋ฐ˜์ •๊ทœํ™” ํŒ๋‹จ์š”์†Œ : ๋ฐ˜์ •๊ทœํ™” ์ •๋ณด์— ๋Œ€ํ•œ ์žฌํ˜„์˜ ์ ์‹œ์„ฑ์œผ๋กœ ํŒ๋‹จ. (ํƒ์ƒ‰ ๋Œ€์ƒ ๋ฐ์ดํ„ฐํฌํ‚ค๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋ง ํŒŒํ‹ฐ์…˜ ๋“ฑ ๋‹ค๋ฅธ๋ฐฉ๋ฒ• ์žˆ์Œ, ์ด์ „ ์ดํ›„ ์œ„์น˜ ๋ ˆ์ฝ”๋“œ ์ ‘๊ทผ์€ window function์œผ๋กœ ๊ฐ€๋Šฅ)

์นผ๋Ÿผ์— ๋Œ€ํ•œ ๋ฐ˜์ •๊ทœํ™” ๊ธฐ๋ฒ• : ์ค‘๋ณต์นผ๋Ÿผ์ถ”๊ฐ€๋กœ ์กฐ์ธ๊ฐ์†Œ, ํŒŒ์ƒ์นผ๋Ÿผ์ถ”๊ฐ€๋กœ ๋ฏธ๋ฆฌ๊ณ„์‚ฐ, ์ตœ์‹ ๊ฐ’์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ด๋ ฅํ…Œ์ด๋ธ” ๊ธฐ๋Šฅ์นผ๋Ÿผ ์ถ”๊ฐ€

ํ…Œ์ด๋ธ” ์•ก์„ธ์Šค ์„ฑ๋Šฅ ํ–ฅ์ƒ ๋ฐฉ๋ฒ• :  ํŒŒํ‹ฐ์…”๋‹

๋ถ„์‚ฐํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค(๋ฐฑ์—…์‚ฌ์ดํŠธ, ์‹ค์‹œ๊ฐ„์—…๋ฌดํŠน์„ฑ) <-> Grobal Single Instance(GSI)