๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT์ž๊ฒฉ์ฆ ๊ณต๋ถ€/SQLD ์ž๊ฒฉ์ฆ

[SQL ์ „๋ฌธ๊ฐ€] ๊ณผ๋ชฉI. ์ œ2์žฅ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๊ณผ ์„ฑ๋Šฅ

by yunamom 2022. 4. 11.
๋ฐ˜์‘ํ˜•

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป๊ณผ๋ชฉI. ์ œ2์žฅ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๊ณผ ์„ฑ๋Šฅ

โœจ์ œ1์ ˆ ์ •๊ทœํ™”

 


์ œ1์ •๊ทœํ˜•์ด ๊ฐ€์žฅ ์ ์€ ์กฐ๊ฑด, ๊ฐ€์žฅ ์•ฝํ•œ ํ˜•ํƒœ์˜ ์ •๊ทœํ˜•์ด๋ผ ํ•œ๋‹ค. ์‹ค๋ฌด์—์„œ๋Š” BC์ •๊ทœํ˜•๊นŒ์ง€๋งŒ ์‚ฌ์šฉํ•˜๊ณ  4,5 ์ •๊ทœํ˜•์€ ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ์ •๊ทœํ™”(Normalization)
์ œ1์ •๊ทœํ˜• ๋ชจ๋“  ์†์„ฑ์€ ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.
๊ฐ™์€ ์„ฑ๊ฒฉ, ๋‚ด์šฉ ์ปฌ๋Ÿผ์ด ์—ฐ์†๋  ๋•Œ ์ปฌ๋Ÿผ ์ œ๊ฑฐํ…Œ์ด๋ธ” ์ƒ์„ฑ
์ œ2์ •๊ทœํ˜• ์—”ํ„ฐํ‹ฐ์˜ ์ผ๋ฐ˜์†์„ฑ์€ ์ฃผ์‹๋ณ„์ž ์ „์ฒด์— ์ข…์†์ ์ด์–ด์•ผ ํ•œ๋‹ค.
PK ๋ณตํ•ฉํ‚ค ๊ตฌ์„ฑ์ผ ๋•Œ ๋ถ€๋ถ„์  ํ•จ์ˆ˜ ์ข…์† ๊ด€๊ณ„ ํ…Œ์ด๋ธ” ๋ถ„๋ฆฌ
์ œ3์ •๊ทœํ˜• ์—”ํ„ฐํ‹ฐ์˜ ์ผ๋ฐ˜์†์„ฑ ๊ฐ„์—๋Š” ์„œ๋กœ ์ข…์†์ ์ด์ง€ ์•Š๋Š”๋‹ค. ๋งŒ์ผ ๊ณ ๊ฐ์ด ์ด๋ฆ„์„ ๋ฐ”๊ฟ” ๊ณ ๊ฐ๋ช…์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค๋ฉด, ์ฃผ๋ฌธ ์—”ํ„ฐํ‹ฐ์— ๊ณ ๊ฐ๋ช…์„ ์ „๋ถ€ ๊ฐฑ์‹ ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋Š”์ฃผ๋ฌธ๊ณผ๋Š” ์ „ํ˜€ ์—ฐ๊ด€์ด ์—†๋Š” ํŠธ๋žœ์žญ์…˜์ด๋‹ค.
๐Ÿ’ก๊ณ ๊ฐ ์—”ํ„ฐํ‹ฐ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.
๋ฐ˜์ •๊ทœํ™”์™€ ์„ฑ๋Šฅ ๋ฐ˜์ •๊ทœํ™”๋Š” ์ •๊ทœํ™”๋ฅผ ๋ฐ˜๋Œ€๋กœ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์—ญ์ •๊ทœํ™” ๋ผ๊ณ ๋„ ํ•œ๋‹ค.
ํ…Œ์ด๋ธ” ๋ณ‘ํ•ฉ(1:1๊ด€๊ณ„, 1:M๊ด€๊ณ„, ์Šˆํผ/์„œ๋ธŒํƒ€์ž…)
์ •๊ทœํ™”๋Š” ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ์ตœ์†Œํ™”ํ–ˆ๋‹ค๋ฉด, ๋ฐ˜์ •๊ทœํ™”๋Š” ์„ฑ๋Šฅ์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

โœจ์ œ2์ ˆ ๊ด€๊ณ„์™€ ์กฐ์ธ์˜ ์ดํ•ด


