IT ์‚ฌ๋ฌผํ•จ ๐Ÿป ์ž์„ธํžˆ๋ณด๊ธฐ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค4

๋ž˜๋ฆฌ๋ž˜๋ฆฌ 2022. 6. 25. 16:08

#๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด

-๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๊ตฌ์„ฑ์š”์†Œ

๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ / ์—ฐ์‚ฐ์ž / ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ

 

-๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ data integrity

๋ฐ์ดํ„ฐ์˜ ์ •ํ™•์„ฑ ๋˜๋Š” ์œ ํšจ์„ฑ์„ ์˜๋ฏธํ•œ๋‹ค

์ผ๊ด€๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒํƒœ๋ฅผ ์ •์˜ํ•˜๋Š” ๊ทœ์น™๋“ค์„ ๋ฌต์‹œ์ ์œผ๋กœ ๋˜๋Š” ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜ํ•œ๋‹ค

๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฌด๊ฒฐ์„ฑ - ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๋“ค๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •ํ™•์„ฑ(์ผ๊ด€์„ฑ)์„ ์ง€ํ‚ค๋Š” ๊ฒƒ

 

์žฅ์  : ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜ ํ•  ๋•Œ, ์ผ๊ด€์„ฑ ์กฐ๊ฑด์„ ์˜ค์ง ํ•œ๋ฒˆ๋งŒ ๋ช…์‹œํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๊ฐฑ์‹  ๋ ๋•Œ

DBMS๊ฐ€ ์ž๋™์ ์œผ๋กœ ์ผ๊ด€์„ฑ ์กฐ๊ฑด์„ ๊ฒ€์‚ฌํ•œ๋‹ค

 

-๋„๋ฉ”์ธ ์ œ์•ฝ์กฐ๊ฑด domain constraint

๊ฐ ์†์„ฑ ๊ฐ’์ด ๋ฐ˜๋“œ์‹œ ์›์ž๊ฐ’(๋‹จ์ผ๊ฐ’) ์ด์–ด์•ผ ํ•œ๋‹ค

์†์„ฑ ๊ฐ’์˜ ๋””ํดํŠธ ๊ฐ’, ๊ฐ€๋Šฅํ•œ ๊ฐ’๋“ค์˜ ๋ฒ”์œ„ ๋“ฑ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ ํ˜•์‹์„ ํ†ตํ•ด ๊ฐ’๋“ค์˜ ์œ ํ˜•์„ ์ œํ•œํ•˜๊ณ , CHECK ์ œ์•ฝ ์กฐ๊ฑด์„ ํ†ตํ•ด ๊ฐ’๋“ค์˜ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค.

DBMS๋Š” ํŠœํ”Œ์ด ์‚ฝ์ž…, ์ˆ˜์ • ๋  ๋•Œ ๋งˆ๋‹ค ๋„๋ฉ”์ธ ์ œ์•ฝ์กฐ๊ฑด์„ ๊ฒ€์‚ฌํ•˜์—ฌ ์œ„๋ฐฐ ์‹œ ์—ฐ์‚ฐ์„ ๊ฑฐ์ ˆํ•œ๋‹ค

 

-ํ‚ค ์ œ์•ฝ์กฐ๊ฑด key constraint

ํ‚ค ์†์„ฑ์— ์ค‘๋ณต๋œ ๊ฐ’์ด ์กด์žฌํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.

๋ฆด๋ ˆ์ด์…˜์„ ์ •์˜ ํ•  ๋•Œ ๊ธฐ๋ณธ ํ‚ค๋กœ ์ •์˜ํ•˜๊ฑฐ๋‚˜ UNIQUE๋ฅผ ๋ช…์‹œํ•œ ์†์„ฑ์—๋Š” ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค

 

-๊ธฐ๋ณธ ํ‚ค์™€ ์—”ํ‹ฐํ‹ฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด entity integrity constraint

๋ฆด๋ ˆ์ด์…˜์˜ PK๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์–ด๋–ค ์†์„ฑ๋„ NULL ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค

์‚ฌ์šฉ์ž๋Š” ์‹ค๋ ˆ์ด์…˜์„ ์ƒ์„ฑํ•˜๋Š” DDL์—์„œ ์–ด๋–ค ์†์„ฑ์ด PK์˜ ๊ตฌ์„ฑ์š”์†Œ์ธ๊ฐ€๋ฅผ DBMS์—๊ฒŒ ์•Œ๋ ค์ค€๋‹ค

 

