• Mindscape ๐Ÿ”ฅ
    • Playlist ๐ŸŽง
  • Ubuntu

    • Wine ํ™˜๊ฒฝ์—์„œ ์นด์นด์˜คํ†ก ์‹คํ–‰ ์‹œ explorer.exe ๋œจ์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๋ฒ•
    • Wine ์นด์นด์˜คํ†ก ์Šคํฌ๋ฆฐ์ƒท ๋ถ™์—ฌ๋„ฃ๊ธฐ ๋ฌธ์ œ ํ•ด๊ฒฐ (Wayland ํ™˜๊ฒฝ)
    • Wine ์นด์นด์˜คํ†ก ์ด๋ชจ์ง€ ๊นจ์ง ๋ฌธ์ œ ํ•ด๊ฒฐ
  • Wellness

    • ์ฐจ์ „์žํ”ผ (Psyllium Husk)
    • ์—‘์ŠคํŠธ๋ผ ๋ฒ„์ง„ ์˜ฌ๋ฆฌ๋ธŒ์œ  (Extra Virgin Olive Oil)
    • ์ž๊ฐ€๋น„๊ฐ•์„ธ์ฒ™ (Nasal Irrigation)
    • QCY HT08 (MeloBuds Pro Plus)
  • Humanities

    • Nordvik, Russia
    • North Sentinel Island
    • ๋กฑ๊ณ ๋กฑ๊ณ (Rongorongo)
  • ๐Ÿ—‚๏ธ Database System

    • 1. Introduction
    • 2. Relational Model
    • 3. SQL
    • 6. E-R Model
    • 7. Relational Database Design (1)
    • 7. Relational Database Design (2)
    • 13. Data Storage Structures
    • 14. Indexing
    • 15. Query Processing
    • 16. Query Optimization
    • 17. Transactions
    • 18. Concurrency Control
    • 19. Recovery System

7. Relational Database Design (1)

Introduction

  • Relational Database Design(๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„)
    • ์ •๋ณด ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๋Š” "์ข‹์€" relation schema(relation schema)์˜ ์ง‘ํ•ฉ์„ ์ฐพ๋Š” ๊ณผ์ •
  • ์„ค๊ณ„ ๋ชฉํ‘œ
    • ํšŒํ”ผ ๊ฐ€๋Šฅํ•œ redundancy ์—†์ด ๋ชจ๋“  ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ํ‘œํ˜„(์ €์žฅ)ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค schema ์„ค๊ณ„
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ relation ๋ฐ ๊ฐ relation์˜ schema ์ •์˜
      • R=(A,B,C,D,E)R = (A, B, C, D, E)R=(A,B,C,D,E) : ๋‹จ์ผ relation schema
      • DB={R1,โ€ฆ,Rn}DB = \{ R_1, \dots, Rn\}DB={R1โ€‹,โ€ฆ,Rn} : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค schema (relation schema์˜ ์ง‘ํ•ฉ)
  • Relational database design์˜ ํ•จ์ •
    • ์ž˜๋ชป๋œ ์„ค๊ณ„๋Š” ๋‹ค์Œ์„ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Œ.
      • ํŠน์ • ์ •๋ณด ํ‘œํ˜„ ๋ถˆ๊ฐ€
      • ์ •๋ณด์˜ ๋ฐ˜๋ณต
      • ์ •๋ณด์˜ ์†์‹ค
  • ์„ค๊ณ„ ๋ชฉํ‘œ
    • Attribute ๊ฐ„์˜ relation์ด ํ‘œํ˜„๋˜๋„๋ก ๋ณด์žฅ
    • ์ค‘๋ณต ๋ฐ์ดํ„ฐ ํšŒํ”ผ
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค integrity constraint์˜ ์šฉ์ดํ•œ ์ ์šฉ

Overview of Normalization

Features of Good Relational Designs

IDIDIDnamenamenamesalarysalarysalarydept_namedept\_namedept_namebuildingbuildingbuildingbudgetbudgetbudget
22222Einstein95000PhysicsWatson70000
12121Wu90000FinancePainter120000
32343El Said60000HistoryPainter50000
45565Katz75000Comp. Sci.Taylor100000
98345Kim80000Elec. Eng.Taylor85000
76766Crick72000BiologyWatson90000
10101Srinivasan65000Comp. Sci.Taylor100000
58583Califieri62000HistoryPainter50000
83821Brandt92000Comp. Sci.Taylor100000
15151Mozart40000MusicPackard80000
33456Gold87000PhysicsWatson70000
76543Singh80000FinancePainter120000
  • instructor์™€ department relation์„ natural joinํ•˜์—ฌ in_dep์œผ๋กœ ๊ฒฐํ•ฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •
    • ์ •๋ณด์˜ ๋ฐ˜๋ณต(redundancy) ๋ฐœ์ƒ
    • (๊ฐ•์‚ฌ๊ฐ€ ์—†๋Š” ์ƒˆ๋กœ์šด ๋ถ€์„œ๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฒฝ์šฐ) Null value(null๊ฐ’) ์‚ฌ์šฉ ํ•„์š”
  • ์ด relation schema์˜ primary key๋Š” ๋ฌด์—‡์ด ๋  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    • (ID, dept_name): ID์— null๊ฐ’์ด ์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ dept_name์ด ํ‚ค์— ํฌํ•จ๋˜์–ด์•ผ ํ•จ.

Redundancy creates problems

  • Anomalies(์ด์ƒ ํ˜„์ƒ) (by Codd)
    • Insertion anomaly(์‚ฝ์ž… ์ด์ƒ): ๊ฐ•์‚ฌ ์—†์ด๋Š” ์ƒˆ๋กœ์šด ๋ถ€์„œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅ
      • ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์€ null๊ฐ’ ์‚ฌ์šฉ ํ•„์š”
    • Deletion anomaly(์‚ญ์ œ ์ด์ƒ): ํ•œ ๋ถ€์„œ์˜ ์œ ์ผํ•œ ๊ฐ•์‚ฌ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ (์˜ˆ: Music ๋ถ€์„œ์˜ Mozart)
      • ๋ถ€์„œ ์ •๋ณด๋ฅผ ๋ณด์กดํ•˜๊ธฐ ์œ„ํ•ด null๊ฐ’ ์‚ฌ์šฉ ํ•„์š”
      • ํ•ด๋‹น ์‚ฌ๋ก€๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๋ณต์žกํ•œ ์‚ญ์ œ ๋กœ์ง ์š”๊ตฌ
    • Update anomaly(๊ฐฑ์‹  ์ด์ƒ): CS ๋ถ€์„œ์˜ ์˜ˆ์‚ฐ์ด ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝ์šฐ
      • CS ๋ถ€์„œ์˜ ๋ชจ๋“  ์ค‘๋ณต๋œ ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•œ ๊ฐฑ์‹  ํ•„์š”
  • ์›์ธ: ๋ฐ์ดํ„ฐ redundancy
    • ๋‹จ์ผ ํ…Œ์ด๋ธ”์— ์—ฌ๋Ÿฌ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๊ณต์กด
  • ํ•ด๊ฒฐ์ฑ…: Decomposition(๋ถ„ํ•ด)