๊ด€๊ณ„(Relationship) ๋Š” ์‚ฌ์ „์ ์œผ๋กœ ์ •์˜ํ•˜๋ฉด '์ƒํ˜ธ ์—ฐ๊ด€์„ฑ์ด ์žˆ๋Š” ์ƒํƒœ' ์ด๋‹ค.

 

SQL์—์„œ ๊ด€๊ณ„๋ฅผ ๋งบ๋Š”๋‹ค๋Š” ๊ฑด ์‹๋ณ„์ž๋ฅผ ์ƒ์†ํ•˜๊ณ , ์ƒ์†๋œ ์†์„ฑ์„ ๋งคํ•‘ํ‚ค๋กœ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒฐํ•ฉํ•œ๋‹ค๋Š” ์˜๋ฏธ๋‹ค.

 

์ด๋ฅผ ์กฐ์ธ(Join) ์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋‘ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ ๊ฐ„ ์—ฐ๊ฒฐ๊ณ ๋ฆฌ(๊ต์ง‘ํ•ฉ) ์ด๋ผ๊ณ  ์ดํ•ดํ• ์ˆ˜์žˆ๋‹ค.

๊ณ„์ธตํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ ์ž๊ธฐ ์ž์‹ ์„ ์กฐ์ธํ• ์ˆ˜์žˆ๋‹ค.(Self-Join)
์ƒํ˜ธ ๋ฐฐํƒ€์ (Exclusive-OR) ๊ด€๊ณ„ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ์˜ ๋‹ค๋ฅธ ์—”ํ‹ฐํ‹ฐ์˜ ํ•ฉ์ง‘ํ•ฉ ๊ด€๊ณ„๋ฅผ ๊ฐ–๋Š” ๊ฒƒ

 

โœจ์ œ3์ ˆ ๋ชจ๋ธ์ด ํ‘œํ˜„ํ•˜๋Š” ํŠธ๋žœ์žญ์…˜์˜ ์ดํ•ด


ํŠธ๋žœ์žญ์…˜์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋…ผ๋ฆฌ์  ์—ฐ์‚ฐ๋‹ค์œ„๋‹ค.

 

๊ณ„์ขŒ์ด์ฒด๋ฅผ ์˜ˆ๋กœ ๋“ค์ž๋ฉด, ๋ˆ์„ ๋ณด๋‚ด๋Š” ์‚ฌ๋žŒ์˜ ๊ณ„์ขŒ์—์„œ ์ด์ฒด๊ธˆ์•ก์„ ์ฐจ๊ฐํ•˜๊ณ 

 

๋ˆ์„ ๋ฐ›๋Š” ์‚ฌ๋žŒ์˜ ๊ณ„์ขŒ์— ์ด์ฒด๊ธˆ์•ก์„ ๊ฐ€์‚ฐํ•œ๋‹ค.

 

์ฆ‰ ๊ณ„์ขŒ์ด์ฒด๋ผ๋Š” ์—…๋ฌด๋Š” ์ด๋Ÿฌํ•œ 2๊ฐ€์ง€ ๋‹จ๊ณ„๋กœ ์ง„ํ–‰๋˜๋ฉฐ,

 

๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ์„ ์œ„ํ•ด ์œ„ ์ž‘์—…์€ ์ „๋ถ€ ์‹คํ–‰๋˜๋˜์ง€ ์•„๋‹ˆ๋ฉด ์ „๋ถ€ ์ตœ์†Œ๋˜๋˜์ง€ ํ•ด์•ผ ํ•œ๋‹ค.

 

*๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ ์—…๋ฌด ๋‹จ์œ„๋กœ ๋ฌถ์—ฌ์„œ ์ฒ˜๋ฆฌ๋ผ์•ผ ํ•œ๋‹ค.

 

์ด๋Ÿฌํ•œ ์—…๋ฌด ๋‹จ์œ„๋ฅผ ํŠธ๋žœ์žญ์…˜(Transaction) ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

๐Ÿ’ก๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ์ง„ํ–‰ ์‹œ์—๋„ ํŠธ๋žœ์žญ์…˜์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŠธ๋žœ์žญ์…˜(Transaction)์˜ ํŠน์ง•(์ง€์ผœ์•ผ ํ•  ์กฐ๊ฑด)

 

DBMS๋Š” ์›์ž์„ฑ(Atomicity), ์ผ๊ด€์„ฑ(Consistency), ๊ณ ๋ฆฝ์„ฑ(Isolation), ์ง€์†์„ฑ(Durability) ์ด ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค.

 

๋‹ค์Œ ์กฐ๊ฑด๋“ค์˜ ์˜์–ด ์ฒซ ๋‹จ์–ด๋ฅผ ์ธ์šฉํ•ด ACID ํŠน์„ฑ(ACID property)๋ผ๊ณ  ํ•œ๋‹ค.

  ์›์ž์„ฑ(Atomicity) ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰ ๋„์ค‘์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ, ์ค‘๋‹จ๋œ ์ƒํƒœ๊ฐ€ ์•„๋‹Œ ๋ชจ๋‘ ์‹คํŒจํ•˜๊ฑฐ๋‚˜, ๋ชจ๋‘ ์™„์„ฑ ๋‘˜ ์ค‘ ํ•˜๋‚˜์˜ ์ƒํƒœ๊ฐ€ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ฆ‰ 100๊ฐœ ๋ช…๋ น์–ด๋กœ ๊ตฌ์„ฑ๋œ ํŠธ๋žœ์žญ์…˜ ์ค‘ 99๊ฐœ ์™„๋ฃŒ 1๊ฐœ ์‹คํŒจ๊ฐ€ ๋œ๋‹ค๋ฉด, ์ด๋Š” ๋ฌด์กฐ๊ฑด ์‹คํŒจ๋กœ ๊ฐ„์ฃผํ•˜์—ฌ ํŠธ๋žœ์žญ์…˜ ์‹œ์ž‘ ์ „ ์ƒํƒœ๋กœ ๋Œ๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋˜ํ•œ, 100๊ฐœ ๋ชจ๋‘๊ฐ€ ์„ฑ๊ณตํ–ˆ์„ ์‹œ ํŠธ๋žœ์žญ์…˜์€ ์„ฑ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ค‘๊ฐ„์ƒํƒœ๋ž€ ์—†์Šต๋‹ˆ๋‹ค. 
 
 ์ผ๊ด€์„ฑ(Consistency) ์ผ๊ด€์„ฑ์ด๋ž€ ํŠธ๋žœ์žญ์…˜ ์™„๋ฃŒ ํ›„์—๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ผ๊ด€๋œ ์ƒํƒœ๋กœ ์œ ์ง€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ๊ณ„์ขŒ์ด์ฒด๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰ํ–ˆ๋‹ค๋ฉด, A๊ณ„์ขŒ์˜ ์ž”์•ก๊ณผ B๊ณ„์ขŒ์˜ ์ž”์•ก์˜ ํ•ฉ์ด ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰ ์ „์˜ ํ•ฉ๊ณผ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 
 
 ๊ณ ๋ฆฝ์„ฑ(Isolation) ๊ณ ๋ฆฝ์„ฑ์ด๋ž€ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰ํ•˜๋Š” ๋„์ค‘์— ๋ณ€๊ฒฝํ•œ ๋ฐ์ดํ„ฐ๋Š” ์ด ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ฐธ์กฐํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ํŠน์„ฑ์ž…๋‹ˆ๋‹ค.
ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด A๋ผ๋Š” ๊ณ„์ขŒ์—์„œ ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด A๊ณ„์ขŒ์— ๋Œ€ํ•ด ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜ ๊ด€์—ฌ ํ•  ์ˆ˜ ์—†๊ณ  ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜๊ฑฐ๋‚˜ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
 
 ์ง€์†์„ฑ(Durability ์ง€์†์„ฑ์€ ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋˜๋ฉด, ์ฃผ๊ธฐ์–ต์žฅ์น˜๊ฐ€ ์•„๋‹Œ ๋””์Šคํฌ์™€ ๊ฐ™์€ ๋ณด์กฐ๊ธฐ์–ต์žฅ์น˜์— ์ €์žฅ๋˜๊ฑฐ๋‚˜ ๊ทธ๋ ‡์ง€ ์•Š๋”๋ผ๋„ ์‹œ์Šคํ…œ ์žฅ์• ๊ฐ€ ํšŒ๋ณต๋˜๊ณ  ๋‚œ ํ›„์— ์–ด๋– ํ•œ ํ˜•ํƒœ๋กœ๋“ ์ง€ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์•ผํ•จ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค.  

 

Active(ํ™œ๋™) ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰ ์ค‘์— ์žˆ๋Š” ์ƒํƒœ, ์—ฐ์‚ฐ๋“ค์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ
Failed(์žฅ์• ) ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ค‘๋‹จ๋œ ์ƒํƒœ 
Aborted(์ฒ ํšŒ)  ํŠธ๋žœ์žญ์…˜์ด ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด Rollback ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ ์ƒํƒœ 
Partially Committed(๋ถ€๋ถ„ ์™„๋ฃŒ) ํŠธ๋žœ์žญ์…˜์ด ๋งˆ์ง€๋ง‰ ์—ฐ์‚ฐ๊นŒ์ง€ ์‹คํ–‰ํ–ˆ์ง€๋งŒ, Commit ์—ฐ์‚ฐ์ด ์‹คํ–‰๋˜๊ธฐ ์ง์ „์˜ ์ƒํƒœ 
Committed(์™„๋ฃŒ)  ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด Commit ์—ฐ์‚ฐ์„ ์‹คํ–‰ํ•œ ํ›„์˜ ์ƒํƒœ 

 

โœจ์ œ4์ ˆ Null ์†์„ฑ์˜ ์ดํ•ด


* ๊ธฐ๋ณธ๊ฐœ๋… 

- NULL๊ฐ’์˜ ์—ฐ์‚ฐ์€ ์–ธ์ œ๋‚˜ NULL์ด๋‹ค.

- ์ง‘๊ณ„ํ•จ์ˆ˜๋Š” NULL ๊ฐ’์„ ์ œ์™ธํ•˜๊ณ  ์ฒ˜๋ฆฌํ•œ๋‹ค.

- NULL๊ฐ’์œผ๋กœ ๊ฐ€๋Šฅํ•œ ์—ฐ์‚ฐ์€ IS NULL, IS NOT NULL ๋ฐ–์— ์—†๋‹ค.

 

์˜ˆ) ์ฃผ๋ฌธ ๋ฐ์ดํ„ฐ

