Skip to content

Latest commit

ย 

History

History

05. Relational Data Model

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
ย 
ย 

Relational Data Model

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ๊ฐœ๋…

๊ด€๊ณ„๋ชจ๋ธ ์šฉ์–ด

  • ํ–‰ โ†’ ํŠœํ”Œ
  • ์—ด โ†’ ์• ํŠธ๋ฆฌ๋ทฐํŠธ
  • ํ…Œ์ด๋ธ” โ†’ ๋ฆด๋ ˆ์ด์…˜
  • ํ…Œ์ด๋ธ”์€ ์ˆ˜ํ•™ ๊ฐ์ฒด "๊ด€๊ณ„"์˜ ๊ตฌ์ฒด์ ์ธ ์ธ์Šคํ„ด์Šค
  • ๋„๋ฉ”์ธ(domain)
    • ์• ํŠธ๋ฆฌ๋ทฐํŠธ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ’(value)๋“ค์˜ ์ง‘ํ•ฉ
      • ๋‹จ์ˆœ๋„๋ฉ”์ธ(simpledomain) โ†’ ๋‹จ์ˆœ ์• ํŠธ๋ฆฌ๋ทฐํŠธ : ์›์ž๊ฐ’
      • ๋ณตํ•ฉ ๋„๋ฉ”์ธ (composite domain) โ†’ ๋ณตํ•ฉ ์• ํŠธ๋ฆฌ๋ทฐํŠธ : ๋ณตํ•ฉ๊ฐ’
        • ์—ฐ, ์›”, ์ผ โ‡’ ๋‚ ์งœ:<์—ฐ,์›”,์ผ>

๊ด€๊ณ„๋ชจ๋ธ์˜ ๊ตฌ์„ฑ

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

Relation์˜ ํŠน์„ฑ๋“ค

  • ํŠœํ”Œ์˜ ๋ฌด์ˆœ์„œ์„ฑ
    • ๋ฆด๋ ˆ์ด์…˜์€ ํŠœํ”Œ๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ •์˜๋จ
    • ์ง‘ํ•ฉ์—์„œ ์›์†Œ์˜ ์ˆœ์„œ๊ฐ€ ๋ฌด์˜๋ฏธํ•œ ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํŠœํ”Œ์˜ ์ˆœ์„œ ์—ญ์‹œ ์˜๋ฏธ๊ฐ€ ์—†์Œ
  • ์• ํŠธ๋ฆฌ๋ทฐํŠธ์˜ ์›์ž์„ฑ(atomic)
    • ํŠœํ”Œ ๋‚ด์˜ ๊ฐ ๊ฐ’์€ ๋” ์ด์ƒ ๋‚˜๋ˆŒ ์ˆ˜ ์—†๋Š” ์›์ž๊ฐ’(atomic value)๋“ค์ž„
    • ๊ฐ’์„ ์•Œ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ํ•ด๋‹น๋˜๋Š” ๊ฐ’์ด ์—†์„ ๋•Œ์—๋Š” NULL ์ด๋ผ๋Š” ํŠน์ˆ˜ ๊ฐ’์„ ์‚ฌ์šฉํ•จ. NULL๋„ atomic์œผ๋กœ ์ทจ๊ธ‰
      • ๋„(NULL)
        • โ€˜์ ์šฉํ•  ์ˆ˜ ์—†์Œ(inapplicable)โ€™์ด๋ผ๋Š” ์˜๋ฏธ
        • โ€˜์•Œ๋ ค์ง€์ง€ ์•Š์Œ(unknown)โ€™์˜ ์˜๋ฏธ

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ์ œ์•ฝ์กฐ๊ฑด (constraint)

  • ์ œ์•ฝ์กฐ๊ฑด์€ ๋ชจ๋“  ๋ฆด๋ ˆ์ด์…˜ ์ธ์Šคํ„ด์Šค๋“ค์ด ๋งŒ์กฑํ•ด์•ผ ํ•˜๋Š” ์กฐ๊ฑด์ž„
  • ์Šคํ‚ค๋งˆ ๊ธฐ๋ฐ˜ ์ œ์•ฝ์กฐ๊ฑด: ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ์Šคํ‚ค๋งˆ์—์„œ DDL์„ ํ†ตํ•ด ์ง์ ‘ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ์กฐ๊ฑด
    • (1) ๋„๋ฉ”์ธ ์ œ์•ฝ ์กฐ๊ฑด(domain constraints)
    • (2) ํ‚ค ์ œ์•ฝ์กฐ๊ฑด(key constraints)
    • (3) ๋„์— ๋Œ€ํ•œ ์ œ์•ฝ์กฐ๊ฑด(constraints on NULLs)
    • (4) ์—”ํ‹ฐํ‹ฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด(entity integrity constraints)
    • (5) ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด(referential integrity constraints)

(1) ๋„๋ฉ”์ธ ์ œ์•ฝ ์กฐ๊ฑด(domain constraints)

  • ๊ฐ ์• ํŠธ๋ฆฌ๋ทฐํŠธ A์˜ ๊ฐ’์€ ๋ฐ˜๋“œ์‹œ A์˜ ๋„๋ฉ”์ธ dom(A)์— ์†ํ•˜๋Š” ์›์ž๊ฐ’์ด์–ด์•ผ ํ•จ
    • VARCHAR ํ˜•์œผ๋กœ ์„ ์–ธ๋œ Name ๋ณ€์ˆ˜์—๋Š” ์ •์ˆ˜ํ˜• Integer ๊ฐ’์ด ์˜ฌ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ์˜๋ฏธ

(2) ํ‚ค ์ œ์•ฝ์กฐ๊ฑด(key constraints)

  • ํ‚ค : ํŠœํ”Œ์„ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์• ํŠธ๋ฆฌ๋ทฐํŠธ ์ง‘ํ•ฉ
  • ๋ฆด๋ ˆ์ด์…˜์€ ํŠœํ”Œ์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ •์˜๋˜๋ฏ€๋กœ, ๋ชจ๋“  ์›์†Œ๋Š” ์ค‘๋ณต๋˜์–ด์„œ๋Š” ์•ˆ ๋จ
  • ์–ด๋–ค ๋‘ ํŠœํ”Œ๋„ ๋ฆด๋ ˆ์ด์…˜์˜ ๋ชจ๋“  ์• ํŠธ๋ฆฌ๋ทฐํŠธ์— ๋Œ€ํ•ด ๊ฐ™์€ ๊ฐ’๋“ค์˜ ์กฐํ•ฉ์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Œ

  • ์Šˆํผ ํ‚ค (super key)
    • ์œ ์ผ์„ฑ(uniqueness)์€ ๋งŒ์กฑํ•˜์ง€๋งŒ ์ตœ์†Œ์„ฑ(minimality)์ด ๋งŒ์กฑ๋˜๋Š” ์•Š๋Š” ์• ํŠธ๋ฆฌ๋ทฐํŠธ์˜ ์ง‘ํ•ฉ
    • ํ‚ค(key)๋ฅผ ํฌํ•จํ•˜๋Š” ๋ชจ๋“  ์†์„ฑ์˜ ์ง‘ํ•ฉ
  • ๊ธฐ๋ณธ ํ‚ค (primary key)
    • ํ›„๋ณด ํ‚ค(candidate key) ์ค‘์—์„œ ๋ฐ์ดํƒ€๋ฒ ์ด์Šค ์„ค๊ณ„์ž๊ฐ€ ์ง€์ •ํ•œ ํ•˜๋‚˜์˜ ํ‚ค
    • ๊ฐ ํŠœํ”Œ์— ๋Œ€ํ•œ ๊ธฐ๋ณธํ‚ค ๊ฐ’์€ ํ•ญ์ƒ ์œ ํšจ(no NULL value)
  • ๋Œ€์ฒด ํ‚ค (alternate key)
    • ํ›„๋ณดํ‚ค ์ค‘์— ๊ธฐ๋ณธํ‚ค๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ํ›„๋ณดํ‚ค
  • ์Šˆํผํ‚ค(superkey), ํ›„๋ณดํ‚ค(candidate key), ๊ธฐ๋ณธํ‚ค(PK, primary key)
    • ํŠœํ”Œ์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๋ชจ๋‘ ์Šˆํผํ‚ค๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ

(3) NULL์— ๋Œ€ํ•œ ์ œ์•ฝ์กฐ๊ฑด(constraints on NULLs)

  • ์• ํŠธ๋ฆฌ๋ทฐํŠธ ๊ฐ’์œผ๋กœ ๋„์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ์• ํŠธ๋ฆฌ๋ทฐํŠธ๋Š” ๋„์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Œ

(4) ์—”ํ‹ฐํ‹ฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด(entity integrity constraints)

  • ์‚ฝ์ž…: ๊ธฐ๋ณธํ‚ค ๊ฐ’์ด ๊ฐ™์œผ๋ฉด ์‚ฝ์ž…์ด ๊ธˆ์ง€๋จ
  • ์ˆ˜์ •: ๊ธฐ๋ณธํ‚ค ๊ฐ’์ด ๊ฐ™๊ฑฐ๋‚˜ NULL๋กœ๋„ ์ˆ˜์ •์ด ๊ธˆ์ง€๋จ
  • ์‚ญ์ œ: ํŠน๋ณ„ํ•œ ํ™•์ธ์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ฆ‰์‹œ ์ˆ˜ํ–‰ํ•จ