Decomposition

  • in_dep schema์—์„œ ์ •๋ณด ๋ฐ˜๋ณต ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ schema๋ฅผ instructor์™€ department ๋‘ ๊ฐœ๋กœ ๋ถ„ํ•ดํ•˜๋Š” ๊ฒƒ
    • ๋ถ„ํ•ด๋œ schema๋Š” ์ด์ „ ์˜ˆ์ œ์˜ ๋ฌธ์ œ๋“ค์„ ๊ฐ€์ง€์ง€ ์•Š์Œ.
  • ๋ชจ๋“  ๋ถ„ํ•ด๊ฐ€ ์ข‹์€ ๊ฒƒ์€ ์•„๋‹˜. employee(ID, name, street, city, salary)๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถ„ํ•ดํ•œ๋‹ค๊ณ  ๊ฐ€์ •
    • employee1(ID, name)
    • employee2(name, street, city, salary)
  • ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ๋‘ ๋ช…์˜ ์ง์›์ด ์žˆ์„ ๋•Œ ๋ฌธ์ œ ๋ฐœ์ƒ
    • ์›๋ณธ employee relation๋ฅผ ์žฌ๊ตฌ์„ฑํ•  ์ˆ˜ ์—†์Œ: Lossy decomposition(์†์‹ค ๋ถ„ํ•ด)
  • ๋‹ค์Œ ์Šฌ๋ผ์ด๋“œ๋Š” ์ •๋ณด๊ฐ€ ์–ด๋–ป๊ฒŒ ์†์‹ค๋˜๋Š”์ง€ ๋ณด์—ฌ์คŒ

A Lossy Decomposition

alt text

  • ID 57766์ธ Kim์ด Perryridge์— ์‚ฐ๋‹ค๋Š” ๊ฒƒ์€ ํ™•์‹  ๊ฐ€๋Šฅ
  • (๋ถ„ํ•ด ํ›„ ๋‹ค์‹œ joinํ–ˆ์„ ๋•Œ) ID 57766์ธ Kim์ด ์–ด๋””์— ์‚ฌ๋Š”์ง€ ํ™•์‹  ๋ถˆ๊ฐ€๋Šฅ!

Lossless Decomposition

  • RRR์„ relation schema๋ผ ํ•˜๊ณ , R1R_1R1โ€‹๊ณผ R2R_2R2โ€‹๊ฐ€ RRR์˜ ๋ถ„ํ•ด๋ฅผ ํ˜•์„ฑํ•œ๋‹ค๊ณ  ๊ฐ€์ •
    • ์ฆ‰, R=R1โˆชR2R = R_1 \cup R_2R=R1โ€‹โˆชR2โ€‹
  • RRR์„ ๋‘ ๊ฐœ์˜ relation schema R1โˆชR2R_1 \cup R_2R1โ€‹โˆชR2โ€‹๋กœ ๋Œ€์ฒดํ•จ์œผ๋กœ์จ ์ •๋ณด์˜ ์†์‹ค์ด ์—†๋‹ค๋ฉด, ์ด ๋ถ„ํ•ด๋ฅผ Lossless decomposition(๋ฌด์†์‹ค ๋ถ„ํ•ด)์ด๋ผ๊ณ  ํ•จ.
  • ๊ณต์‹์ ์œผ๋กœ, RRR schema๋ฅผ ๊ฐ€์ง„ relation์ด rrr์ผ ๋•Œ

    ฮ R1(r)โ‹ˆฮ R2(r)=r\Pi_{R_1}(r) \bowtie \Pi_{R_2}(r) = r ฮ R1โ€‹โ€‹(r)โ‹ˆฮ R2โ€‹โ€‹(r)=r

  • ๋ฐ˜๋Œ€๋กœ, ๋ถ„ํ•ด๊ฐ€ ์†์‹ค ๋ถ„ํ•ด์ธ ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Œ.

    rโŠ‚ฮ R1(r)โ‹ˆฮ R2(r)r \subset \Pi_{R_1}(r) \bowtie \Pi_{R_2}(r) rโŠ‚ฮ R1โ€‹โ€‹(r)โ‹ˆฮ R2โ€‹โ€‹(r)

  • (ฮ R1(r)โ‹ˆฮ R2(r)โŠ‚r\Pi_{R_1}(r) \bowtie \Pi_{R_2}(r) \subset rฮ R1โ€‹โ€‹(r)โ‹ˆฮ R2โ€‹โ€‹(r)โŠ‚r๋Š” ์ ˆ๋Œ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์—†์Œ)

Example of Lossless Decomposition

  • rrr
    AAABBBCCC
    ฮฑ\alphaฮฑ1A
    ฮฒ\betaฮฒ2B
  • ฮ A,B(r)\Pi_{A,B}(r)ฮ A,Bโ€‹(r)
    AAABBB
    ฮฑ\alphaฮฑ1
    ฮฒ\betaฮฒ2
  • ฮ B,C(r)\Pi_{B,C}(r)ฮ B,Cโ€‹(r)
    BBBCCC
    1A
    2B
  • ฮ A,B(r)โ‹ˆฮ B,C(r)\Pi_{A,B}(r) \bowtie \Pi_{B,C}(r)ฮ A,Bโ€‹(r)โ‹ˆฮ B,Cโ€‹(r)
    AAABBBCCC
    ฮฑ\alphaฮฑ1A
    ฮฒ\betaฮฒ2B

Normalization Theory

  • ํŠน์ • relation RRR์ด "์ข‹์€ ํ˜•ํƒœ"์ธ์ง€, ์ฆ‰ ์ •๋ณด ๋ฐ˜๋ณต ๋ฌธ์ œ๊ฐ€ ์—†๋Š”์ง€ ํŒ๋‹จ
  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ผ๋ฐ˜์ ์œผ๋กœ normalization(์ •๊ทœํ™”)์œผ๋กœ ์•Œ๋ ค์ง„ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž„.
  • Normalization์˜ ๋ชฉํ‘œ
    • Relation RRR์ด "์ข‹์€ ํ˜•ํƒœ"๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ, ์ด๋ฅผ relation์˜ ์ง‘ํ•ฉ {R1,R2,โ€ฆ,Rn}\{R_1, R_2, \dots, R_n\}{R1โ€‹,R2โ€‹,โ€ฆ,Rnโ€‹}์œผ๋กœ ๋ถ„ํ•ด
      • ๊ฐ relation์€ ์ข‹์€ ํ˜•ํƒœ(Normal form, ์ •๊ทœํ˜•)์ž„.
      • ๋ถ„ํ•ด๋Š” ๋ฌด์†์‹ค ๋ถ„ํ•ด์ž„.
  • ์ด ์ด๋ก ์€ ๋‹ค์Œ์— ๊ธฐ๋ฐ˜ํ•จ.
    • Functional dependencies(ํ•จ์ˆ˜ ์ข…์†์„ฑ) (๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹)
    • Multivalued dependencies (์ด ์ˆ˜์—…์—์„œ๋Š” ๋‹ค๋ฃจ์ง€ ์•Š์Œ)

