Home > CS > 2024 > ๐Ÿ’พ [CS] ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ(Data Integrity)์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?

๐Ÿ’พ [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๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์—ฐ๊ด€๊ด€๊ณ„์™€ ํŠธ๋žœ์žญ์…˜์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.