Search

๋ฐ์ดํ„ฐ ๋ชจ๋ธ๊ณผ SQL

๋ฐ์ดํ„ฐ ๋ชจ๋ธ๊ณผ SQL

โ€ข
โ€ข

์ •๊ทœํ™”

์ด์ƒ ํ˜„์ƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ•ดํ•˜๋Š” ๊ณผ์ •
โ€ข
๋ฐ์ดํ„ฐ ์ค‘๋ณต ์ตœ์†Œํ™”
โ€ข
๋ฐ์ดํ„ฐ ์œ ์—ฐ์„ฑ ์ตœ๋Œ€ํ™”
์ •๊ทœํ™” ๊ฐ ์ ˆ์ฐจ์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—… ์™ธ์šฐ๊ธฐ
1์ •๊ทœํ™”
2์ •๊ทœํ™”
3์ •๊ทœํ™”
BCNF
4์ •๊ทœํ™”
5์ •๊ทœํ™”
๋„
๋ถ€
์ด
๊ฒฐ
๋‹ค
์กฐ

์ด์ƒํ˜„์ƒ

๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ฑ๊ณผ ์ข…์†์„ฑ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ํ˜„์ƒ
โ€ข
์ข…๋ฅ˜
์ด์ƒ ํ˜„์ƒ
์„ค๋ช…
์‚ฝ์ž… ์ด์ƒ (Insertion Anomaly)
๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•˜์—ฌ ๋ฐœ์ƒํ•˜๋Š” ํ˜„์ƒ
๊ฐฑ์‹  ์ด์ƒ (Update Anomaly)
๋ฐ์ดํ„ฐ ์ผ๋ถ€๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ์ผ๊ด€์„ฑ์ด ์—†๋Š” ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•˜๋Š” ํ˜„์ƒ
์‚ญ์ œ ์ด์ƒ (Deletion Anomaly)
ํŠน์ • ํ–‰์„ ์‚ญ์ œํ•  ๋•Œ ์›์น˜ ์•Š๋Š” ๋ฐ์ดํ„ฐ ์†์‹ค์ด ๋ฐœ์ƒํ•˜๋Š” ํ˜„์ƒ

์ •๊ทœํ™” ์ ˆ์ฐจ

โ€ข
์ œ1์ •๊ทœํ™”
โ€ข
์ œ2์ •๊ทœํ™”
โ€ข
์ œ3์ •๊ทœํ™”
โ€ข
BCNF (Boyce-Codd Normal Form)
โ€ข
์ œ4์ •๊ทœํ™”
โ€ข
์ œ5์ •๊ทœํ™”

์ œ1์ •๊ทœํ™”

๊ฐ ์—ด์ด ์›์ž์ (Atomic)์ธ ๊ฐ’์„ ๊ฐ€์ง€๋„๋ก ํ…Œ์ด๋ธ”์„ ๋ถ„ํ•ดํ•˜๋Š” ๊ณผ์ •
๊ฐ ์—ด์—๋Š” ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์—ฌ๋Ÿฌ ๊ฐ’์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ด๋ฅผ ๋ณ„๋„์˜ ํ–‰์œผ๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ œ2์ •๊ทœํ™”

๋ถ€๋ถ„ ํ•จ์ˆ˜ ์ข…์†์ด ์—†๋Š” ์ƒํƒœ๋กœ ํ…Œ์ด๋ธ”์„ ๋ถ„ํ•ดํ•˜๋Š” ๊ณผ์ •

์ œ3์ •๊ทœํ™”

์ดํ–‰ ํ•จ์ˆ˜ ์ข…์†์ด ์—†๋Š” ์ƒํƒœ๋กœ ํ…Œ์ด๋ธ”์„ ๋ถ„ํ•ดํ•˜๋Š” ๊ณผ์ •

BCNF (Boyce-Codd Normal Form)

๋ชจ๋“  ๊ฒฐ์ •์ž๊ฐ€ ํ›„๋ณด ํ‚ค(candidate key)์ธ ์ƒํƒœ๋กœ ํ…Œ์ด๋ธ”์„ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ๊ณผ์ •

์ œ4์ •๊ทœํ™”

๋‹ค์น˜ ์ข…์†์„ฑ์ด ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ด๋ธ”์„ ๋ถ„ํ•ดํ•˜๋Š” ๊ณผ์ •

์ œ5์ •๊ทœํ™”

์กฐ์ธ ์ข…์†์„ฑ์ด ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ด๋ธ”์„ ๋ถ„ํ•ดํ•˜๋Š” ๊ณผ์ •