-์™ธ๋ž˜ ํ‚ค์™€ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด referential integrity constraint

์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์€ ๋‘ ๋ฆด๋ ˆ์ด์…˜์˜ ์—ฐ๊ด€๋œ ํŠœํ”Œ๋“ค ์‚ฌ์ด์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ

๊ด€๊ณ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ฆด๋ ˆ์ด์…˜๋“ค๋กœ๋งŒ ์ด๋ฃจ์–ด์ง€๊ณ  ๋ฆด๋ ˆ์ด์…˜ ์‚ฌ์ด์˜ ๊ด€๊ณ„๋“ค์ด ๋‹ค๋ฅธ ๋ฆด๋ ˆ์ด์…˜์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ

์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ๋ฌต์‹œ์ ์œผ๋กœ ํ‘œํ˜„๋˜๊ธฐ ๋•Œ๋ฌธ์— ์™ธ๋ž˜ ํ‚ค์˜ ๊ฐœ๋…์ด ์ค‘์š”ํ•˜๋‹ค


-๋ฆด๋ ˆ์ด์…˜ R2์˜ ์™ธ๋ž˜ ํ‚ค๊ฐ€ ๋ฆด๋ ˆ์ด์…˜ R1์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ฐธ์กฐํ•  ๋•Œ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์€ ๋‘ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๊ฐ€ ์„ฑ๋ฆฝ๋˜๋ฉด ๋งŒ์กฑ

 

1. ์™ธ๋ž˜ ํ‚ค์˜ ๊ฐ’์€ R1์˜ ์–ด๋–ค ํŠœํ”Œ์˜ ๊ธฐ๋ณธ ํ‚ค ๊ฐ’๊ณผ ๊ฐ™๋‹ค.

 

2. ์™ธ๋ž˜ ํ‚ค๊ฐ€ ์ž์‹ ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๋ฆด๋ ˆ์ด์…˜์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ์ง€ ์•Š์œผ๋ฉด ๋„ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.

 

-๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์˜ ์œ ์ง€

ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ชจ๋“  ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์„ ๋งŒ์กฑํ•œ๋‹ค๋ฉด

DB ๊ฒ€์ƒ‰ ์—ฐ์‚ฐ์˜ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋Š” ์–ด๋–ค ์ œ์•ฝ์กฐ๊ฑด๋„ ์œ„๋ฐฐ ๋˜์ง€ ์•Š๋Š”๋‹ค

 

DB์— ๋Œ€ํ•œ ๊ฐฑ์‹  ์—ฐ์‚ฐ์€ ์‚ฝ์ž…, ์‚ญ์ œ, ์ˆ˜์ • ์—ฐ์‚ฐ์œผ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค

 

DBMS๋Š” ๊ฐ๊ฐ ๊ฐฑ์‹  ์—ฐ์‚ฐ์— ๋Œ€ํ•ด ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด๋“ค์„ ๋งŒ์กฑํ•˜๋„๋ก ํ•„์š”ํ•œ ์กฐ์น˜๋ฅผ ์ทจํ•œ๋‹ค

 

DBMS๋Š” ์™ธ๋ž˜ ํ‚ค๊ฐ€ ๊ฐฑ์‹ ๋˜๊ฑฐ๋‚˜, ์ฐธ์กฐ๋œ ๊ธฐ๋ณธ ํ‚ค๊ฐ€ ๊ฐฑ์‹ ๋˜์—ˆ์„ ๋•Œ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์ด ์œ„๋ฐฐ๋˜์ง€ ์•Š๋„๋ก ํ•ด์•ผํ•œ๋‹ค

 

-์‚ฝ์ž… (๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด)

์ฐธ์กฐ๋˜๋Š” ๋ฆด๋ ˆ์ด์…˜์— ์ƒˆ๋กœ์šด ํŠœํ”Œ์ด ์‚ฝ์ž…๋˜๋ฉด ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์€ ์œ„๋ฐฐ๋˜์ง€ ์•Š๋Š”๋‹ค.