Functional Dependencies

  • ํ˜„์‹ค ์„ธ๊ณ„์˜ ๋ฐ์ดํ„ฐ์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์–‘ํ•œ Constraint (rule)์ด ์กด์žฌ
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ๋Œ€ํ•™ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์œ ์ง€๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ์ œ์•ฝ์กฐ๊ฑด
    • ํ•™์ƒ๊ณผ ๊ฐ•์‚ฌ๋Š” ID๋กœ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„๋จ
    • ๊ฐ ํ•™์ƒ๊ณผ ๊ฐ•์‚ฌ๋Š” ํ•˜๋‚˜์˜ ์ด๋ฆ„๋งŒ ๊ฐ€์ง
    • ๊ฐ ๊ฐ•์‚ฌ์™€ ํ•™์ƒ์€ (์ฃผ๋กœ) ํ•˜๋‚˜์˜ ๋ถ€์„œ์—๋งŒ ์†Œ์†๋จ
    • ๊ฐ ๋ถ€์„œ๋Š” ์˜ˆ์‚ฐ์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ๊ฐ€์ง€๋ฉฐ, ํ•˜๋‚˜์˜ ๊ด€๋ จ๋œ ๊ฑด๋ฌผ๋งŒ ์žˆ์Œ.
  • ์ด๋Ÿฌํ•œ ๋ชจ๋“  ํ˜„์‹ค ์„ธ๊ณ„์˜ ์ œ์•ฝ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” relation์˜ ์ธ์Šคํ„ด์Šค๋ฅผ legal instance๋ผ ํ•จ.
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ legal instance๋Š” ๋ชจ๋“  relation ์ธ์Šคํ„ด์Šค๊ฐ€ legal instance์ธ ๊ฒฝ์šฐ์ž„.
  • Legal relation ์ง‘ํ•ฉ์— ๋Œ€ํ•œ ์ œ์•ฝ์กฐ๊ฑด
    • Functional Dependency (FD): ํŠน์ • ์†์„ฑ ์ง‘ํ•ฉ์˜ ๊ฐ’์ด ๋‹ค๋ฅธ ์†์„ฑ ์ง‘ํ•ฉ์˜ ๊ฐ’์„ ๊ณ ์œ ํ•˜๊ฒŒ ๊ฒฐ์ •ํ•˜๋„๋ก ์š”๊ตฌ
    • ํ•จ์ˆ˜ ์ข…์†์„ฑ์€ key ๊ฐœ๋…์˜ ์ผ๋ฐ˜ํ™”์ž„.

Functional Dependencies Definition

  • RRR์„ relation schema๋ผ ํ•  ๋•Œ
    • ฮฑโІR\alpha \subseteq RฮฑโІR ์ด๊ณ  ฮฒโІR\beta \subseteq RฮฒโІR
  • ํ•จ์ˆ˜ ์ข…์†์„ฑ

    ฮฑโ†’ฮฒ\alpha \rightarrow \beta ฮฑโ†’ฮฒ

    ๋Š” ๋ชจ๋“  legal relation r(R)r(R)r(R)์— ๋Œ€ํ•ด, rrr์˜ ์ž„์˜์˜ ๋‘ ํŠœํ”Œ(tuple) t1t_1t1โ€‹๊ณผ t2t_2t2โ€‹๊ฐ€ ์†์„ฑ ฮฑ\alphaฮฑ์— ๋Œ€ํ•ด ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์งˆ ๋•Œ๋งˆ๋‹ค ์†์„ฑ ฮฒ\betaฮฒ์— ๋Œ€ํ•ด์„œ๋„ ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์งˆ ๊ฒฝ์šฐ์—๋งŒ RRR์— ๋Œ€ํ•ด ์„ฑ๋ฆฝํ•จ.
  • ์ฆ‰,
    • t1[ฮฑ]=t2[ฮฑ]โ€…โ€ŠโŸนโ€…โ€Št1[ฮฒ]=t2[ฮฒ]t_1[\alpha] = t_2[\alpha] \implies t_1[\beta] = t_2[\beta]t1โ€‹[ฮฑ]=t2โ€‹[ฮฑ]โŸนt1โ€‹[ฮฒ]=t2โ€‹[ฮฒ]
  • ์˜ˆ์‹œ: ๋‹ค์Œ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€์ง„ r(A,B)r(A, B)r(A,B)๋ฅผ ๊ณ ๋ ค
    AB
    14
    15
    37
    • ์ด ์ธ์Šคํ„ด์Šค์—์„œ Bโ†’AB \rightarrow ABโ†’A๋Š” ์„ฑ๋ฆฝํ•˜์ง€๋งŒ Aโ†’BA \rightarrow BAโ†’B๋Š” ์„ฑ๋ฆฝํ•˜์ง€ ์•Š์Œ.

Closure of a Set of Functional Dependencies

  • ํ•จ์ˆ˜ ์ข…์†์„ฑ ์ง‘ํ•ฉ FFF๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, FFF์— ์˜ํ•ด ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ•จ์ถ•๋˜๋Š” ๋‹ค๋ฅธ ํŠน์ • ํ•จ์ˆ˜ ์ข…์†์„ฑ๋“ค์ด ์กด์žฌ
    • ๋งŒ์•ฝ Aโ†’BA \rightarrow BAโ†’B์ด๊ณ  Bโ†’CB \rightarrow CBโ†’C์ด๋ฉด, Aโ†’CA \rightarrow CAโ†’C๋ฅผ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ์Œ.
  • FFF์— ์˜ํ•ด ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ•จ์ถ•๋œ ๋ชจ๋“  ํ•จ์ˆ˜ ์ข…์†์„ฑ์˜ ์ง‘ํ•ฉ์„ FFF์˜ Closure(ํํฌ)๋ผ๊ณ  ํ•จ.
  • FFF์˜ ํํฌ๋ฅผ F+F^+F+๋กœ ํ‘œ๊ธฐํ•จ.

Keys and Functional Dependencies

  • KKK๊ฐ€ relation schema RRR์˜ superkey์ธ ๊ฒƒ์€ Kโ†’RK \rightarrow RKโ†’R์ผ ๋•Œ์™€ ๋™์น˜์ž„.
  • KKK๊ฐ€ RRR์˜ candidate key์ธ ๊ฒƒ์€ ๋‹ค์Œ ๋‘ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•  ๋•Œ์™€ ๋™์น˜์ž„.
    • Kโ†’RK \rightarrow RKโ†’R
    • ฮฑโŠ‚K\alpha \subset KฮฑโŠ‚K์ธ ์–ด๋–ค ฮฑ\alphaฮฑ์— ๋Œ€ํ•ด์„œ๋„ ฮฑโ†’R\alpha \rightarrow Rฮฑโ†’R์ด ์„ฑ๋ฆฝํ•˜์ง€ ์•Š์Œ.
  • ํ•จ์ˆ˜ ์ข…์†์„ฑ์€ superkey๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๋Š” ์ œ์•ฝ์กฐ๊ฑด์„ ํ‘œํ˜„ํ•˜๊ฒŒ ํ•ด์คŒ
  • Schema in_dep(ID, name, salary, dept_name, building, budget)๋ฅผ ๊ณ ๋ ค
    • ์ฃผ๋กœ ๋‹ค์Œ ํ•จ์ˆ˜ ์ข…์†์„ฑ๋“ค์ด ์„ฑ๋ฆฝํ•  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•จ.
      • dept_name โ†’\rightarrowโ†’ building
      • ID โ†’\rightarrowโ†’ building
    • ํ•˜์ง€๋งŒ ๋‹ค์Œ์€ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š์„ ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•จ.
      • dept_name โ†’\rightarrowโ†’ salary