ํ•จ์ˆ˜์  ์ข…์†์„ฑ

โ€ข
๋ถ€๋ถ„ ํ•จ์ˆ˜ ์ข…์†์„ฑ
โ€ข
์™„์ „ ํ•จ์ˆ˜ ์ข…์†์„ฑ
โ€ข
์ดํ–‰(์ „์ด) ํ•จ์ˆ˜ ์ข…์†์„ฑ
โ€ข
๋‹ค์น˜ ํ•จ์ˆ˜ ์ข…์†์„ฑ

๋ถ€๋ถ„ ํ•จ์ˆ˜ ์ข…์†์„ฑ

ํ•œ ์†์„ฑ์ด ๋‹ค๋ฅธ ์†์„ฑ์˜ ์ผ๋ถ€์— ๋Œ€ํ•ด๋งŒ ํ•จ์ˆ˜์ ์œผ๋กœ ์ข…์† : (A,B) C + B D

์™„์ „ ํ•จ์ˆ˜ ์ข…์†์„ฑ

ํ•œ ์†์„ฑ์ด ๋‹ค๋ฅธ ์†์„ฑ์˜ ๋ชจ๋“  ๋ถ€๋ถ„์— ๋Œ€ํ•ด ํ•จ์ˆ˜์ ์œผ๋กœ ์ข…์† : (A,B) C

์ดํ–‰(์ „์ด) ํ•จ์ˆ˜ ์ข…์†์„ฑ

ํ•œ ์†์„ฑ์ด ๋‹ค๋ฅธ ์†์„ฑ์„ ํ†ตํ•ด ๊ฐ„์ ‘์ ์œผ๋กœ ํ•จ์ˆ˜์ ์œผ๋กœ ์ข…์† : ABC

๋‹ค์น˜ ํ•จ์ˆ˜ ์ข…์†์„ฑ

ํ•œ ์†์„ฑ์ด 2๊ฐœ ์ด์ƒ์˜ ์†์„ฑ์„ ํ•จ์ˆ˜์ ์œผ๋กœ ์ข…์†

์ •๊ทœํ™”์˜ ํ•œ๊ณ„(๋ฌธ์ œ์ )

์—”ํ„ฐํ‹ฐ๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ๋ถ„ํ•ดํ•˜๋ฉด, ์กฐํšŒ ์‹œ ์žฆ์€ ์กฐ์ธ์„ ์œ ๋ฐœํ•œ๋‹ค. ์กฐํšŒ ์„ฑ๋Šฅ ์ €ํ•˜ ์œ ๋ฐœ(์†๋„ ๋Š๋ ค์ง)
์ •๊ทœํ™”์˜ ํ•œ๊ณ„๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฐ˜์ •๊ทœํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜์ •๊ทœํ™”

์ •๊ทœํ™”๋œ ์—”ํ„ฐํ‹ฐ๋ฅผ ํ•ฉ์น˜๊ฑฐ๋‚˜ ์ค‘๋ณต ๋ฐ์ดํ„ฐ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๊ณผ์ •
์กฐ์ธ ์ตœ์†Œํ™” ์กฐํšŒ ์„ฑ๋Šฅ(์†๋„) ํ–ฅ์ƒ
๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ์œ ์—ฐ์„ฑ ์ €ํ•˜

๋ฐ˜์ •๊ทœํ™”๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ

โ€ข
์š”์•ฝ/์ง‘๊ณ„ ์ •๋ณด๊ฐ€ ์š”๊ตฌ๋˜๋Š” ๊ฒฝ์šฐ
โ€ข
ํŠน์ • ๋ฒ”์œ„์˜ ๋ฐ์ดํ„ฐ๋งŒ ์ž์ฃผ ์กฐํšŒํ•˜๋Š” ๊ฒฝ์šฐ
โ€ข
๋‹ค๋Ÿ‰์˜ ๋ฒ”์œ„๋ฅผ ์ž์ฃผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ
โ€ข
์ •๊ทœํ™”๋กœ ์ธํ•ด ์ˆ˜ํ–‰ ์†๋„๊ฐ€ ๋Š๋ ค์ง€๋Š” ๊ฒฝ์šฐ

๋ฐ˜์ •๊ทœํ™” ๊ธฐ๋ฒ•

1.
๊ณ„์‚ฐ๋œ ์ปฌ๋Ÿผ ์ถ”๊ฐ€
2.
ํ…Œ์ด๋ธ” ์ˆ˜์ง ๋ถ„ํ• 
3.
ํ…Œ์ด๋ธ” ์ˆ˜ํ‰ ๋ถ„ํ• 
4.
ํ…Œ์ด๋ธ” ๋ณ‘ํ•ฉ
๋ฐ˜์ •๊ทœํ™” ๊ธฐ๋ฒ•
์„ค๋ช…
๊ณ„์‚ฐ๋œ ์ปฌ๋Ÿผ ์ถ”๊ฐ€
โ€œํ•ฉ๊ณ„, ํ‰๊ท  ๋“ฑ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ณ„์‚ฐ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋งค๋ฒˆ ์กฐ์ธ ๋ฐ ํ•จ์ˆ˜ ์‚ฌ์šฉ์„ ํ•˜์ง€ ์•Š๊ณ  ๋ฐฐ์น˜๋ฅผ ๋Œ๋ ค ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•œ ๊ฐ’์„ ์ปฌ๋Ÿผ์— ์ถ”๊ฐ€ํ•ด๋‘๋Š” ๊ธฐ๋ฒ•โ€ ์กฐํšŒ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ , ๋ณต์žกํ•œ ์—ฐ์‚ฐ์„ ์ค„์—ฌ์คŒ.
ํ…Œ์ด๋ธ” ์ˆ˜์ง ๋ถ„ํ• 
โ€œ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ๋ถ„ํ• โ€. ํ•œ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์„ ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”๋กœ ๋‚˜๋ˆ„๋Š” ๊ธฐ๋ฒ•. ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ปฌ๋Ÿผ๊ณผ ๊ทธ๋ ‡์ง€ ์•Š์€ ์ปฌ๋Ÿผ์„ ๋ณ„๋„์˜ ํ…Œ์ด๋ธ”๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์กฐํšŒ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ด.
ํ…Œ์ด๋ธ” ์ˆ˜ํ‰ ๋ถ„ํ• 
โ€œ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋ถ„ํ• โ€. ํ•œ ํ…Œ์ด๋ธ”์˜ ๋กœ์šฐ๋ฅผ ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”๋กœ ๋‚˜๋ˆ„๋Š” ๊ธฐ๋ฒ•. ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋กœ์šฐ์™€ ๊ทธ๋ ‡์ง€ ์•Š์€ ๋กœ์šฐ๋ฅผ ๋ณ„๋„์˜ ํ…Œ์ด๋ธ”๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์กฐํšŒ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ด.
ํ…Œ์ด๋ธ” ๋ณ‘ํ•ฉ
๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์„ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”๋กœ ํ•ฉ์น˜๋Š” ๊ธฐ๋ฒ•. ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ์กฐ์ธ์„ ์ค„์—ฌ์„œ ์กฐํšŒ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ด. ๋‹จ, ๋ฐ์ดํ„ฐ ์ค‘๋ณต์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ.

ํŒŒํ‹ฐ์…˜(Partition) ๊ธฐ๋ฒ•

๋Œ€์šฉ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋” ์ž‘์€ ๋…ผ๋ฆฌ์  ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ธฐ๋ฒ•
ํŒŒํ‹ฐ์…˜ ๊ธฐ๋ฒ•
์„ค๋ช…
Range Partition
์—ฐ์†๋œ ๋ฒ”์œ„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•˜์—ฌ ํŒŒํ‹ฐ์…˜์„ ์ƒ์„ฑํ•จ.
List Partition
๋ชฉ๋ก์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•˜์—ฌ ํŒŒํ‹ฐ์…˜์„ ์ƒ์„ฑํ•จ.
Hash Partition
ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•˜์—ฌ ํŒŒํ‹ฐ์…˜์„ ์ƒ์„ฑํ•จ.
Composite Partition
๋‘ ๊ฐœ ์ด์ƒ์˜ ํŒŒํ‹ฐ์…˜ ํ‚ค๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•จ.

Super Type & Sub Type

๋ถ€๋ชจ์™€ ์ž์‹ ๊ฐ„์˜ ๊ด€๊ณ„๋กœ, ์ƒ์œ„ ์—”ํ„ฐํ‹ฐ์™€ ํ•˜์œ„ ์—”ํ„ฐํ‹ฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐœ๋…
ex) ๊ณ ๊ฐ ์—”ํ„ฐํ‹ฐ
โ€ข
Super Type : ๊ณ ๊ฐ ์—”ํ„ฐํ‹ฐ
โ—ฆ
Sub Type : ๊ฐœ์ธ ๊ณ ๊ฐ ์—”ํ„ฐํ‹ฐ
โ—ฆ
Sub Type : ๋ฒ•์ธ ๊ณ ๊ฐ ์—”ํ„ฐํ‹ฐ