์ฐธ์กฐํ•˜๋Š” ๋ฆด๋ ˆ์ด์…˜์— ์ƒˆ๋กœ์šด ํŠœํ”Œ์„ ์‚ฝ์ž… ํ•  ๋•Œ๋Š” ๋„๋ฉ”์ธ ์ œ์•ฝ์กฐ๊ฑด, ํ‚ค ์ œ์•ฝ์กฐ๊ฑด, ์—”ํ‹ฐํ‹ฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด ์™ธ์—

์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด๋„ ์œ„๋ฐฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

-์‚ญ์ œ

์ฐธ์กฐํ•˜๋Š” ๋ฆด๋ ˆ์ด์…˜์—์„œ ํŠœํ”Œ ์‚ญ์ œ๋˜๋ฉด ๋ชจ๋“  ์ œ์•ฝ์กฐ๊ฑด์„ ์œ„๋ฐฐํ•˜์ง€ ์•Š๋Š”๋‹ค

์ฐธ์กฐ๋˜๋Š” ๋ฆด๋ ˆ์ด์…˜์—์„œ ํŠœํ”Œ์ด ์‚ฌ์ œ๋˜๋ฉด ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์„ ์œ„๋ฐฐํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.


-์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ด DBMS๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์˜ต์…˜

 

1. ์ œํ•œ restricted

์œ„๋ฐฐ๋ฅผ ์•ผ๊ธฐํ•œ ์—ฐ์‚ฐ์„ ๊ฑฐ์ ˆ

 

2. ์—ฐ์‡„ cascade

์ฐธ์กฐ๋˜๋Š” ๋ฆด๋ ˆ์ด์…˜์—์„œ ํŠœํ”Œ์„ ์‚ญ์ œํ•˜๊ณ , ์ฐธ์กฐํ•˜๋Š” ๋ฆด๋ ˆ์ด์…˜์—์„œ๋„ ์ด ํŠœํ”Œ์„ ์ฐธ์กฐํ•˜๋Š” ํŠœํ”Œ๋“ค์„ ๊ฐ™์ด ์‚ญ์ œ

 

3. ๋„ ๊ฐ’ nullify

์ฐธ์กฐ๋˜๋Š” ๋ฆด๋ ˆ์ด์…˜์—์„œ ํŠœํ”Œ์„ ์‚ญ์ œํ•˜๊ณ , ์ฐธ์กฐํ•˜๋Š” ๋ฆด๋ ˆ์ด์…˜์—์„œ ์ด ํŠœํ”Œ์„ ์ฐธ์กฐํ•˜๋Š” ํŠœํ”Œ๋“ค์˜ ๊ฐ’์„ ๋„๋กœ ๋ฐ”๊ฟ”์คŒ

 

4. ๋””ํดํŠธ ๊ฐ’

์ฐธ์กฐ๋˜๋Š” ๋ฆด๋ ˆ์ด์…˜์—์„œ ํŠœํ”Œ์„ ์‚ญ์ œํ•˜๊ณ , ์ฐธ์กฐํ•˜๋Š” ๋ฆด๋ ˆ์ด์…˜์—์„œ ์ด ํŠœํ”Œ์„ ์ฐธ์กฐํ•˜๋Š” ํŠœํ”Œ๋“ค์˜ ๊ฐ’์„ ๋””ํดํŠธ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ”์คŒ

 

-์ˆ˜์ •

DBMS๋Š” ์ˆ˜์ •ํ•˜๋Š” ์†์„ฑ์ด ๊ธฐ๋ณธ ํ‚ค ์ธ์ง€ ์™ธ๋ž˜ ํ‚ค ์ธ์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค

*์ˆ˜์ •ํ•˜๋ ค๋Š” ์†์„ฑ์ด PK, FK๊ฐ€ ์•„๋‹ˆ๋ฉด ์ˆ˜์ • ์—ฐ์ƒ์ด ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด์„ ์œ„๋ฐฐํ•˜์ง€ ์•Š๋Š”๋‹ค

 

*์ถœ์ฒ˜

์˜ค๋ผํด ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฐ์›€ํ„ฐ (์ƒ๋Šฅ, ํ™์˜๊ฒฝ)

์˜ค๋ผํด 11g + PL/SQL ์ž…๋ฌธ (๋Œ€๋ฆผ, ์„ฑ์œค๊ฒฝ ์„œ๋™๋ฆฐ)