Keys and Functional Dependencies

  • ํ•จ์ˆ˜ ์ข…์†์„ฑ์˜ ์‚ฌ์šฉ ๋ชฉ์ 
    • ์ฃผ์–ด์ง„ ํ•จ์ˆ˜ ์ข…์†์„ฑ ์ง‘ํ•ฉ ํ•˜์—์„œ relation์ด legalํ•œ์ง€ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด
      • Relation rrr์ด ํ•จ์ˆ˜ ์ข…์†์„ฑ ์ง‘ํ•ฉ FFF ํ•˜์—์„œ legalํ•˜๋ฉด, rrr์ด FFF๋ฅผ ๋งŒ์กฑํ•œ๋‹ค๊ณ  ๋งํ•จ.
    • Legal relation์˜ ์ง‘ํ•ฉ์— ๋Œ€ํ•œ ์ œ์•ฝ์กฐ๊ฑด ๋ช…์‹œํ•˜๊ธฐ ์œ„ํ•ด
      • RRR์— ๋Œ€ํ•œ ๋ชจ๋“  legal relation์ด ํ•จ์ˆ˜ ์ข…์†์„ฑ ์ง‘ํ•ฉ FFF๋ฅผ ๋งŒ์กฑํ•˜๋ฉด, FFF๊ฐ€ RRR์—์„œ ์„ฑ๋ฆฝํ•œ๋‹ค๊ณ  ๋งํ•จ.
  • ์ฐธ๊ณ : Relation schema์˜ ํŠน์ • ์ธ์Šคํ„ด์Šค๋Š”, ๋ชจ๋“  legal ์ธ์Šคํ„ด์Šค์—์„œ ํ•จ์ˆ˜ ์ข…์†์„ฑ์ด ์„ฑ๋ฆฝํ•˜์ง€ ์•Š๋”๋ผ๋„, ์šฐ์—ฐํžˆ ํ•ด๋‹น ํ•จ์ˆ˜ ์ข…์†์„ฑ์„ ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ์Œ.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, instructor์˜ ํŠน์ • ์ธ์Šคํ„ด์Šค๊ฐ€ ์šฐ์—ฐํžˆ name โ†’\rightarrowโ†’ ID๋ฅผ ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ์Œ.
  • ํ•จ์ˆ˜ ์ข…์†์„ฑ์ด relation์˜ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค(legalํ•˜๋“  ์•„๋‹ˆ๋“ )์— ์˜ํ•ด ๋งŒ์กฑ๋˜๋ฉด trivial(์ž๋ช…ํ•œ) ํ•จ์ˆ˜ ์ข…์†์„ฑ์ด๋ผ ํ•จ.
    • ์˜ˆ์‹œ
      • ID, name โ†’\rightarrowโ†’ ID
      • name โ†’\rightarrowโ†’ name
    • ์ผ๋ฐ˜์ ์œผ๋กœ, ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ๋Š” ฮฒโІฮฑ\beta \subseteq \alphaฮฒโІฮฑ์ผ ๋•Œ ์ž๋ช…ํ•จ.

Lossless Decomposition and Functional Dependencies

  • ํŠน์ • ๋ถ„ํ•ด๊ฐ€ ๋ฌด์†์‹ค์ธ์ง€ ๋ณด์ด๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜ ์ข…์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
  • R=(R1,R2)R = (R_1, R_2)R=(R1โ€‹,R2โ€‹)์˜ ๊ฒฝ์šฐ, schema RRR ์œ„์˜ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ relation rrr์— ๋Œ€ํ•ด ๋‹ค์Œ์„ ์š”๊ตฌ

    r=ฮ R1(r)โ‹ˆฮ R2(r)r = \Pi_{R_1}(r) \bowtie \Pi_{R_2}(r) r=ฮ R1โ€‹โ€‹(r)โ‹ˆฮ R2โ€‹โ€‹(r)

  • RRR์„ R1R_1R1โ€‹๊ณผ R2R_2R2โ€‹๋กœ ๋ถ„ํ•ดํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์†์‹ค ๋ถ„ํ•ด์ด๋ ค๋ฉด, RRR์—์„œ ์„ฑ๋ฆฝํ•˜๋Š” FFF์— ๋Œ€ํ•ด, ๋‹ค์Œ ์ข…์†์„ฑ ์ค‘ ์ ์–ด๋„ ํ•˜๋‚˜๊ฐ€ F+F^+F+์— ์†ํ•ด์•ผ ํ•จ.
    • R1โˆฉR2โ†’R1R_1 \cap R_2 \rightarrow R_1R1โ€‹โˆฉR2โ€‹โ†’R1โ€‹
    • R1โˆฉR2โ†’R2R_1 \cap R_2 \rightarrow R_2R1โ€‹โˆฉR2โ€‹โ†’R2โ€‹
  • ์œ„์˜ ํ•จ์ˆ˜ ์ข…์†์„ฑ๋“ค์€ ๋ฌด์†์‹ค join ๋ถ„ํ•ด๋ฅผ ์œ„ํ•œ ์ถฉ๋ถ„์กฐ๊ฑด์ž„.

Example

  • R=(A,B,C)R = (A, B, C)R=(A,B,C), F={Aโ†’B,Bโ†’C}F = \{A \rightarrow B, B \rightarrow C\}F={Aโ†’B,Bโ†’C}
  • R1=(A,B),R2=(B,C)R_1 = (A, B), R_2 = (B, C)R1โ€‹=(A,B),R2โ€‹=(B,C)๋Š” ๋ฌด์†์‹ค ๋ถ„ํ•ด์ž„.
    • R1โˆฉR2={B}R_1 \cap R_2 = \{B\}R1โ€‹โˆฉR2โ€‹={B}์ด๊ณ  Bโ†’BCB \rightarrow BCBโ†’BC
  • R1=(A,B),R2=(A,C)R_1 = (A, B), R_2 = (A, C)R1โ€‹=(A,B),R2โ€‹=(A,C)๋Š” ๋ฌด์†์‹ค ๋ถ„ํ•ด์ž„.
    • R1โˆฉR2={A}R_1 \cap R_2 = \{A\}R1โ€‹โˆฉR2โ€‹={A}์ด๊ณ  Aโ†’ABA \rightarrow ABAโ†’AB
  • ์ฐธ๊ณ 
    • Bโ†’BCB \rightarrow BCBโ†’BC๋Š” Bโ†’{B,C}B \rightarrow \{B, C\}Bโ†’{B,C}์˜ ์ถ•์•ฝ ํ‘œ๊ธฐ์ž„.