์ฃผ๋ฌธ๋ฒˆํ˜ธ ์ฃผ๋ฌธ๊ธˆ์•ก ์ฃผ๋ฌธ์ทจ์†Œ๊ธˆ์•ก
1100001 100,000 20,000
1100002 15,000  
SELECT SUM(์ฃผ๋ฌธ๊ธˆ์•ก) - SUM(์ฃผ๋ฌธ์ทจ์†Œ๊ธˆ์•ก) COL1
	, NVL(SUM(์ฃผ๋ฌธ๊ธˆ์•ก-์ฃผ๋ฌธ์ทจ์†Œ๊ธˆ์•ก),0) COL2
	, NVL(SUM(์ฃผ๋ฌธ๊ธˆ์•ก,0)-NVL(์ฃผ๋ฌธ์ทจ์†Œ๊ธˆ์•ก,0) COL3
FROM ์ฃผ๋ฌธ

SQL ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ

COL1 COL2 COL3
80,000 80,000 80,000
  0 15,000

COL3 ๋Š” ๊ฐ ์†์„ฑ๋ณ„๋กœ NVL ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ , ์ดํ›„ ์ฃผ๋ฌธ๊ธˆ์•ก์—์„œ ์ฃผ๋ฌธ์ทจ์†Œ๊ธˆ์•ก์„ ์ œ์™ธํ•˜์˜€๋‹ค.

 

Null ๊ฐ’์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ์ˆ™์ง€ํ•œ ๊ฒฝ์šฐ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

NULL ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ํ•˜๊ธฐ์œ„ํ•ด ์˜ค๋ผํด(oracle)์—์„œ๋Š”  NLV ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

โœจ์ œ5์ ˆ ๋ณธ์งˆ์‹๋ณ„์ž VS ์ธ์กฐ์‹๋ณ„์ž


๋ณธ์งˆ์‹๋ณ„์ž ์—…๋ฌด์— ์˜ํ•ด ๋งŒ๋“ค์–ด์ง„ ์‹๋ณ„์ž
์ธ์กฐ์‹๋ณ„์ž ์—…๋ฌด์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€์ง€๋Š” ์•Š์ง€๋งŒ ๋ณธ์งˆ์‹๋ณ„์ž๊ฐ€ ๋ณต์žกํ•œ ๊ตฌ์„ฑ์„ ๊ฐ–๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ธ์œ„์ ์œผ๋กœ ๋งŒ๋“  ์‹๋ณ„์ž

 

300x250

์ฝ”๋“œ