Super Type & Sub Type ๋ณ€ํ™˜ ๋ฐฉ๋ฒ•

๋ณ€ํ™˜ ๋ฐฉ๋ฒ•
์„ค๋ช…
OneToOne Type
- ํ•˜์œ„ ์œ ํ˜•๋“ค์ด ์ƒ์œ„ ์œ ํ˜•๊ณผ ์ผ๋Œ€์ผ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง. - ํ…Œ์ด๋ธ” ์ˆ˜ : ๊ฐœ๋ณ„ ํ…Œ์ด๋ธ” [ ์Šˆํผ(1), ์„œ๋ธŒ(1) ] - ์กฐ์ธ ์„ฑ๋Šฅ : ๋‚˜์จ ์กฐ์ธ ๋งŽ์ด ๋ฐœ์ƒ
Plus Type
- ํ•˜์œ„ ์œ ํ˜•๋“ค์ด ์„œ๋กœ ์ค‘๋ณต๋˜์ง€ ์•Š๊ณ , ์ƒ์œ„ ์œ ํ˜•๊ณผ ์ผ๋Œ€๋‹ค ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง. - ํ…Œ์ด๋ธ” ์ˆ˜ : ๊ฐœ๋ณ„ ํ…Œ์ด๋ธ” [ ์Šˆํผ(1), ์„œ๋ธŒ(1) ] - ์กฐ์ธ ์„ฑ๋Šฅ : ๋‚˜์จ ์กฐ์ธ ๋งŽ์ด ๋ฐœ์ƒ
Single Type
- ํ•˜์œ„ ์œ ํ˜•๋“ค์ด ์„œ๋กœ ์ค‘๋ณต๋  ์ˆ˜ ์žˆ๊ณ , ์ƒ์œ„ ์œ ํ˜•๊ณผ ๋‹ค๋Œ€๋‹ค ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง. - ํ…Œ์ด๋ธ” ์ˆ˜ : ๋‹จ์ผ ํ…Œ์ด๋ธ” [ ์Šˆํผ+์„œ๋ธŒ(1) ] - ์กฐ์ธ ์„ฑ๋Šฅ : ์ข‹์Œ * ์ž…์ถœ๋ ฅ ์„ฑ๋Šฅ ๋‚˜์จ

๊ด€๊ณ„์™€ ์กฐ์ธ

๊ด€๊ณ„(Relationship)

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ์—”ํ„ฐํ‹ฐ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ๊ด€๊ณ„๋กœ ์ •์˜ํ•œ๋‹ค.
์—”ํ„ฐํ‹ฐ๊ฐ„์˜ ๊ด€๊ณ„๋Š” ์•„๋ž˜์˜ ๊ธฐ์ค€์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
โ€ข
M:N (๋‹ค๋Œ€๋‹ค)์˜ ๊ด€๊ณ„๋Š” ์—”ํ„ฐํ‹ฐ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
โ€ข
1:N (์ผ๋Œ€๋‹ค)์˜ ๊ด€๊ณ„๋Š” ์™ธ๋ž˜ํ‚ค๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
โ€ข
1:1 (์ผ๋Œ€์ผ)์˜ ๊ด€๊ณ„๋Š” ์™ธ๋ž˜ํ‚ค๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
ex) โ€œํšŒ์›์ด ์ƒํ’ˆ์„ ์ฃผ๋ฌธํ•  ์ˆ˜ ์žˆ๋‹ค.โ€
โ€œ์ฃผ๋ฌธโ€ ์ด ๊ด€๊ณ„๊ฐ€ ๋˜๊ณ , โ€œ์ฃผ๋ฌธโ€ ์—”ํ„ฐํ‹ฐ๋กœ ์ƒ์„ฑํ•œ๋‹ค.

์กฐ์ธ

2๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”๋“ค์„ ๊ฒฐํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์œผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ์—ฐ์‚ฐ

์ •๊ทœํ™”&๋ฐ˜์ •๊ทœํ™”์™€ ์กฐ์ธ

์ •๊ทœํ™”๋ฅผ ํ•˜๋ฉด ํ…Œ์ด๋ธ”๋“ค์ด ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ์ชผ๊ฐœ์ง€๊ธฐ ๋•Œ๋ฌธ์—, ๊ฒฐํ•จ๋œ ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด์„œ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์กฐ์ธ์— ๋”ฐ๋ฅธ ์กฐํšŒ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ์ ์ ˆํ•˜๊ฒŒ ๋ฐ˜์ •๊ทœํ™”๋ฅผ ํ•˜์—ฌ ํ…Œ์ด๋ธ”์„ ๋ณ‘ํ•ฉํ•˜๊ฒŒ ๋˜๋ฉด ์กฐ์ธ์—†์ด๋„ ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜์—ฌ ์กฐํšŒ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
โ€ข
์ •๊ทœํ™”
โ—ฆ
๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ๊ณผ ์ผ๊ด€์„ฑ
โ—ฆ
์กฐํšŒ ์„ฑ๋Šฅ
โ€ข
๋ฐ˜์ •๊ทœํ™”
โ—ฆ
๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ๊ณผ ์ผ๊ด€์„ฑ
โ—ฆ
์กฐํšŒ ์„ฑ๋Šฅ
โ—ฆ

ํŠธ๋žœ์žญ์…˜

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ์ž‘์—…์˜ ๋…ผ๋ฆฌ์  ๋‹จ์œ„
โ€ข
ํ•˜๋‚˜ ์ด์ƒ์˜ SQL ๋ช…๋ น๋ฌธ์„ ํฌํ•จ
โ€ข
ACID ์†์„ฑ์„ ์ค€์ˆ˜ํ•˜์—ฌ ์‹คํ–‰๋˜์–ด์•ผํ•จ.

ํŠธ๋žœ์žญ์…˜ ํŠน์ง•

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

์‹๋ณ„๊ด€๊ณ„ vs ๋น„์‹๋ณ„๊ด€๊ณ„

์‹๋ณ„ ๊ด€๊ณ„ : ์‹ค์„ ์œผ๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค.
๋น„์‹๋ณ„ ๊ด€๊ณ„ : ์ ์„ ์œผ๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์‹๋ณ„์ž ๊ด€๊ณ„

๋ถ€๋ชจ ์—”ํ„ฐํ‹ฐ์˜ ๊ธฐ๋ณธ ํ‚ค๊ฐ€ ์ž์‹ ์—”ํ„ฐํ‹ฐ์˜ ๊ณ ์œ ํ‚ค(์ฃผ ์‹๋ณ„์ž)๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ด€๊ณ„

๋น„์‹๋ณ„์ž ๊ด€๊ณ„

๋ถ€๋ชจ ์—”ํ„ฐํ‹ฐ์˜ ๊ธฐ๋ณธ ํ‚ค๊ฐ€ ์ž์‹ ์—”ํ„ฐํ‹ฐ์˜ ๊ณ ์œ ํ‚ค(์ฃผ ์‹๋ณ„์ž)๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ด€๊ณ„

๊ฐ•ํ•œ ๊ฐœ์ฒด VS ์•ฝํ•œ ๊ฐœ์ฒด

ํŠน์ง•
๊ฐ•ํ•œ ๊ฐœ์ฒด (Strong Entity)
์•ฝํ•œ ๊ฐœ์ฒด (Weak Entity)
์‹๋ณ„์ž
์ž์ฒด์ ์ธ ์‹๋ณ„์ž๊ฐ€ ์žˆ์Œ
๋ถ€๋ชจ ์—”ํ„ฐํ‹ฐ์— ์˜์กด์ ์ด๋ฉฐ, ์ž์ฒด์ ์ธ ์‹๋ณ„์ž๊ฐ€ ์—†์Œ
๋…๋ฆฝ์„ฑ
๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Œ
๋ถ€๋ชจ ์—”ํ„ฐํ‹ฐ์™€ ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ, ๋ถ€๋ชจ ์—”ํ„ฐํ‹ฐ ์—†์ด ์กด์žฌํ•  ์ˆ˜ ์—†์Œ
์ƒ์„ฑ ๊ทœ์น™
์ž์‹ ์˜ ์‹๋ณ„์ž๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ
๋ถ€๋ชจ ์—”ํ„ฐํ‹ฐ์˜ ์‹๋ณ„์ž์™€ ์—ฐ๊ฒฐ๋œ๋‹ค. ์‹๋ณ„์ž ์ƒ์„ฑ ๊ทœ์น™์ด ํ•„์š”ํ•จ
์ƒ๋ช… ์ฃผ๊ธฐ
๋…๋ฆฝ์ ์ธ ์ƒ๋ช… ์ฃผ๊ธฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ
๋ถ€๋ชจ ์—”ํ„ฐํ‹ฐ์™€ ์—ฐ๊ด€๋œ ์ƒ๋ช… ์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง
์˜ˆ์‹œ
์ž๋™์ฐจ (์ฐจ๋Ÿ‰๋ฒˆํ˜ธ, ๋ชจ๋ธ, ์ œ์กฐ์‚ฌ)
์ฃผ๋ฌธ ์ƒ์„ธ (์ฃผ๋ฌธ๋ฒˆํ˜ธ, ์ƒํ’ˆ๋ฒˆํ˜ธ, ์ˆ˜๋Ÿ‰)
ํ•™์ƒ (ํ•™๋ฒˆ, ์ด๋ฆ„, ์ „๊ณต)
์˜ํ™” ํ‰์  (์˜ํ™”ID, ์‚ฌ์šฉ์žID, ํ‰์ )
์ฃผ๋ฌธ (์ฃผ๋ฌธ๋ฒˆํ˜ธ, ๋‚ ์งœ, ๊ฐ€๊ฒฉ)
๊ฒŒ์‹œ๊ธ€ ๋Œ“๊ธ€ (๊ฒŒ์‹œ๊ธ€ID, ์‚ฌ์šฉ์žID, ๋‚ด์šฉ)