Dependency Preservation

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๊ฐฑ์‹ ๋  ๋•Œ๋งˆ๋‹ค ํ•จ์ˆ˜ ์ข…์†์„ฑ ์ œ์•ฝ์กฐ๊ฑด์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์€ ๋น„์šฉ์ด ๋งŽ์ด ๋“ค ์ˆ˜ ์žˆ์Œ.
  • ์ œ์•ฝ์กฐ๊ฑด์„ ํšจ์œจ์ ์œผ๋กœ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•จ.
  • ํ•˜๋‚˜์˜ relation๋งŒ ๊ณ ๋ คํ•˜์—ฌ ํ•จ์ˆ˜ ์ข…์†์„ฑ์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ์ด ์ œ์•ฝ์กฐ๊ฑด์˜ ํ…Œ์ŠคํŠธ ๋น„์šฉ์€ ๋‚ฎ์Œ.
  • Relation๋ฅผ ๋ถ„ํ•ดํ•  ๋•Œ, cartesian product๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ ๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ๋” ์ด์ƒ ๋ถˆ๊ฐ€๋Šฅํ•ด์งˆ ์ˆ˜ ์žˆ์Œ.
  • ํ•จ์ˆ˜ ์ข…์†์„ฑ์„ ๊ฐ•์ œํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ๋ถ„ํ•ด๋Š” dependency preserving์ด ์•„๋‹ˆ๋ผ๊ณ  ํ•จ.
NameCityPrefecture
KimSuwonKyungki-do
  • Name โ†’\rightarrowโ†’ City, Prefecture
  • City โ†’\rightarrowโ†’ Prefecture
  • Lossless decomposition์ด๋ฉด์„œ dependency preservation
NameCity
KimSuwon
CityPrefecture
SuwonKyungki-do
  • Name โ†’\rightarrowโ†’ City
  • City โ†’\rightarrowโ†’ Prefecture
  • ์œ„ ๋‘ ํ•จ์ˆ˜ ์ข…์†์„ฑ์œผ๋กœ๋ถ€ํ„ฐ Name โ†’\rightarrowโ†’ City, Prefecture๊ฐ€ ์œ ๋„
  • ๋ณธ๋ž˜์˜ ํ•จ์ˆ˜ ์ข…์†์„ฑ์ธ Name โ†’\rightarrowโ†’ City ์™€ City โ†’\rightarrowโ†’ Prefecture๊ฐ€ ๊ฐ๊ฐ ๋ถ„ํ•ด๋œ ํ…Œ์ด๋ธ” ๋‚ด์—์„œ ๋ชจ๋‘ ๋ณด์กด

Lossless decomposition์ด์ง€๋งŒ not dependency preserving

NameCity
KimSuwon
NamePrefecture
KimKyungki-do
  • Name โ†’\rightarrowโ†’ City
  • Name โ†’\rightarrowโ†’ Prefecture
  • ์œ„ ๋‘ ํ•จ์ˆ˜ ์ข…์†์„ฑ์œผ๋กœ๋ถ€ํ„ฐ Name โ†’\rightarrowโ†’ City, Prefecture๊ฐ€ ์œ ๋„
  • ํ•˜์ง€๋งŒ, ๋ณธ๋ž˜์˜ ํ•จ์ˆ˜ ์ข…์†์„ฑ์ด์—ˆ๋˜ City โ†’\rightarrowโ†’ Prefecture๋ฅผ ๊ฒ€์‚ฌํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?
    • ๋‘ ํ…Œ์ด๋ธ”์„ joinํ•ด์•ผ๋งŒ ํ™•์ธ ๊ฐ€๋Šฅ
  • ๊ฒฐ๋ก ์ ์œผ๋กœ, ์ด ๋ถ„ํ•ด๋Š” ์ข…์†์„ฑ์„ ๋ณด์กดํ•˜์ง€ ๋ชปํ•จ.

Goals for Decomposition

  • Relation schema RRR๊ณผ ํ•จ์ˆ˜ ์ข…์†์„ฑ(functional dependency) FFF์˜ ์ง‘ํ•ฉ์„ R1,R2,โ€ฆ,RnR_1, R_2, \dots, R_nR1โ€‹,R2โ€‹,โ€ฆ,Rnโ€‹์œผ๋กœ ๋ถ„ํ•ด(decompose)ํ•  ๋•Œ ์›ํ•˜๋Š” ๊ฒƒ
    1. ๋ฌด์†์‹ค ๋ถ„ํ•ด(Lossless decomposition)
    2. ์ค‘๋ณต ์—†์Œ(No redundancy)
    3. ์ข…์†์„ฑ ๋ณด์กด(Dependency preservation)

Normal Forms

First Normal Form

  • ๋„๋ฉ”์ธ์˜ ์š”์†Œ๊ฐ€ ๋” ์ด์ƒ ๋‚˜๋ˆŒ ์ˆ˜ ์—†๋Š” ๋‹จ์œ„๋กœ ๊ฐ„์ฃผ๋  ๋•Œ, ํ•ด๋‹น ๋„๋ฉ”์ธ์€ ์›์ž์ (atomic)์ž„.
  • ๋น„์›์ž์  ๋„๋ฉ”์ธ์˜ ์˜ˆ
    • ์ด๋ฆ„ ์ง‘ํ•ฉ, ๋ณตํ•ฉ ์†์„ฑ(composite attribute)
    • CS101๊ณผ ๊ฐ™์ด ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋‰  ์ˆ˜ ์žˆ๋Š” ์‹๋ณ„ ๋ฒˆํ˜ธ
  • ๋ชจ๋“  ์†์„ฑ์˜ ๋„๋ฉ”์ธ์ด ์›์ž์ ์ผ ๋•Œ, relation schema๋Š” ์ œ1 ์ •๊ทœํ˜•(First Normal Form, 1NF)์— ์žˆ์Œ.
  • ์›์ž์„ฑ์€ ์‹ค์ œ๋กœ๋Š” ๋„๋ฉ”์ธ์˜ ์š”์†Œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๋Š”์ง€์— ๋Œ€ํ•œ ์†์„ฑ
  • ํ•™์ƒ ID ๋ฒˆํ˜ธ: CS0012, EE1127, ...
    • ํ•™๊ณผ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์•ž์˜ ๋‘ ๋ฌธ์ž๋ฅผ ์ถ”์ถœํ•œ๋‹ค๋ฉด, ๋„๋ฉ”์ธ์€ ์›์ž์ ์ด์ง€ ์•Š์Œ.
    • ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด, ๋„๋ฉ”์ธ์€ ์›์ž์ ์ž„.
  • ๋น„์›์ž์  ์†์„ฑ
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์•„๋‹Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ •๋ณด์˜ ์ธ์ฝ”๋”ฉ/๋””์ฝ”๋”ฉ์œผ๋กœ ์ด์–ด์ง
    • ์ €์žฅ ๋ฐ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ ๋ณต์žกํ™”
  • ๋ชจ๋“  relation์€ first normal form(1NF)์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •

Boyce-Codd Normal Form (BCNF)

  • Relation schema RRR์ด ํ•จ์ˆ˜ ์ข…์†์„ฑ ์ง‘ํ•ฉ FFF์— ๋Œ€ํ•ด BCNF(Boyce-Codd Normal Form)์— ์žˆ์œผ๋ ค๋ฉด, F+F^+F+์— ์žˆ๋Š” ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ ํ˜•ํƒœ(ฮฑโІR\alpha \subseteq RฮฑโІR์ด๊ณ  ฮฒโІR\beta \subseteq RฮฒโІR)์˜ ๋ชจ๋“  ํ•จ์ˆ˜ ์ข…์†์„ฑ์— ๋Œ€ํ•ด ๋‹ค์Œ ์ค‘ ์ ์–ด๋„ ํ•˜๋‚˜๊ฐ€ ์„ฑ๋ฆฝํ•ด์•ผ ํ•จ.
    • ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ๊ฐ€ ์ž๋ช…ํ•œ(trivial) ํ•จ์ˆ˜ ์ข…์†์„ฑ (์ฆ‰, ฮฒโІฮฑ\beta \subseteq \alphaฮฒโІฮฑ)
    • ฮฑ\alphaฮฑ๊ฐ€ RRR์˜ superkey (์ฆ‰, ฮฑโ†’R\alpha \rightarrow Rฮฑโ†’R)
  • BCNF๋Š” 'ํ™•์‹คํžˆ' ์กด์žฌํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ํ•จ์ˆ˜ ์ข…์†์„ฑ์ด ์—†์Œ์„ ๋ณด์žฅ
  • BCNF๊ฐ€ ์•„๋‹Œ schema ์˜ˆ์‹œ in_dep(ID, name, salary, dept_name, building, budget ) ์ด์œ 
    • dept_name โ†’ building, budget์ด in_dep์—์„œ ์„ฑ๋ฆฝ
    • ํ•˜์ง€๋งŒ dept_name์€ superkey๊ฐ€ ์•„๋‹˜
  • in_dep์„ instructor์™€ department๋กœ ๋ถ„ํ•ดํ•  ๋•Œ
    • instructor(ID, name, salary, dept_name)์€ BCNF์— ์žˆ์Œ.
    • department(dept_name, building, budget)์€ BCNF์— ์žˆ์Œ.
  • dept_name์ด superkey๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ, ๋™์ผํ•œ ํ•™๊ณผ๋ช…์ด ํ…Œ์ด๋ธ”์— ๋ฐ˜๋ณต์ ์œผ๋กœ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Œ.
    • dept_name์œผ๋กœ๋ถ€ํ„ฐ์˜ ํ•จ์ˆ˜ ์ข…์†์„ฑ์€ building๊ณผ budget๋„ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๊ฒŒ ํ•จ.
    • dept_name์ด superkey๋ผ๋ฉด, ์ด๋Ÿฌํ•œ ์ค‘๋ณต์€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ.

Decomposing a Schema into BCNF

  • RRR์„ BCNF์— ์žˆ์ง€ ์•Š์€ schema๋ผ๊ณ  ๊ฐ€์ •
  • ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ๋ฅผ BCNF ์œ„๋ฐ˜์„ ์•ผ๊ธฐํ•˜๋Š” ํ•จ์ˆ˜ ์ข…์†์„ฑ(FD)์ด๋ผ๊ณ  ๊ฐ€์ •
    • ์ฆ‰, ฮฑ\alphaฮฑ๋Š” RRR์˜ superkey๊ฐ€ ์•„๋‹˜
  • RRR์„ ๋‘ ๊ฐœ์˜ schema๋กœ ๋ถ„ํ•ด
    • (ฮฑโˆชฮฒ)(\alpha \cup \beta)(ฮฑโˆชฮฒ)
      • ฮฑ\alphaฮฑ์™€ ฮฒ\betaฮฒ๋งŒ์„ ๊ฐ€์ง€๋Š” ๋‹ค๋ฅธ relation๋ฅผ ์ƒ์„ฑ
      • ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ์ด์ง€๋งŒ, ์ด relation์—์„œ ฮฑ\alphaฮฑ๋Š” superkey์ด๋ฏ€๋กœ BCNF๋ฅผ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š์Œ.
    • (Rโˆ’(ฮฒโˆ’ฮฑ))(R - (\beta - \alpha))(Rโˆ’(ฮฒโˆ’ฮฑ))
      • ์›๋ž˜ schema์—์„œ ฮฒ\betaฮฒ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ฮฑ\alphaฮฑ๋Š” ์œ ์ง€
      • ์ด schema์—๋Š” ๋” ์ด์ƒ ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Œ.
  • in_dep ์˜ˆ์‹œ์—์„œ, dept_name โ†’ building, budget์ด BCNF๋ฅผ ์œ„๋ฐ˜
    • ฮฑ=dept_name\alpha = \text{dept\_name}ฮฑ=dept_name
    • ฮฒ=building,ย budget\beta = \text{building,~budget}ฮฒ=building,ย budget
  • ๋”ฐ๋ผ์„œ, in_dep์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถ„ํ•ด๋จ
    • (ฮฑโˆชฮฒ)=(dept_name,ย building,ย budget)(\alpha \cup \beta) = (\text{dept\_name, building, budget})(ฮฑโˆชฮฒ)=(dept_name,ย building,ย budget)
    • (Rโˆ’(ฮฒโˆ’ฮฑ))=(ID,ย name,ย salary,ย dept_name)(R - (\beta - \alpha)) = (\text{ID, name, salary, dept\_name})(Rโˆ’(ฮฒโˆ’ฮฑ))=(ID,ย name,ย salary,ย dept_name)