(5) ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์กฐ๊ฑด(referential integrity constraints)

  • ํ•œ ๋ฆด๋ ˆ์ด์…˜์— ์žˆ๋Š” ํŠœํ”Œ์ด ๋‹ค๋ฅธ ๋ฆด๋ ˆ์ด์…˜์— ์žˆ๋Š” ํŠœํ”Œ์„ ์ฐธ์กฐํ•˜๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ ์ฐธ์กฐ๋˜๋Š” ํŠœํ”Œ์ด ๊ทธ ๋ฆด๋ ˆ์ด์…˜ ๋‚ด์— ์กด์žฌํ•ด์•ผ ํ•จ
  • ํ•˜๋‚˜์˜ ๋ฆด๋ ˆ์ด์…˜ R์—์„œ ์†์„ฑ F์˜ ๊ฐ’์œผ๋กœ ๋‹ค๋ฅธ ๋ฆด๋ ˆ์ด์…˜ S์˜ ๊ธฐ๋ณธํ‚ค P๊ฐ’์„ ์ฐธ์กฐํ•˜๋Š” ๊ฒฝ์šฐ์— R๊ณผ S๋Š” ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ ์กฐ๊ฑด์„ ๊ฐ€์ง„๋‹ค๊ณ  ํ•จ (F๋Š” NULL์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ)
  • t1[F] = t2[P]์ด๋ฉด R์˜ ํŠœํ”Œ t1์ด S์˜ ํŠœํ”Œ t2๋ฅผ ์ฐธ์กฐ(reference)ํ•œ๋‹ค๊ณ  ํ•˜๋ฉฐ, F๋ฅผ ์™ธ๋ž˜ํ‚ค(foreign key)๋ผ๊ณ  ๋ถ€๋ฆ„
    • R์„ ์ฐธ์กฐํ•œ(referencing) ๋ฆด๋ ˆ์ด์…˜, S๋ฅผ ์ฐธ์กฐ๋œ(referenced) ๋ฆด๋ ˆ์ด์…˜์ด๋ผ๊ณ  ๋ถ€๋ฆ„
  • ๋‹ค๋ฅธ ์ œ์•ฝ์กฐ๊ฑด๊ณผ ๋‹ฌ๋ฆฌ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์€ ๋‘ ๋ฆด๋ ˆ์ด์…˜์— ๋Œ€ํ•œ ์ œ์•ฝ์กฐ๊ฑด์ž„

  • ๋ถ€๋ชจ๋ฆด๋ ˆ์ด์…˜์— ์‚ฝ์ž…
    • ์ •์ƒ์ ์œผ๋กœ ์ง„ํ–‰๋จ
  • ์ž์‹๋ฆด๋ ˆ์ด์…˜์— ์‚ฝ์ž…
    • ์ฐธ์กฐ๋ฐ›๋Š” ํ…Œ์ด๋ธ”์— ์™ธ๋ž˜ํ‚ค ๊ฐ’์ด ์—†์œผ๋ฏ€๋กœ ์‚ฝ์ž… ๊ธˆ์ง€
  • ๋ถ€๋ชจ๋ฆด๋ ˆ์ด์…˜์˜ ์‚ญ์ œ
    • ์ฐธ์กฐํ•˜๋Š” ํ…Œ์ด๋ธ”์„ ๊ฐ™์ด ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์–ด์„œ ๊ธˆ์ง€ํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€์ž‘์—…์ด ํ•„์š”
  • ์ž์‹๋ฆด๋ ˆ์ด์…˜์˜ ์‚ญ์ œ
    • ๋ฐ”๋กœ ์‚ญ์ œ ๊ฐ€๋Šฅํ•จ
  • ์ˆ˜์ •
    • ์‚ญ์ œ์™€ ์‚ฝ์ž…์˜ ์—ฐ์† ์ˆ˜ํ–‰์œผ๋กœ ๊ฐ ์‚ญ์ œ์™€ ์‚ฝ์ž…์˜ ์ œ์•ฝ์„ ๊ณ ๋ คํ•˜์—ฌ ์ง„ํ–‰๋จ

Source

  1. Fundamentals of Database Systems 6th Edition by Ramez Elmasri, Shamkant B. Navathe.
  2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ (Database System Concepts) 6th Edition by Abranham Silberschatz, Henry F.Korth, S.Sudarchan, ๊น€ํ˜•์ฃผ ์—ญ.