NULL

๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ.

NULL ๊ด€๋ จ ์‚ฌํ•ญ

โ€ข
NULL ๊ณผ์˜ ์—ฐ์‚ฐ
โ€ข
NULL ์ฒ˜๋ฆฌ ํ•จ์ˆ˜
โ€ข
COUNT() ํ•จ์ˆ˜์™€ NULL ๊ด€๊ณ„

NULL ๊ณผ์˜ ์—ฐ์‚ฐ

NULL + ? = NULL
NULL ๊ณผ ๋‹ค๋ฅธ ๊ฐ’์„ ์–ด๋–ค ์—ฐ์‚ฐ์„ ํ•˜์—ฌ๋„ ๊ฒฐ๊ณผ๋Š” NULL ์ด๋‹ค.
์‹ค์ œ๋กœ๋Š” NULL ๊ณผ ์—ฐ์‚ฐ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก NULL ์ฒ˜๋ฆฌ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.

NULL ์ฒ˜๋ฆฌ ํ•จ์ˆ˜

๊ฐ’์ด NULL ์ผ ๋•Œ, ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋Œ€์ฒดํ•˜๋Š” ํ•จ์ˆ˜
DBMS
ํ•จ์ˆ˜
์„ค๋ช…
Oracle
NVL(expr1, expr2)
expr1์ด NULL์ด๋ฉด expr2๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด expr1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
NVL2(expr1, expr2, expr3)
expr1์ด NULL์ด ์•„๋‹ˆ๋ฉด expr2๋ฅผ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด expr3๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
COALESCE(expr1, expr2, ...)
NULL์ด ์•„๋‹Œ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
MySQL
IFNULL(expr1, expr2)
expr1์ด NULL์ด๋ฉด expr2๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด expr1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
COALESCE(expr1, expr2, ...)
NULL์ด ์•„๋‹Œ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
MS SQL Server
ISNULL(expr1, expr2)
expr1์ด NULL์ด๋ฉด expr2๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด expr1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
COALESCE(expr1, expr2, ...)
NULL์ด ์•„๋‹Œ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ํ•จ์ˆ˜๋“ค์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ NULL ๊ฐ’์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

COUNT() ํ•จ์ˆ˜์™€ NULL ๊ด€๊ณ„

โ€ข
COUNT() ํ•จ์ˆ˜
ํ…Œ์ด๋ธ”์˜ ํ–‰์˜ ์ˆ˜(๊ฐœ์ˆ˜)๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
ํ•จ์ˆ˜
์„ค๋ช…
COUNT(*)
ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ์˜ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
COUNT(column)
์ง€์ •๋œ ์—ด์˜ ๊ฐ’์ด NULL์ด ์•„๋‹Œ ๋ ˆ์ฝ”๋“œ์˜ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
COUNT(DISTINCT column)
์ง€์ •๋œ ์—ด์˜ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ฐ’๋“ค์˜ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ํ•จ์ˆ˜๋“ค์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์—ด์ด๋‚˜ ๋ ˆ์ฝ”๋“œ์˜ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ , ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ ๊ฐ’์„ ์„ธ๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ์ง‘๊ณ„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.