Example

  • R=(A,B,C)R = (A, B, C)R=(A,B,C), F={Aโ†’B,Bโ†’C}F = \{A \rightarrow B, B \rightarrow C\}F={Aโ†’B,Bโ†’C}, F+={Aโ†’B,Bโ†’C,Aโ†’C}F^+ = \{A \rightarrow B, B \rightarrow C, A \rightarrow C\}F+={Aโ†’B,Bโ†’C,Aโ†’C}
  • RRR์€ BCNF์— ์žˆ์ง€ ์•Š์Œ, ์™œ๋ƒํ•˜๋ฉด Bโ†’CB \rightarrow CBโ†’C์ด์ง€๋งŒ BBB๋Š” superkey๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ
  • R1=(A,B),R2=(B,C)R_1 = (A, B), R_2 = (B, C)R1โ€‹=(A,B),R2โ€‹=(B,C)
    • ๋ฌด์†์‹ค-join ๋ถ„ํ•ด: R1โˆฉR2={B}R_1 \cap R_2 = \{B\}R1โ€‹โˆฉR2โ€‹={B}์ด๊ณ  Bโ†’BCB \rightarrow BCBโ†’BC (์ž๋ช…ํ•œ ์ข…์†์„ฑ์ด๋ฏ€๋กœ ์‹ค์ œ๋กœ๋Š” Bโ†’BB \rightarrow BBโ†’B๋งŒ ํ™•์ธ)
    • ์ข…์†์„ฑ ๋ณด์กด: Aโ†’BA \rightarrow BAโ†’B๋Š” R1R_1R1โ€‹์—, Bโ†’CB \rightarrow CBโ†’C๋Š” R2R_2R2โ€‹์— ์žˆ์œผ๋ฏ€๋กœ, R1โ‹ˆR2R_1 \Join R_2R1โ€‹โ‹ˆR2โ€‹๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ ๋„ Aโ†’CA \rightarrow CAโ†’C๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Œ.
    • Aโ†’CA \rightarrow CAโ†’C๋Š” Aโ†’BA \rightarrow BAโ†’B์™€ Bโ†’CB \rightarrow CBโ†’C์— ์˜ํ•ด ๋ณด์žฅ๋จ (์ฆ‰, ๋ช…์‹œ์  ํ…Œ์ŠคํŠธ ๋ถˆํ•„์š”)
  • R1=(A,B),R2=(A,C)R_1 = (A, B), R_2 = (A, C)R1โ€‹=(A,B),R2โ€‹=(A,C)
    • ๋ฌด์†์‹ค-join ๋ถ„ํ•ด: R1โˆฉR2={A}R_1 \cap R_2 = \{A\}R1โ€‹โˆฉR2โ€‹={A}์ด๊ณ  Aโ†’ABA \rightarrow ABAโ†’AB (์ž๋ช…ํ•œ ์ข…์†์„ฑ์ด๋ฏ€๋กœ ์‹ค์ œ๋กœ๋Š” Aโ†’AA \rightarrow AAโ†’A๋งŒ ํ™•์ธ)
    • ์ข…์†์„ฑ์„ ๋ณด์กดํ•˜์ง€ ์•Š์Œ.
    • Aโ†’BA \rightarrow BAโ†’B๋Š” R1R_1R1โ€‹์—, Aโ†’CA \rightarrow CAโ†’C๋Š” R2R_2R2โ€‹์— ์žˆ์Œ.
    • ํ•˜์ง€๋งŒ R1โ‹ˆR2R_1 \Join R_2R1โ€‹โ‹ˆR2โ€‹๋ฅผ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๊ณ ๋Š” Bโ†’CB \rightarrow CBโ†’C๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†์Œ.

BCNF and Dependency Preservation

  • BCNF์™€ ์ข…์†์„ฑ ๋ณด์กด์„ ๋ชจ๋‘ ๋‹ฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ํ•ญ์ƒ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์€ ์•„๋‹˜
  • Schema ์˜ˆ์‹œ
    • dept_advisor(student_ID, instructor_ID, dept_name)
  • ํ•จ์ˆ˜ ์ข…์†์„ฑ
    • instructor_ID โ†’ dept_name
    • student_ID, dept_name โ†’ instructor_ID
  • ์œ„ schema๋Š” ํ•œ ํ•™์ƒ์ด ์„œ๋กœ ๋‹ค๋ฅธ ํ•™๊ณผ์— ์—ฌ๋Ÿฌ ๋ช…์˜ ์ง€๋„๊ต์ˆ˜๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •
  • dept_advisor๋Š” instructor_ID๊ฐ€ superkey๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ BCNF์— ์žˆ์ง€ ์•Š์Œ.
  • dept_advisor์˜ ์–ด๋–ค ๋ถ„ํ•ด๋„ student_ID, dept_name โ†’ instructor_ID๋ฅผ ๋ณด์กดํ•˜์ง€ ๋ชปํ•จ.
  • ๋”ฐ๋ผ์„œ, ์ด ๋ถ„ํ•ด๋Š” ์ข…์†์„ฑ์„ ๋ณด์กดํ•˜์ง€ ์•Š์Œ.

Third Normal Form: Motivation

  • ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ผ๋ถ€ ์ƒํ™ฉ ์กด์žฌ
    • BCNF๊ฐ€ ์ข…์†์„ฑ์„ ๋ณด์กดํ•˜์ง€ ์•Š์Œ.
    • ์—…๋ฐ์ดํŠธ ์‹œ ํ•จ์ˆ˜ ์ข…์†์„ฑ ์œ„๋ฐ˜์— ๋Œ€ํ•œ ํšจ์œจ์ ์ธ ๊ฒ€์‚ฌ๊ฐ€ ์ค‘์š”
  • ํ•ด๊ฒฐ์ฑ…: ์ œ3 ์ •๊ทœํ˜•(Third Normal Form, 3NF)์ด๋ผ๋Š” ๋” ์•ฝํ•œ ์ •๊ทœํ˜• ์ •์˜
    • ์ผ๋ถ€ ์ค‘๋ณต ํ—ˆ์šฉ
    • ํ•˜์ง€๋งŒ join์„ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๊ณ  ๊ฐœ๋ณ„ relation์—์„œ ํ•จ์ˆ˜ ์ข…์†์„ฑ์„ ๊ฒ€์‚ฌ ๊ฐ€๋Šฅ
  • BCNF์— ๋น„ํ•ด 3NF๊ฐ€ ๊ฐ–๋Š” ์žฅ์ 
    • 3NF๋กœ์˜ ๋ฌด์†์‹ค, ์ข…์†์„ฑ ๋ณด์กด ๋ถ„ํ•ด๊ฐ€ ํ•ญ์ƒ ์กด์žฌ
  • 3NF์˜ ๋‹จ์ 
    • ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ ๊ฐ„์˜ ์˜๋ฏธ ์žˆ๋Š” relation ์ผ๋ถ€๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด null๊ฐ’์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Œ.
    • ์ •๋ณด ๋ฐ˜๋ณต์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ.

Third Normal Form

  • Relation schema RRR์ด ์ œ3 ์ •๊ทœํ˜•(3NF)์— ์žˆ์œผ๋ ค๋ฉด, F+F^+F+์˜ ๋ชจ๋“  ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ์— ๋Œ€ํ•ด ๋‹ค์Œ ์ค‘ ์ ์–ด๋„ ํ•˜๋‚˜๊ฐ€ ์„ฑ๋ฆฝํ•ด์•ผ ํ•จ.
    • ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ๊ฐ€ ์ž๋ช…ํ•œ ํ•จ์ˆ˜ ์ข…์†์„ฑ (์ฆ‰, ฮฒโІฮฑ\beta \subseteq \alphaฮฒโІฮฑ)
    • ฮฑ\alphaฮฑ๊ฐ€ RRR์˜ superkey
    • ฮฒโˆ’ฮฑ\beta - \alphaฮฒโˆ’ฮฑ์— ์žˆ๋Š” ๊ฐ ์†์„ฑ AAA๊ฐ€ RRR์˜ ํ›„๋ณด ํ‚ค(candidate key)์— ํฌํ•จ๋จ (์ฐธ๊ณ : ๊ฐ ์†์„ฑ์€ ๋‹ค๋ฅธ ํ›„๋ณด ํ‚ค์— ์žˆ์„ ์ˆ˜ ์žˆ์Œ)
  • Relation์ด BCNF์— ์žˆ์œผ๋ฉด, 3NF์—๋„ ์žˆ์Œ.
    • BCNF์—์„œ๋Š” ์œ„์˜ ์ฒซ ๋‘ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ˜๋“œ์‹œ ์„ฑ๋ฆฝํ•˜๊ธฐ ๋•Œ๋ฌธ
  • ์„ธ ๋ฒˆ์งธ ์กฐ๊ฑด์€ ์ข…์†์„ฑ ๋ณด์กด์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด BCNF๋ฅผ ์ตœ์†Œํ•œ์œผ๋กœ ์™„ํ™”ํ•œ ๊ฒƒ

