Home
>
CS
>
2024
>
๐พ [CS] ๋ฐ์ดํฐ ์ ํฉ์ฑ(Data Integrity)์ด๋ ๋ฌด์์ผ๊น์?
CS
๐พ [CS] ๋ฐ์ดํฐ ์ ํฉ์ฑ(Data Integrity)์ด๋ ๋ฌด์์ผ๊น์?
-
๋ฐ์ดํฐ์ ์ ํ์ฑ, ์ผ๊ด์ฑ, ์ ๋ขฐ์ฑ์ ์ ์งํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- ๋ฐ์ดํฐ ์ ํฉ์ฑ(Data Integrity)์ด ๋ณด์ฅ๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์
์ ๋ก์ง๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์๋ก ์ผ๊ด์ฑ ์๊ฒ ์ ์ง๋๋ฉฐ, ๋ฐ์ดํฐ๊ฐ ์๋ํ์ง ์์ ๋ณ๊ฒฝ ์์ด ์ ๋ขฐ์ฑ ์๊ฒ ๊ด๋ฆฌ๋ฉ๋๋ค.
- ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๋ จ๋ ๋ชจ๋ ์์คํ
์์ ๋งค์ฐ ์ค์ํ ๊ฐ๋
์
๋๋ค.
1๏ธโฃ ๋ฐ์ดํฐ ์ ํฉ์ฑ(Data Integrity)์ด ์ค์ํ ์ด์ .
- ๋ฐ์ดํฐ ์ ํฉ์ฑ(Data Integrity)์ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐ์ดํฐ๊ฐ ์ ํํ๊ณ , ์ค๋ฅ ์์ด ์ ์ง๋ ์ ์๋๋ก ํ์ฌ, ์ฌ๋ฐ๋ฅธ ๋ฐ์ดํฐ ๊ธฐ๋ฐ์ผ๋ก ์์คํ
์ด ์ด์๋๊ฒ ํฉ๋๋ค.
- ๋ง์ฝ ๋ฐ์ดํฐ ์ ํฉ์ฑ(Data Integrity)์ด ๊นจ์ง๋ค๋ฉด, ์๋ชป๋ ๋ฐ์ดํฐ๋ก ์ธํด ์ ํ๋ฆฌ์ผ์ด์
์ด ์๋ชป๋ ๋์์ ์ํํ ์ ์์ผ๋ฉฐ, ์ด๋ ์ฌ์ฉ์์๊ฒ ํผ๋์ ์ฃผ๊ณ , ์์คํ
์ ์ ๋ขฐ์ฑ์ ๋จ์ด๋จ๋ฆด ์ ์์ต๋๋ค.
2๏ธโฃ ๋ฐ์ดํฐ ์ ํฉ์ฑ(Data Integrity)์ ์ข
๋ฅ.
- ๋ฐ์ดํฐ ์ ํฉ์ฑ(Data Integrity)๋ ํฌ๊ฒ ์ ํฉ์ฑ, ์ฐธ์กฐ ์ ํฉ์ฑ, ๋น์ฆ๋์ค ์ ํฉ์ฑ์ผ๋ก ๋๋ ์ ์์ต๋๋ค.
1๏ธโฃ ์ํฐํฐ ์ ํฉ์ฑ(Entity Integrity)
- ๊ฐ ์ํฐํฐ(ํ
์ด๋ธ)์ ๊ธฐ๋ณธ ํค(Primary Key)๋ ์ ์ผํ๊ณ ์ค๋ณต๋์ง ์์ผ๋ฉฐ NULL์ด ๋ ์ ์์์ ๋ณด์ฅํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, User ํ
์ด๋ธ์ id ํ๋๊ฐ ์ค๋ณต๋์ง ์๊ณ NULL ๊ฐ์ด ์๋ ๊ฒฝ์ฐ, ์ด๋ ์ํฐํฐ ์ ํฉ์ฑ์ด ์ ์ง๋ ๊ฒ์
๋๋ค.
2๏ธโฃ ์ฐธ์กฐ ์ ํฉ์ฑ(Referential Integrity)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ธ๋ ํค(Foreign Key)๋ฅผ ํตํด ์ฐ๊ด๋ ํ
์ด๋ธ ๊ฐ์ ๊ด๊ณ๊ฐ ์ผ๊ด๋๊ฒ ์ ์ง๋จ์ ์๋ฏธํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, Order ํ
์ด๋ธ์ด User ํ
์ด๋ธ์ ์ธ๋ ํค๋ก user_id๋ฅผ ๊ฐ์ง๋ ๊ฒฝ์ฐ, ๋ชจ๋ Order๊ฐ ์กด์ฌํ๋ user_id๋ฅผ ๊ฐ์ ธ์ผ ์ฐธ์กฐ ์ ํฉ์ฑ์ด ์ ์ง๋ฉ๋๋ค.
- ๋ง์ฝ User ํ
์ด๋ธ์์ ์ญ์ ๋ ์ฌ์ฉ์์ user_id๊ฐ Order ํ
์ด๋ธ์ ๋จ์ ์์ผ๋ฉด ์ฐธ์กฐ ์ ํฉ์ฑ์ด ๊นจ์ง ๊ฒ์
๋๋ค.
3๏ธโฃ ๋น์ฆ๋์ค ์ ํฉ์ฑ(Business Integrity)
- ๋น์ฆ๋์ค ๋ก์ง์ ๋ฐ๋ผ ํน์ ์กฐ๊ฑด๋ค์ด ์ผ๊ด๋๊ฒ ์ ์ง๋จ์ ๋ณด์ฅํฉ๋๋ค.
- ์ฆ, ๋น์ฆ๋์ค ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ๋ฐ์ดํฐ๊ฐ ์ ํํ ๋ฐ์๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, Account ํ
์ด๋ธ์์ ๊ณ์ข ์๊ณ ๊ฐ ์์๋ก ๋ด๋ ค๊ฐ์ง ์๋๋ก ํ๋ ๊ท์น์ด ์๋ค๋ฉด, ์ด ๊ท์น์ ์ง์ผ์ผ ๋น์ฆ๋์ค ์ ํฉ์ฑ์ด ์ ์ง๋ฉ๋๋ค.
3๏ธโฃ ๋ฐ์ดํฐ ์ ํฉ์ฑ ๋ณด์ฅ ๋ฐฉ๋ฒ.
- ๋ฐ์ดํฐ ์ ํฉ์ฑ์ ์ ์งํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฒ์ด ์ฌ์ฉ๋ฉ๋๋ค.
-
1. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฝ ์กฐ๊ฑด : ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ค์์ PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL ๋ฑ์ ์ ์ฝ ์กฐ๊ฑด์ ์ค์ ํ์ฌ ์ ํฉ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
-
2. ํธ๋์ญ์
: ํธ๋์ญ์
์ ACID(Atomicity, Consistency, Isolation, Durability) ์์ฑ์ ํตํด ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํฉ๋๋ค. ํธ๋์ญ์
๋ด์ ๋ชจ๋ ์์
์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๊ฑฐ๋ ๋ชจ๋ ์คํจํด์ผ ๋ฐ์ดํฐ ์ ํฉ์ฑ์ด ๋ณด์ฅ๋ฉ๋๋ค.
-
3. ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง : ๋น์ฆ๋์ค ์ ํฉ์ฑ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฟ๋ง ์๋๋ผ ์ ํ๋ฆฌ์ผ์ด์
์ฝ๋์์๋ ํ์ธ๋์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํน์ ๊ท์น์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ฝ์
ํ๊ฑฐ๋ ์
๋ฐ์ดํธํ๊ธฐ ์ ์ ๋ก์ง์ ํตํด ๊ฒ์ฆํ๋ ๋ฐฉ์์
๋๋ค.
4๏ธโฃ JPA์์์ ๋ฐ์ดํฐ ์ ํฉ์ฑ ์ ์ง.
- JPA๋ฅผ ์ฌ์ฉํ ๋๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ์ ํฉ์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
-
์ฐ๊ด๊ด๊ณ ์ฃผ์ธ ์ค์ : ์ฐ๊ด๊ด๊ณ ์ฃผ์ธ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ์ฌ, ์๋ฐฉํฅ ๊ด๊ณ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๊ฐ ์ผ๊ด๋๊ฒ ๋ฐ์๋๋๋ก ํฉ๋๋ค.
-
Cascade์ Orphan ๊ฐ์ฒด ์ฒ๋ฆฌ : CascadeType.ALL๊ณผ orphanRemoval = true ์ค์ ์ ํตํด ๋ถ๋ชจ-์์ ๊ด๊ณ์์ ๋ฐ์ดํฐ ์ ํฉ์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
-
ํธ๋์ญ์
๊ด๋ฆฌ : ๋ฐ์ดํฐ์ ์ฝ์
, ์์ , ์ญ์ ์์
์ ํธ๋์ญ์
์ผ๋ก ๋ฌถ์ด, ์์
๋์ค ์๋ฌ๊ฐ ๋ฐ์ํด๋ ์ ํฉ์ฑ์ด ๊นจ์ง์ง ์๋๋ก ํฉ๋๋ค.
5๏ธโฃ ์์ฝ.
- ๋ฐ์ดํฐ ์ ํฉ์ฑ์ ๋ฐ์ดํฐ์ ์ ํ์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ์ ์งํ๊ธฐ ์ํด ํ์์ ์ธ ๊ฐ๋
์
๋๋ค.
- ์ด๋ฅผ ๋ณด์ฅํ๋ ค๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฝ ์กฐ๊ฑด, ํธ๋์ญ์
๊ด๋ฆฌ, ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง์ ํตํ ๊ฒ์ฆ์ด ํ์ํ๋ฉฐ, JPA๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ฐ๊ด๊ด๊ณ์ ํธ๋์ญ์
์ ์ฌ๋ฐ๋ฅด๊ฒ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค.