software engineering/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์„ค๊ณ„ 11

[DB] ํ•จ์ˆ˜์™€ ํ”„๋กœ์‹œ์ €

์ปค์„œ (Cursor) ๋ ˆ์ฝ”๋“œ ๊ฐ๊ฐ์— ๋Œ€ํ•œ ๊ฐœ๋ณ„์ ์ธ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์˜ ํ™•์žฅ *๋ช…์‹œ์  ์ปค์„œ(Explicit Cursor) ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ์— ์ ‘๊ทผํ•ด์„œ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธ ์ผ๋ฐ˜์ ์œผ๋กœ ์ปค์„œ๋ผ๊ณ ํ•˜๋ฉด ๋ช…์‹œ์  ์ปค์„œ๋ฅผ ๋งํ•จ ์ฒ˜๋ฆฌ์ˆœ์„œ DECLARE(์ปค์„œ ์„ ์–ธ) : ์ปค์„œ์— ์ด๋ฆ„์„ ์ฃผ๊ณ , ์ปค์„œ๊ฐ€ ์ ‘๊ทผํ•˜๋ ค๋Š” ์ฟผ๋ฆฌ ์ •์˜ OPEN(์ปค์„œ ์—ด๊ธฐ) : ์ปค์„œ๋กœ ์ •์˜๋œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ FETCH(ํŒจ์น˜) : ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ์— ์ ‘๊ทผ CLOSE(์ปค์„œ๋‹ซ๊ธฐ) : ์ปค์„œ๋ฅผ ๋‹ซ๊ณ  ์ž์›์„ ๋ฐ˜ํ™˜ * ๋ฌต์‹œ์  ์ปค์„œ(Implicit Cursor) ์˜ค๋ผํด ๋‚ด๋ถ€์—์„œ ๊ฐ๊ฐ์˜ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์— ์ ‘๊ทผํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋‚ด๋ถ€์ ์ธ ์ปค์„œ SQL ์ปค์„œ : ํ•ญ์ƒ ์ตœ๊ทผ์— ์‹คํ–‰๋œ SQL ๋ฌธ์žฅ์— ๋Œ€ํ•œ ์ปค์„œ 'SQL'์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์†์„ฑ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ DML(..

[DB] ํŒŒํ‹ฐ์…˜, ๋ทฐ, ์‹œํ€€์Šค (Partition, View, Sequence)

ํŒŒํ‹ฐ์…˜(Partition) - ํฌ๊ธฐ๊ฐ€ ๋งค์šฐ ํฐ ํ…Œ์ด๋ธ”์ด๋‚˜ ์ธ๋ฑ์Šค๋ฅผ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•œ ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•˜๋Š” ๊ฒƒ - ๊ฐ๊ฐ์˜ ํŒŒํ‹ฐ์…˜์€ ์ž์‹ ์˜ ์ด๋ฆ„์„ ๊ฐ€์ง * ํŒŒํ‹ฐ์…˜์˜ ์žฅ์  ๊ฐ€์šฉ์„ฑ์˜ ์ฆ๊ฐ€ ์Šคํ‚ค๋งˆ ๊ฐ์ฒด์˜ ๊ด€๋ฆฌ ๋ฐ์ดํ„ฐ์›จ์–ดํ•˜์šฐ์Šค์—์„œ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ํ–ฅ์ƒ ์‘์šฉํ”„๋กœ๊ทธ๋žจ ์ž…์žฅ์—์„œ, ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์„ ๋ณด๋Š” ๊ฒƒ๊ณผ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— DML ๋ฌธ์žฅ์˜ ์ˆ˜์ •์ด ํ•„์š” ์—†์Œ * ํŒŒํ‹ฐ์…˜ ํ‚ค(Partition Key) ๋กœ์šฐ๊ฐ€ ํŠน์ • ํŒŒํ‹ฐ์…˜์— ์†ํ•˜๋Š” ๊ธฐ์ค€์ด๋˜๋Š” ํ•˜๋‚˜ ๋˜๋Š” ๋‘˜ ์ด์ƒ์˜ ์ปฌ๋Ÿผ Sales ํ…Œ์ด๋ธ”์—์„œ time_id์ปฌ๋Ÿผ์„ ๋ฒ”์œ„ํŒŒํ‹ฐ์…˜(Range partition)์œผ๋กœ ์ง€์ •ํ•˜๋ฉด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํŒŒํ‹ฐ์…˜ํ‚ค๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ํ•ด๋‹น ํŒŒํ‹ฐ์…˜์œผ๋กœ ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ๋ฒ  ์ž‘์—…์„ ์ˆ˜ํ–‰ * ํŒŒํ‹ฐ์…˜ ์ข…๋ฅ˜ ๋ฒ”์œ„ ํŒŒํ‹ฐ์…”๋‹(range partitioning) ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ ํŒŒํ‹ฐ์…˜ํ‚ค ๊ฐ’์˜ ๋ฒ”์œ„..

[DB] ๋ฝ๊ณผ ๋ฐ๋“œ๋ฝ (Dead Lock)

* ๋ฝ(Lock) - ํŠธ๋žœ์žญ์…˜ ์‚ฌ์ด์˜ ๊ฐ„์„ญ์„ ๋ง‰๊ณ  ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ์š”์†Œ - ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์„ ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ ๋ฝ ์„ค๋ช… ๊ณต์œ ๋ฝ(S; Shared Lock) - SELECT ๋ฌธ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ์ž‘์—…์— ์‚ฌ์šฉ - ๊ณต์œ ๋ฝ๋ผ๋ฆฌ๋Š” ์„œ๋กœ ํ˜ธํ™˜๋จ(๋™์‹œ์— ๊ฐ™์€ ๋ฐ์ดํ„ฐ SELECT ๊ฐ€๋Šฅ) ๋ฐฐํƒ€๋ฝ(E; Exclusive Lock) - ๋ฐ์ดํ„ฐ ์ˆ˜์ • ์ž‘์—…์ด ๋ฐœ์ƒ๋˜๋Š” INSERT, UPDATE, DELETE์—์„œ ์‚ฌ์šฉ - ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์—…๋ฐ์ดํŠธ ์ž‘์—…์ด ํ•˜๋‚˜์˜ ๋ฆฌ์†Œ์Šค์— ๋™์‹œ์— ์ˆ˜ํ–‰๋˜์ง€ ๋ชปํ•˜๋„๋ก ๋ฐฉ์ง€ ์—…๋ฐ์ดํŠธ๋ฝ (U; Update Lock) - ๊ณต์œ ๋ฝ์ด ์žˆ๋Š” ์ž์›์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ ์‹œ ์‚ฌ์šฉ ์˜๋„๋ฝ(Intent Lock) - ๋ฝ์˜ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ ..

[DB] ๋ฐ์ดํ„ฐ ๋™์‹œ์„ฑ๊ณผ ์ผ๊ด€์„ฑ

* ๋ฐ์ดํ„ฐ ๋™์‹œ์„ฑ(Data Concurrency) : ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ์„ ๋ณด์žฅ * ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ(Data Consistency) ๊ฐ๊ฐ์˜ ์‚ฌ์šฉ์ž๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ผ๊ด€์„ฑ ์žˆ๋Š” ๋ทฐ๋ฅผ ๋ณด์žฅ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ์ปค๋ฐ‹ํ•˜๊ธฐ ์ „์— ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„์€ ๋ณด์—ฌ์ง€์ง€ ์•Š์•„์•ผ ํ•จ * ํŠธ๋žœ์žญ์…˜์˜ ์ง๋ ฌ๊ฐ€๋Šฅ์„ฑ(Serializability) ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์ˆ˜ํ–‰๋˜๋ฉด์„œ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€(Transaction isloation level)์„ ์ •์˜ ํŠธ๋žœ์žญ์…˜์˜ ์ง๋ ฌ๊ฐ€๋Šฅ์„ฑ์€ ๊ฐ๊ฐ์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์น˜ ๋‹จ๋…์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ๋ณด์ด๋„๋ก ํ•จ ํŠธ๋ž™์žญ์…˜์„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜๊ณผ ์™„๋ฒฝํžˆ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นจ DBMS๋Š” ๋ฉ€ํ‹ฐ๋ฒ„์ „ ์ผ๊ด€์„ฑ ๋ชจ๋ธ(multiversion consiste..

[DB] ํŠธ๋žœ์žญ์…˜ (Transaction)

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

[DB] ์ธ๋ฑ์Šค ์„ ์ •

* ์ธ๋ฑ์Šค ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ฟผ๋ฆฌ 1. ์ธ๋ฑ์Šค ์ปฌ๋Ÿผ์„ ์กฐ๊ฑด์ ˆ์—์„œ ๊ฐ€๊ณตํ•˜๋Š” ๊ฒฝ์šฐ SELECT * FROM employees WHERE substr(email, 1, 2) = 'SV'; 2. ๋ถ€์ •ํ˜• ๋น„๊ต๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ SELECT * FROM employees WHERE id not between 150 and 200; * ์ธ๋ฑ์Šค ๋Œ€์ƒ ์ปฌ๋Ÿผ ์„ ์ • ๊ธฐ์ค€ ์‹œ, ๊ณ ๋ คํ•  ๊ฒƒ ์ปฌ๋Ÿผ ๋ถ„ํฌ๋„ ์ „์ฒด ๋ ˆ์ฝ”๋“œ์—์„œ ์‹๋ณ„ ๊ฐ€๋Šฅํ•œ ์ˆ˜์— ๋Œ€ํ•œ ๋ฐฑ๋ถ„์œจ ๋ถ„ํฌ๋„ ์ข‹์€ ์ปฌ๋Ÿผ ์„ ์ •์ด ๊ถŒ์žฅ๋˜์ง€๋งŒ, ๋ถ„ํฌ๋„ ๋งŒ์œผ๋กœ ํŒ๋‹จํ•˜๋Š” ๊ฒƒ์€ ์œ„ํ—˜ํ•จ ์ธ๋ฑ์Šค ๋ฐธ๋Ÿฐ์‹ฑ ์ธ๋ฑ์Šค ์ปฌ๋Ÿผ์ด ์ž์ฃผ ์—…๋ฐ์ดํŠธ ๋˜๋ฉด, ์ธ๋ฑ์Šค ๋ฐธ๋Ÿฐ์‹ฑ์ด ๊นจ์ง INSERT, DELETE, UPDATE ์‹œ ์ธ๋ฑ์Šค๋„ ํ•จ๊ป˜ ๋ณ€๊ฒฝ๋˜๋ฏ€๋กœ ๋น„์šฉ์ด ๋ฐœ์ƒ ๊ฐฑ์‹ ์ด ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์ปฌ๋Ÿผ์€ ์ธ๋ฑ์Šค ์ปฌ๋Ÿผ์œผ๋กœ ์„ ์ • ์‹œ ์‹ ์ค‘ํ•ด..

[DB] ์ธ๋ฑ์Šค (Index)

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

[DB] ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ

์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ(Referential Integrity) ํ…Œ์ด๋ธ” ์‚ฌ์ด์˜ ๊ด€๊ณ„ ๊ทœ์น™์„ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•œ ์ œ์•ฝ์กฐ๊ฑด ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ, ์ˆ˜์ •, ์‚ญ์ œ๋  ๋•Œ ๋‘ ํ…Œ์ด๋ธ” ๋กœ์šฐ ์‚ฌ์ด์˜ ์ •ํ•ฉ์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ ์ฐธ์กฐํ•˜๋Š” ํ…Œ์ด๋ธ”(์ž์‹ํ…Œ์ด๋ธ”)์— ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฝ์ž…๋  ๋•Œ์—๋Š” ํ•ญ์ƒ ์ฐธ์กฐ๋˜๋Š” ํ…Œ์ด๋ธ”(๋ถ€๋ชจํ…Œ์ด๋ธ”)์— ์žˆ๋Š” ๊ฐ’์œผ๋กœ ๋“ค์–ด๊ฐ ์™ธ๋ž˜ํ‚ค ์ œ์•ฝ์กฐ๊ฑด์œผ๋กœ ๊ตฌํ˜„ํ•จ * ์œ ์˜์‚ฌํ•ญ ์™ธ๋ž˜ํ‚ค๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „์— ๋ฐ˜๋“œ์‹œ ๋ถ€๋ชจํ…Œ์ด๋ธ”์ด ๋จผ์ € ์ƒ์„ฑ๋˜์–ด์•ผํ•œ๋‹ค ์ฐธ์กฐ๋˜๋Š” ๋ถ€๋ชจํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ์€ ๋ฐ˜๋“œ์‹œ ๊ธฐ๋ณธํ‚ค ๋˜๋Š” Unique ์ด์–ด์•ผํ•œ๋‹ค ํ•œ ๊ฐœ ์ด์ƒ์˜ ์ปฌ๋Ÿผ์œผ๋กœ ์™ธ๋ž˜ํ‚ค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ ์ž์‹ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” ๊ฐ’์„ ๋ถ€๋ชจํ…Œ์ด๋ธ”์—์„œ ์‚ญ์ œํ•  ์ˆ˜ ์—†์Œ ์ž…๋ ฅ ์‹œ์—๋Š” ๋ถ€๋ชจํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ์ž…๋ ฅํ•˜๊ณ  ์ž์‹ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ * ON DELETE ์˜ต์…˜ ์ฐธ์กฐ๋˜๊ณ  ์žˆ๋Š” ๋ถ€๋ชจํ…Œ์ด๋ธ”์˜ ๋ฐ..

[DB] ์˜์—ญ ๋ฌด๊ฒฐ์„ฑ

์˜์—ญ ๋ฌด๊ฒฐ์„ฑ(Domain Integrity) ํ•ด๋‹น ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด ์ปฌ๋Ÿผ์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ์˜์—ญ(๋„๋ฉ”์ธ) ๋‚ด์— ์†ํ•œ ๊ฐ’์ด์–ด์•ผ ํ•จ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋Šฅ์— ์˜ํ•ด ์œ ํšจ๊ฐ’์— ๋Œ€ํ•œ ๊ฒ€์ฆ์„ ์„ ํ–‰ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ œ์•ฝ์กฐ๊ฑด์„ ์„ ์–ธํ•˜์—ฌ ๋ฌด๊ฒฐ์„ฑ์„ ๊ฐ•ํ™” * ์ปฌ๋Ÿผ ๋ฐ์ดํ„ฐ ํƒ€์ž…(Data Type) : ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ์ปฌ๋Ÿผ์— ์ €์žฅ๋˜๋Š” ๊ฐ’์˜ ํ˜•์‹๊ณผ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋„๋ฉ”์ธ ๋ฌด๊ฒฐ์„ฑ์„ ์œ„ํ•œ ๊ธฐ์ดˆ ๋‹จ์œ„ * ์ตœ์†Œํ•œ์˜ ํฌ๊ธฐ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์„ ์ •์˜ ๊ธฐ๋ณธ ์›์น™์€ ์ตœ์†Œํ•œ์˜ ํฌ๊ธฐ๋กœ ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ ์š”๊ตฌ๋ฅผ ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์„ ์„ ์ •ํ•˜๋Š” ๊ฒƒ ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ๊ณต๊ฐ„์ด ์ ์„ ์ˆ˜๋ก ํ•œ ๋ธ”๋ก(ํŽ˜์ด์ง€)์— ๋” ๋งŽ์€ ๋กœ์šฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ธ”๋ก(ํŽ˜์ด์ง€) ๋กœ๋”ฉ ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค์–ด ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•˜๊ฒŒ ๋จ ๋ฌธ์ž์™€ ์ˆซ์ž ๋ฐ์ดํ„ฐ ํ˜•์‹์€ ์ผ๋ฐ˜์ ์œผ..

[DB] ๊ฐœ์ฒด ๋ฌด๊ฒฐ์„ฑ

๊ฐœ์ฒด ๋ฌด๊ฒฐ์„ฑ(Entity Integrity) ํ…Œ์ด๋ธ”์— ์ €์žฅ๋˜๋Š” ๊ฐ๊ฐ์˜ ๋กœ์šฐ์— ๋Œ€ํ•ด์„œ ์œ ์ผ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฌด๊ฒฐ์„ฑ ๋ฐ˜๋“œ์‹œ ๋ณด์žฅ๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ, ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ํŠธ๋ฆฌ๊ฑฐ๋ณด๋‹ค DBMS๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธํ‚ค(Primary Key) ์ œ์•ฝ์กฐ๊ฑด์ด๋‚˜ ์œ ์ผ์„ฑ(Unique) ์ œ์•ฝ์กฐ๊ฑด ๋“ฑ์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•จ * ์œ ์ผํ‚ค(Unique Key) ์ œ์•ฝ์กฐ๊ฑด ์ง€์ •๋œ ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด ์ค‘๋ณต๋˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ ํ…Œ์ด๋ธ”์— ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Œ NULL ๊ฐ’์€ ํ—ˆ์šฉ ๋ณตํ•ฉ ์œ ์ผํ‚ค(Composite Unique Key) : ํ•œ ๊ฐœ ์ด์ƒ์˜ ์ปฌ๋Ÿผ์„ ์กฐํ•ฉํ•˜์—ฌ ์œ ์ผํ‚ค๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ * ๊ธฐ๋ณธํ‚ค(Primary Key) ์ œ์•ฝ์กฐ๊ฑด ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด ํ…Œ์ด๋ธ” ๋‹น ํ•˜๋‚˜๋งŒ ์ง€์ • ๊ฐ€๋Šฅํ•จ ์œ ์ผ(Unique)ํ•ด์•ผํ•˜๊ณ , NULL๊ฐ’์„ ๊ฐ€..