3NF Example

  • Schema ์˜ˆ์‹œ
    • dept_advisor(student_ID, instructor_ID, dept_name)
  • ํ•จ์ˆ˜ ์ข…์†์„ฑ
    • instructor_ID โ†’ dept_name
    • student_ID, dept_name โ†’ instructor_ID
  • ๋‘ ํ›„๋ณด ํ‚ค = {student_ID, dept_name}, {student_ID, instructor_ID}
  • ์•ž์„œ dept_advisor๋Š” BCNF์— ์žˆ์ง€ ์•Š์Œ์„ ํ™•์ธํ–ˆ์Œ.
  • ๊ทธ๋Ÿฌ๋‚˜ RRR์€ 3NF์— ์žˆ์Œ.
    • student_ID, dept_name์€ superkey
    • instructor_ID โ†’ dept_name์ด์ง€๋งŒ instructor_ID๋Š” superkey๊ฐ€ ์•„๋‹˜. ํ•˜์ง€๋งŒ,
    • {dept_name}โˆ’{instructor_ID}={dept_name}\{\text{dept\_name}\} - \{\text{instructor\_ID}\} = \{\text{dept\_name}\}{dept_name}โˆ’{instructor_ID}={dept_name}์ด๊ณ 
    • dept_name์€ ํ›„๋ณด ํ‚ค์— ํฌํ•จ๋จ

Redundancy in 3NF

  • 3NF์— ์žˆ์ง€๋งŒ BCNF์—๋Š” ์—†๋Š” ์•„๋ž˜ schema RRR์„ ๊ณ ๋ ค
  • R=(J,K,L)R = (J, K, L)R=(J,K,L)
  • F={JKโ†’L,Lโ†’K}F = \{JK \rightarrow L, L \rightarrow K\}F={JKโ†’L,Lโ†’K}, ๋‘ ํ›„๋ณด ํ‚ค: JKJKJK์™€ JLJLJL
  • ๊ทธ๋ฆฌ๊ณ  ์ธ์Šคํ„ด์Šค ํ…Œ์ด๋ธ”
  • ํ…Œ์ด๋ธ”์˜ ๋ฌธ์ œ์ ์€ ๋ฌด์—‡์ธ๊ฐ€?
    • ์ •๋ณด์˜ ๋ฐ˜๋ณต (l1,k1l_1, k_1l1โ€‹,k1โ€‹)
    • Null๊ฐ’ ์‚ฌ์šฉ ํ•„์š” (์˜ˆ: JJJ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ด ์—†๋Š” relation l2,k2l_2, k_2l2โ€‹,k2โ€‹๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด)

Goals of Normalization: Revisited

  • RRR์„ ํ•จ์ˆ˜ ์ข…์†์„ฑ ์ง‘ํ•ฉ FFF๋ฅผ ๊ฐ€์ง„ relation schema๋ผ๊ณ  ๊ฐ€์ •
  • Relation schema RRR์ด "์ข‹์€" ํ˜•ํƒœ์ธ์ง€ ๊ฒฐ์ •
  • Relation schema RRR์ด "์ข‹์€" ํ˜•ํƒœ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ relation schema ์ง‘ํ•ฉ {R1,R2,โ€ฆ,Rn}\{R_1, R_2, \dots, R_n\}{R1โ€‹,R2โ€‹,โ€ฆ,Rnโ€‹}์œผ๋กœ ๋ถ„ํ•ดํ•  ํ•„์š”๊ฐ€ ์žˆ์Œ.
    • ๊ฐ relation schema๋Š” ์ข‹์€ ํ˜•ํƒœ์ž„.
    • ๋ถ„ํ•ด๋Š” ๋ฌด์†์‹ค ๋ถ„ํ•ด์ž„.
    • ๊ฐ€๊ธ‰์  ๋ถ„ํ•ด๋Š” ์ข…์†์„ฑ์„ ๋ณด์กดํ•ด์•ผ ํ•จ.

How good is BCNF?

  • ์ถฉ๋ถ„ํžˆ ์ •๊ทœํ™”๋˜์ง€ ์•Š์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” BCNF ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค schema ์กด์žฌ
  • ํ•œ ๋ช…์˜ ๊ต์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ „ํ™”๋ฒˆํ˜ธ์™€ ์—ฌ๋Ÿฌ ๋ช…์˜ ์ž๋…€๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” relation inst_info(ID, child_name, phone)๋ฅผ ๊ณ ๋ ค
  • inst_info์˜ ์ธ์Šคํ„ด์Šค
  • ์ด relation์€ ์ž๋ช…ํ•˜์ง€ ์•Š์€ ํ•จ์ˆ˜ ์ข…์†์„ฑ์ด ์—†์œผ๋ฏ€๋กœ BCNF์— ์žˆ์Œ.
  • ์‚ฝ์ž… ์ด์ƒ(Insertion anomaly): ID 99999์— ์ „ํ™”๋ฒˆํ˜ธ 981-992-3443์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‘ ๊ฐœ์˜ ํŠœํ”Œ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•จ. (99999, David, 981-992-3443), (99999, William, 981-992-3443)

Higher Normal Forms

  • inst_info๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถ„ํ•ดํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์Œ.
    • inst_child
    • inst_phone
  • ์ด๋Š” ๋‹ค์น˜ ์ข…์†์„ฑ(Multivalued Dependency)์— ๊ธฐ๋ฐ˜ํ•œ ์ œ4 ์ •๊ทœํ˜•(4NF)๊ณผ ๊ฐ™์€ ๋” ๋†’์€ ์ •๊ทœํ˜•์˜ ํ•„์š”์„ฑ์„ ์‹œ์‚ฌ
์ตœ๊ทผ ์ˆ˜์ •: 26. 1. 3. ์˜คํ›„ 9:57
Contributors: kmbzn
Prev
6. E-R Model
Next
7. Relational Database Design (2)

BUILT WITH

CloudflareNode.jsGitHubGitVue.jsJavaScriptVSCodenpm

All trademarks and logos are property of their respective owners.
ยฉ 2026 kmbzn ยท MIT License