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

    • 1018๋ฒˆ: ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ
    • 1966๋ฒˆ: ํ”„๋ฆฐํ„ฐ ํ
    • Python ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ํŒ
    • C++ std::vector ์‚ฌ์šฉ๋ฒ• ์ •๋ฆฌ
    • Vim ์‚ฌ์šฉ ๋งค๋‰ด์–ผ
  • Ubuntu

    • ๋ฆฌ๋ˆ…์Šค ์šฐ๋ถ„ํˆฌ GRUB ํฐํŠธ ๋ณ€๊ฒฝ
    • ์šฐ๋ถ„ํˆฌ ์ด๋ฏธ์ง€ ๋น„๋””์˜ค ์ธ๋„ค์ผ(๋ฏธ๋ฆฌ๋ณด๊ธฐ) ์•ˆ ๋ณด์ž„ ๋ฌธ์ œ ํ•ด๊ฒฐ
    • Wine ํ™˜๊ฒฝ์—์„œ ์นด์นด์˜คํ†ก ์‹คํ–‰ ์‹œ explorer.exe ๋œจ์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๋ฒ•
    • ์šฐ๋ถ„ํˆฌ Wine ์นด์นด์˜คํ†ก ์‚ฌ์ง„ ์ด๋ฏธ์ง€ ์Šคํฌ๋ฆฐ์ƒท ๋ถ™์—ฌ๋„ฃ๊ธฐ
    • Wine ์นด์นด์˜คํ†ก ์ด๋ชจ์ง€ ๊นจ์ง ๋ฌธ์ œ ํ•ด๊ฒฐ
    • Ubuntu ์œˆ๋„์šฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋„๊ธฐ
  • Wellness

    • ์ฐจ์ „์žํ”ผ (Psyllium Husk)
    • ์—‘์ŠคํŠธ๋ผ ๋ฒ„์ง„ ์˜ฌ๋ฆฌ๋ธŒ์œ  (Extra Virgin Olive Oil)
    • ์ž๊ฐ€๋น„๊ฐ•์„ธ์ฒ™ (Nasal Irrigation)
    • QCY HT08 (MeloBuds Pro Plus)
    • ์ฝ˜์„œํƒ€ (Concerta)
    • ์ธ๋ฐ๋†€ (Inderal)
    • ์„คํŠธ๋ž„๋ฆฐ (Sertraline)
    • ๋ฉœ๋ผํ† ๋‹Œ (Melatonin)
    • ์น˜๊ฒฝ๋ถ€ ๋งˆ๋ชจ์ฆ
    • ๋ฐ”๋ฒจ ์Šค์ฟผํŠธ (Barbell Squat)
  • Humanities

    • Nordvik, Russia
    • North Sentinel Island
    • ๋กฑ๊ณ ๋กฑ๊ณ (Rongorongo)
    • ๋ฐ”๋กœํฌ ์Œ์•… (Baroque Music)
  • Design

    • ๊ตฌ๊ธ€์˜ ์•„์ด์ฝ˜ ๋Œ€๊ฐœํŽธ โ€” 6๋…„ ๋งŒ์˜ ์‹ค์ˆ˜ ์ธ์ •
    • ์ œ๋Ÿด๋“œ ์  ํƒ€ โ€” ๋Ÿญ์…”๋ฆฌ ์Šคํฌ์ธ  ์›Œ์น˜์˜ ์ฐฝ์‹œ์ž
    • ๋ฐ”์šฐํ•˜์šฐ์Šค โ€” ํ˜„๋Œ€ ๋””์ž์ธ์˜ ์›์ 
  • Brands

    • NOMOS Glashรผtte
    • Frรฉdรฉrique Constant
    • KZ (Knowledge Zenith)
    • ์—์ŠคํŠธ๋ผ (AESTURA)
    • JINHAO (้‡‘่ฑช)
    • Herman Miller
    • ๋ฐ์Šค์ปค (DESKER)
    • ๋ฌด์‹ ์‚ฌ ์Šคํƒ ๋‹ค๋“œ (Musinsa Standard)
  • Finance

    • ํ˜„๋Œ€์นด๋“œ ZERO โ€” Edition2 vs Edition3 ๋น„๊ต
    • ์‹ ํ•œ์นด๋“œ ์ฒ˜์Œ
    • S&P 500 ETF ํˆฌ์ž ๊ฐ€์ด๋“œ
    • ํŒŒํ‚นํ†ต์žฅ vs CMA ํ†ต์žฅ
    • ๋ฒ„ํฌ์…” ํ•ด์„œ์›จ์ด (Berkshire Hathaway)
    • ๋น„ํŠธ์ฝ”์ธ(Bitcoin)
  • Products

    • ์˜ค๋””์˜ค ์ธํ„ฐํŽ˜์ด์Šค (Audio Interface)
    • ์ฟ ๋ฃจํ† ๊ฐ€ (KURUTOGA)
    • CX31993 DAC ๋™๊ธ€
    • ํด๋ Œ์ง• ๋ฐ€ํฌ (Cleansing Milk)
    • ํ”ผ์ ฏ ํ† ์ด (Fidget Toy)
    • ThinkPad
  • Programming Languages

    • 8.0. Statement Level Control Structures
    • 8. Subprogram
    • 9. Implementing Subprogram
    • 10.1. Abstract Data Types and Encapsulation Constructs
    • 10.2. Support for Object Oriented Programming
    • 11. Concurrency
    • 12. FPL (1)
    • 13. FPL (2)
    • 14. Exception Handling and Event Handling
    • Final Exam

7. Relational Database Design (2)

์ž‘์„ฑ 2026. 6. 12.ยท์ˆ˜์ • 2026. 6. 12.

Functional Dependency Theory

Functional-Dependency Theory Roadmap

  • ์ฃผ์–ด์ง„ ํ•จ์ˆ˜ ์ข…์†์„ฑ(Functional dependency) ์ง‘ํ•ฉ์— ์˜ํ•ด ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ•จ์ถ•๋˜๋Š” ํ•จ์ˆ˜ ์ข…์†์„ฑ์„ ์•Œ๋ ค์ฃผ๋Š” ํ˜•์‹ ์ด๋ก (formal theory)์„ ๊ณ ๋ ค
  • BCNF์™€ 3NF๋กœ์˜ ๋ฌด์†์‹ค ๋ถ„ํ•ด(lossless decomposition)๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋ฐœ
  • ๋ถ„ํ•ด๊ฐ€ ์ข…์†์„ฑ ๋ณด์กด(dependency-preserving)์ธ์ง€ ํ…Œ์ŠคํŠธํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋ฐœ

Closure of a Set of Functional Dependencies

  • Armstrong's Axioms(์•”์ŠคํŠธ๋กฑ ๊ณต๋ฆฌ)๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ ์šฉํ•˜์—ฌ F+F+F+(ํํฌ) ๊ณ„์‚ฐ ๊ฐ€๋Šฅ
    • Reflexivity rule(๋ฐ˜์‚ฌ ๊ทœ์น™): ฮฒโІฮฑ\beta \subseteq \alphaฮฒโІฮฑ์ด๋ฉด ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ
    • Augmentation rule(์ฆ๊ฐ€ ๊ทœ์น™): ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ์ด๋ฉด ฮณฮฑโ†’ฮณฮฒ\gamma\alpha \rightarrow \gamma\betaฮณฮฑโ†’ฮณฮฒ
    • Transitivity rule(์ดํ–‰ ๊ทœ์น™): ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ์ด๊ณ  ฮฒโ†’ฮณ\beta \rightarrow \gammaฮฒโ†’ฮณ์ด๋ฉด ฮฑโ†’ฮณ\alpha \rightarrow \gammaฮฑโ†’ฮณ
  • ์ด๋Ÿฌํ•œ ๊ทœ์น™๋“ค์€
    • Sound(๊ฑด์ „ํ•จ): ์‹ค์ œ๋กœ ์„ฑ๋ฆฝํ•˜๋Š” ํ•จ์ˆ˜ ์ข…์†์„ฑ๋งŒ ์ƒ์„ฑ
    • Complete(์™„์ „ํ•จ): ์„ฑ๋ฆฝํ•˜๋Š” ๋ชจ๋“  ํ•จ์ˆ˜ ์ข…์†์„ฑ์„ ์ƒ์„ฑ
  • ์ถ”๊ฐ€ ๊ทœ์น™
    • Union rule(ํ•ฉ์ง‘ํ•ฉ ๊ทœ์น™): ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ์ด๊ณ  ฮฑโ†’ฮณ\alpha \rightarrow \gammaฮฑโ†’ฮณ์ด๋ฉด ฮฑโ†’ฮฒฮณ\alpha \rightarrow \beta\gammaฮฑโ†’ฮฒฮณ
    • Decomposition rule(๋ถ„ํ•ด ๊ทœ์น™): ฮฑโ†’ฮฒฮณ\alpha \rightarrow \beta\gammaฮฑโ†’ฮฒฮณ์ด๋ฉด ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ์ด๊ณ  ฮฑโ†’ฮณ\alpha \rightarrow \gammaฮฑโ†’ฮณ
    • Pseudotransitivity rule(์˜์‚ฌ ์ดํ–‰ ๊ทœ์น™): ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ์ด๊ณ  ฮณฮฒโ†’ฮด\gamma\beta \rightarrow \deltaฮณฮฒโ†’ฮด์ด๋ฉด ฮฑฮณโ†’ฮด\alpha\gamma \rightarrow \deltaฮฑฮณโ†’ฮด
  • ์œ„์˜ ๊ทœ์น™๋“ค์€ ์•”์ŠคํŠธ๋กฑ ๊ณต๋ฆฌ๋กœ๋ถ€ํ„ฐ ์œ ์ถ” ๊ฐ€๋Šฅ

Example of F+F+F+

  • R=(A,B,C,G,H,I)R = (A, B, C, G, H, I)R=(A,B,C,G,H,I), F={Aโ†’B,Aโ†’C,CGโ†’H,CGโ†’I,Bโ†’H}F = \{ A \rightarrow B, A \rightarrow C, CG \rightarrow H, CG \rightarrow I, B \rightarrow H \}F={Aโ†’B,Aโ†’C,CGโ†’H,CGโ†’I,Bโ†’H}
  • F+F^+F+์˜ ์ผ๋ถ€ ๋ฉค๋ฒ„
    • Aโ†’HA \rightarrow HAโ†’H
      • Aโ†’BA \rightarrow BAโ†’B์™€ Bโ†’HB \rightarrow HBโ†’H๋กœ๋ถ€ํ„ฐ ์ดํ–‰ ๊ทœ์น™์— ์˜ํ•ด
    • AGโ†’IAG \rightarrow IAGโ†’I
      • Aโ†’CA \rightarrow CAโ†’C๋ฅผ GGG๋กœ ์ฆ๊ฐ€์‹œ์ผœ AGโ†’CGAG \rightarrow CGAGโ†’CG๋ฅผ ์–ป์Œ.
      • ๊ทธ๋ฆฌ๊ณ  CGโ†’ICG \rightarrow ICGโ†’I์™€์˜ ์ดํ–‰ ๊ทœ์น™์— ์˜ํ•ด AGโ†’IAG \rightarrow IAGโ†’I๋ฅผ ์–ป์Œ.
    • CGโ†’HICG \rightarrow HICGโ†’HI
      • CGโ†’ICG \rightarrow ICGโ†’I๋ฅผ CGCGCG๋กœ ์ฆ๊ฐ€์‹œ์ผœ CGโ†’CGICG \rightarrow CGICGโ†’CGI๋ฅผ ์–ป์Œ.
      • CGโ†’HCG \rightarrow HCGโ†’H๋ฅผ III๋กœ ์ฆ๊ฐ€์‹œ์ผœ CGIโ†’HICGI \rightarrow HICGIโ†’HI๋ฅผ ์–ป์Œ.
      • ๊ทธ๋ฆฌ๊ณ  ์ดํ–‰ ๊ทœ์น™์— ์˜ํ•ด CGโ†’HICG \rightarrow HICGโ†’HI๋ฅผ ์–ป์Œ.

(Optional) Procedure for Computing F+F+F+

  • ํ•จ์ˆ˜ ์ข…์†์„ฑ ์ง‘ํ•ฉ FFF์˜ ํํฌ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์ ˆ์ฐจ
    $F+$ = F
    repeat
        for each functional dependency f in $F+$
            apply reflexivity and augmentation rules on f
            add the resulting functional dependencies to $F+$
        for each pair of functional dependencies f1 and f2 in $F+$
            if f1 and f2 can be combined using transitivity
            then add the resulting functional dependency to $F+$
    until $F+$ does not change any further
    
  • ์ฐธ๊ณ : ์ด ์ž‘์—…์„ ์œ„ํ•œ ๋Œ€์•ˆ์  ์ ˆ์ฐจ๋Š” ๋‚˜์ค‘์— ์‚ดํŽด๋ณผ ๊ฒƒ์ž„.

Closure of Attribute Sets

  • ์†์„ฑ BBB๋Š” ฮฑโ†’B\alpha \rightarrow Bฮฑโ†’B์ผ ๋•Œ ฮฑ\alphaฮฑ์— ์˜ํ•ด ํ•จ์ˆ˜์ ์œผ๋กœ ๊ฒฐ์ •๋œ๋‹ค๊ณ  ํ•จ.
  • ์†์„ฑ ์ง‘ํ•ฉ ฮฑ\alphaฮฑ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, FFF ํ•˜์—์„œ ฮฑ\alphaฮฑ์˜ Closure(ํํฌ)(ฮฑ+\alpha^+ฮฑ+๋กœ ํ‘œ๊ธฐ)๋Š” FFF ํ•˜์—์„œ ฮฑ\alphaฮฑ์— ์˜ํ•ด ํ•จ์ˆ˜์ ์œผ๋กœ ๊ฒฐ์ •๋˜๋Š” ์†์„ฑ๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ •์˜๋จ
    • ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ๊ฐ€ F+F^+F+์— ์žˆ์Œ โ€…โ€ŠโŸบโ€…โ€ŠฮฒโІฮฑ+\iff \beta \subseteq \alpha^+โŸบฮฒโІฮฑ+
  • FFF ํ•˜์—์„œ ฮฑ\alphaฮฑ์˜ ํํฌ ฮฑ+\alpha^+ฮฑ+๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
result := ฮฑ;
while (changes to result) do
    for each ฮฒ โ†’ ฮณ in F do
        begin
            if ฮฒ โІ result then
                result := result โˆช ฮณ
        end

Example of Attribute Set Closure

  • R=(A,B,C,G,H,I)R = (A, B, C, G, H, I)R=(A,B,C,G,H,I)
  • F={Aโ†’B,Aโ†’C,CGโ†’H,CGโ†’I,Bโ†’H}F = \{A \rightarrow B, A \rightarrow C, CG \rightarrow H, CG \rightarrow I, B \rightarrow H\}F={Aโ†’B,Aโ†’C,CGโ†’H,CGโ†’I,Bโ†’H}
  • (AG)+(AG)^+(AG)+
    1. result=AG\text{result} = AGresult=AG
    2. result=ABCG\text{result} = ABCGresult=ABCG (Aโ†’BA \rightarrow BAโ†’B ์™€ Aโ†’CA \rightarrow CAโ†’C)
    3. result=ABCGH\text{result} = ABCGHresult=ABCGH (CGโ†’HCG \rightarrow HCGโ†’H)
    4. result=ABCGHI\text{result} = ABCGHIresult=ABCGHI (CGโ†’ICG \rightarrow ICGโ†’I)
  • AG๋Š” ํ›„๋ณด ํ‚ค(candidate key)์ธ๊ฐ€?
    1. AG๋Š” ์Šˆํผํ‚ค(superkey)์ธ๊ฐ€?
      • AGโ†’RAG \rightarrow RAGโ†’R์ธ๊ฐ€? โ€…โ€ŠโŸบโ€…โ€ŠR=(AG)+\iff R = (AG)^+โŸบR=(AG)+์ธ๊ฐ€?
    2. AG์˜ ์ž„์˜์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์ด ์Šˆํผํ‚ค์ธ๊ฐ€?
      • Aโ†’RA \rightarrow RAโ†’R์ธ๊ฐ€? โ€…โ€ŠโŸบโ€…โ€ŠR=(A)+\iff R = (A)^+โŸบR=(A)+์ธ๊ฐ€?
      • Gโ†’RG \rightarrow RGโ†’R์ธ๊ฐ€? โ€…โ€ŠโŸบโ€…โ€ŠR=(G)+\iff R = (G)^+โŸบR=(G)+์ธ๊ฐ€?
    • ์ผ๋ฐ˜์ ์œผ๋กœ: ํฌ๊ธฐ nโˆ’1n-1nโˆ’1์˜ ๊ฐ ๋ถ€๋ถ„์ง‘ํ•ฉ์— ๋Œ€ํ•ด ํ™•์ธ

Uses of Attribute Closure

  • ์†์„ฑ ํํฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์—ฌ๋Ÿฌ ์šฉ๋„
    • ์Šˆํผํ‚ค ํ…Œ์ŠคํŠธ
      • ฮฑ\alphaฮฑ๊ฐ€ ์Šˆํผํ‚ค์ธ์ง€ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด, ฮฑ+\alpha^+ฮฑ+๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ฮฑ+\alpha^+ฮฑ+๊ฐ€ RRR์˜ ๋ชจ๋“  ์†์„ฑ์„ ํฌํ•จํ•˜๋Š”์ง€ ํ™•์ธ
    • ํ•จ์ˆ˜ ์ข…์†์„ฑ ํ…Œ์ŠคํŠธ
      • ํ•จ์ˆ˜ ์ข…์†์„ฑ ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ๊ฐ€ ์„ฑ๋ฆฝํ•˜๋Š”์ง€(์ฆ‰, F+F^+F+์— ์žˆ๋Š”์ง€) ํ™•์ธํ•˜๋ ค๋ฉด, ฮฒโІฮฑ+\beta \subseteq \alpha^+ฮฒโІฮฑ+์ธ์ง€ ํ™•์ธํ•˜๋ฉด ๋จ
      • ๊ฐ„๋‹จํ•˜๊ณ  ์ €๋ ดํ•œ ํ…Œ์ŠคํŠธ์ด๋ฉฐ ๋งค์šฐ ์œ ์šฉ
    • FFF์˜ ํํฌ ๊ณ„์‚ฐ
      • ๊ฐ ฮณโІR\gamma \subseteq RฮณโІR์— ๋Œ€ํ•ด, ํํฌ ฮณ+\gamma^+ฮณ+๋ฅผ ์ฐพ๊ณ , ๊ฐ SโІฮณ+S \subseteq \gamma^+SโІฮณ+์— ๋Œ€ํ•ด ํ•จ์ˆ˜ ์ข…์†์„ฑ ฮณโ†’S\gamma \rightarrow Sฮณโ†’S๋ฅผ ์ถœ๋ ฅ

Canonical Cover

  • ํ•จ์ˆ˜ ์ข…์†์„ฑ ์ง‘ํ•ฉ FFF๋ฅผ ๊ฐ–๋Š” relation ์Šคํ‚ค๋งˆ ๊ฐ€์ •
  • ์‚ฌ์šฉ์ž๊ฐ€ relation์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ๋งˆ๋‹ค,
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์€ ์—…๋ฐ์ดํŠธ๊ฐ€ ์–ด๋–ค FD๋„ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š์Œ์„ ๋ณด์žฅํ•ด์•ผ ํ•จ.
    • ์ฆ‰, ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒํƒœ์—์„œ FFF์— ์žˆ๋Š” ๋ชจ๋“  FD๊ฐ€ ๋งŒ์กฑ๋˜์–ด์•ผ ํ•จ.
  • ์—…๋ฐ์ดํŠธ๊ฐ€ ์ง‘ํ•ฉ FFF์˜ ์–ด๋–ค FD๋ฅผ ์œ„๋ฐ˜ํ•˜๋ฉด, ์‹œ์Šคํ…œ์€ ์—…๋ฐ์ดํŠธ๋ฅผ ๋กค๋ฐฑํ•ด์•ผ ํ•จ.
  • ์œ„๋ฐ˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ๋“œ๋Š” ๋…ธ๋ ฅ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Œ.
    • ์ฃผ์–ด์ง„ ์ง‘ํ•ฉ๊ณผ ๋™์ผํ•œ ํํฌ๋ฅผ ๊ฐ–๋Š” ๋‹จ์ˆœํ™”๋œ FD ์ง‘ํ•ฉ์„ ํ…Œ์ŠคํŠธํ•จ์œผ๋กœ์จ
    • ์ด ๋‹จ์ˆœํ™”๋œ ์ง‘ํ•ฉ์„ Canonical cover(์ •๊ทœ ์ปค๋ฒ„)๋ผ ํ•จ.
  • ์ •๊ทœ ์ปค๋ฒ„๋ฅผ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด ๋จผ์ € Extraneous attribute(๋ถˆํ•„์š”ํ•œ ์†์„ฑ)๋ฅผ ์ •์˜ํ•ด์•ผ ํ•จ.

Extraneous Attributes

  • FD์˜ ์™ผ์ชฝ์—์„œ ์†์„ฑ์„ ์ œ๊ฑฐํ•˜๋ฉด ์ œ์•ฝ์กฐ๊ฑด์ด ๋” ๊ฐ•ํ•ด์ง.
    • ABโ†’CAB \rightarrow CABโ†’C๊ฐ€ ์žˆ๊ณ  BBB๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด, ์ž ์žฌ์ ์œผ๋กœ ๋” ๊ฐ•ํ•œ ๊ฒฐ๊ณผ์ธ Aโ†’CA \rightarrow CAโ†’C๋ฅผ ์–ป์Œ.
    • Aโ†’CA \rightarrow CAโ†’C๋Š” ABโ†’CAB \rightarrow CABโ†’C๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ•จ์ถ•ํ•˜์ง€๋งŒ, ABโ†’CAB \rightarrow CABโ†’C ์ž์ฒด๋งŒ์œผ๋กœ๋Š” Aโ†’CA \rightarrow CAโ†’C๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ•จ์ถ•ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋” ๊ฐ•ํ•  ์ˆ˜ ์žˆ์Œ.
    • ์ง‘ํ•ฉ FFF์— ๋”ฐ๋ผ, ABโ†’CAB \rightarrow CABโ†’C์—์„œ BBB๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Œ.
    • ์˜ˆ: F={ABโ†’C,Aโ†’D,Dโ†’C}F = \{AB \rightarrow C, A \rightarrow D, D \rightarrow C\}F={ABโ†’C,Aโ†’D,Dโ†’C}
    • ๊ทธ๋Ÿฌ๋ฉด FFF๋Š” ๋…ผ๋ฆฌ์ ์œผ๋กœ Aโ†’CA \rightarrow CAโ†’C๋ฅผ ํ•จ์ถ•ํ•˜๋ฏ€๋กœ(์ดํ–‰์„ฑ), ABโ†’CAB \rightarrow CABโ†’C์—์„œ BBB๋Š” ๋ถˆํ•„์š”ํ•จ.
  • FD์˜ ์˜ค๋ฅธ์ชฝ์—์„œ ์†์„ฑ์„ ์ œ๊ฑฐํ•˜๋ฉด ์ œ์•ฝ์กฐ๊ฑด์ด ๋” ์•ฝํ•ด์งˆ ์ˆ˜ ์žˆ์Œ.
    • ABโ†’CDAB \rightarrow CDABโ†’CD๊ฐ€ ์žˆ๊ณ  CCC๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด, ์ž ์žฌ์ ์œผ๋กœ ๋” ์•ฝํ•œ ๊ฒฐ๊ณผ์ธ ABโ†’DAB \rightarrow DABโ†’D๋ฅผ ์–ป์Œ.
    • ABโ†’DAB \rightarrow DABโ†’D๋งŒ์œผ๋กœ๋Š” ABโ†’CAB \rightarrow CABโ†’C๋ฅผ ์ถ”๋ก ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋” ์•ฝํ•  ์ˆ˜ ์žˆ์Œ.
    • ์ง‘ํ•ฉ FFF์— ๋”ฐ๋ผ, ABโ†’CDAB \rightarrow CDABโ†’CD์—์„œ CCC๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Œ.
    • ์˜ˆ: F={ABโ†’CD,Aโ†’C}F = \{AB \rightarrow CD, A \rightarrow C\}F={ABโ†’CD,Aโ†’C}
    • ABโ†’CDAB \rightarrow CDABโ†’CD๋ฅผ ABโ†’DAB \rightarrow DABโ†’D๋กœ ๋Œ€์ฒดํ•œ ํ›„์—๋„, ์—ฌ์ „ํžˆ ABโ†’CAB \rightarrow CABโ†’C๋ฅผ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ(Aโ†’CA \rightarrow CAโ†’C๋กœ๋ถ€ํ„ฐ), ๋”ฐ๋ผ์„œ ABโ†’CDAB \rightarrow CDABโ†’CD๋ฅผ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ์Œ์„ ๋ณด์ผ ์ˆ˜ ์žˆ์Œ.
  • FFF์— ์žˆ๋Š” FD์˜ ์†์„ฑ์€ F+F+F+๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์„ ๋•Œ ๋ถˆํ•„์š”ํ•จ.
  • ํ•จ์ˆ˜ ์ข…์†์„ฑ ์ง‘ํ•ฉ FFF์™€ FFF์— ์žˆ๋Š” FD ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ๋ฅผ ๊ณ ๋ ค
    • ์™ผ์ชฝ์—์„œ ์ œ๊ฑฐ: ์†์„ฑ AAA๋Š” ฮฑ\alphaฮฑ์—์„œ ๋ถˆํ•„์š”ํ•จ if
      • AโˆˆฮฑA \in \alphaAโˆˆฮฑ์ด๊ณ 
      • FFF๋Š” (Fโˆ’{ฮฑโ†’ฮฒ})โˆช{(ฮฑโˆ’A)โ†’ฮฒ}(F - \{\alpha \rightarrow \beta\}) \cup \{(\alpha - A) \rightarrow \beta\}(Fโˆ’{ฮฑโ†’ฮฒ})โˆช{(ฮฑโˆ’A)โ†’ฮฒ}๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ•จ์ถ•
    • ์˜ค๋ฅธ์ชฝ์—์„œ ์ œ๊ฑฐ: ์†์„ฑ AAA๋Š” ฮฒ\betaฮฒ์—์„œ ๋ถˆํ•„์š”ํ•จ if
      • AโˆˆฮฒA \in \betaAโˆˆฮฒ์ด๊ณ 
      • ํ•จ์ˆ˜ ์ข…์†์„ฑ ์ง‘ํ•ฉ (Fโˆ’{ฮฑโ†’ฮฒ})โˆช{ฮฑโ†’(ฮฒโˆ’A)}(F - \{\alpha \rightarrow \beta\}) \cup \{\alpha \rightarrow (\beta - A)\}(Fโˆ’{ฮฑโ†’ฮฒ})โˆช{ฮฑโ†’(ฮฒโˆ’A)}๊ฐ€ FFF๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ•จ์ถ•
  • ์ฆ‰, ์•ฝํ•œ FFF๋กœ๋ถ€ํ„ฐ ๋” ๊ฐ•ํ•œ FFF๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ•จ์ถ•ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ ์†์„ฑ์€ ๋ถˆํ•„์š”ํ•จ.
  • ์ฐธ๊ณ : "๋” ๊ฐ•ํ•œ" ํ•จ์ˆ˜ ์ข…์†์„ฑ์€ ํ•ญ์ƒ "๋” ์•ฝํ•œ" ๊ฒƒ์„ ํ•จ์ถ•ํ•˜๋ฏ€๋กœ, ์œ„์˜ ๊ฐ ๊ฒฝ์šฐ์—์„œ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์˜ ํ•จ์ถ•์€ ์ž๋ช…ํ•จ.

Testing if an Attribute is Extraneous

  • Relation ์Šคํ‚ค๋งˆ RRR๊ณผ R+R^+R+์—์„œ ์„ฑ๋ฆฝํ•˜๋Š” ํ•จ์ˆ˜ ์ข…์†์„ฑ ์ง‘ํ•ฉ FFF๋ฅผ ๊ฐ€์ •ํ•˜๊ณ , ํ•จ์ˆ˜ ์ข…์†์„ฑ ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ์˜ ์†์„ฑ์„ ๊ณ ๋ ค
  • ์†์„ฑ AโˆˆฮฒA \in \betaAโˆˆฮฒ๊ฐ€ ฮฒ\betaฮฒ์—์„œ ๋ถˆํ•„์š”ํ•œ์ง€ ํ…Œ์ŠคํŠธ
    • ๋” ์•ฝํ•œ ์ง‘ํ•ฉ ๊ณ ๋ ค: Fโ€ฒ=(Fโˆ’{ฮฑโ†’ฮฒ})โˆช{ฮฑโ†’(ฮฒโˆ’A)}F' = (F - \{\alpha \rightarrow \beta\}) \cup \{\alpha \rightarrow (\beta - A)\}Fโ€ฒ=(Fโˆ’{ฮฑโ†’ฮฒ})โˆช{ฮฑโ†’(ฮฒโˆ’A)}
    • Fโ€ฒF'Fโ€ฒ ํ•˜์—์„œ ฮฑ+\alpha^+ฮฑ+๊ฐ€ AAA๋ฅผ ํฌํ•จํ•˜๋Š”์ง€ ํ™•์ธ; ํฌํ•จํ•˜๋ฉด, AAA๋Š” ฮฒ\betaฮฒ์—์„œ ๋ถˆํ•„์š”ํ•จ.
  • ์†์„ฑ AโˆˆฮฑA \in \alphaAโˆˆฮฑ๊ฐ€ ฮฑ\alphaฮฑ์—์„œ ๋ถˆํ•„์š”ํ•œ์ง€ ํ…Œ์ŠคํŠธ
    • ฮณ=ฮฑโˆ’{A}\gamma = \alpha - \{A\}ฮณ=ฮฑโˆ’{A}๋ผ ํ•˜์ž. ๋” ๊ฐ•ํ•œ FD ฮณโ†’ฮฒ\gamma \rightarrow \betaฮณโ†’ฮฒ๊ฐ€ FFF๋กœ๋ถ€ํ„ฐ ์ถ”๋ก ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธ
    • FFF์˜ ์ข…์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ฮณ+\gamma^+ฮณ+๋ฅผ ๊ณ„์‚ฐ
    • ฮณ+\gamma^+ฮณ+๊ฐ€ ฮฒ\betaฮฒ์˜ ๋ชจ๋“  ์†์„ฑ์„ ํฌํ•จํ•˜๋ฉด, AAA๋Š” ฮฑ\alphaฮฑ์—์„œ ๋ถˆํ•„์š”ํ•จ.
  • ๋ถˆํ•„์š”ํ•œ ์†์„ฑ์˜ ์˜ˆ
    • F={ABโ†’CD,Aโ†’E,Eโ†’C}F = \{AB \rightarrow CD, A \rightarrow E, E \rightarrow C\}F={ABโ†’CD,Aโ†’E,Eโ†’C}
    • ABโ†’CDAB \rightarrow CDABโ†’CD์—์„œ CCC๊ฐ€ ๋ถˆํ•„์š”ํ•œ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด,
    • Fโ€ฒ={ABโ†’D,Aโ†’E,Eโ†’C}F' = \{AB \rightarrow D, A \rightarrow E, E \rightarrow C\}Fโ€ฒ={ABโ†’D,Aโ†’E,Eโ†’C} ํ•˜์—์„œ ABABAB์˜ ์†์„ฑ ํํฌ ๊ณ„์‚ฐ
    • ํํฌ๋Š” ABCDEABCDEABCDE์ด๋ฉฐ, CCC๋ฅผ ํฌํ•จํ•จ.
    • ์ด๋Š” CCC๊ฐ€ ๋ถˆํ•„์š”ํ•จ์„ ์˜๋ฏธ

Canonical Cover

  • FFF์— ๋Œ€ํ•œ ์ •๊ทœ ์ปค๋ฒ„ FCF_CFCโ€‹๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ข…์†์„ฑ ์ง‘ํ•ฉ์ž„.
    • FFF๋Š” FCF_CFCโ€‹์˜ ๋ชจ๋“  ์ข…์†์„ฑ์„ ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ•จ์ถ•
    • FCF_CFCโ€‹๋Š” FFF์˜ ๋ชจ๋“  ์ข…์†์„ฑ์„ ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ•จ์ถ•
    • FCF_CFCโ€‹์˜ ์–ด๋–ค ํ•จ์ˆ˜ ์ข…์†์„ฑ๋„ ๋ถˆํ•„์š”ํ•œ ์†์„ฑ์„ ํฌํ•จํ•˜์ง€ ์•Š์Œ.
    • FCF_CFCโ€‹์˜ ๊ฐ ํ•จ์ˆ˜ ์ข…์†์„ฑ์˜ ์™ผ์ชฝ์€ ๊ณ ์œ ํ•จ. ์ฆ‰, ฮฑ1=ฮฑ2\alpha_1 = \alpha_2ฮฑ1โ€‹=ฮฑ2โ€‹์ธ ๋‘ ์ข…์†์„ฑ ฮฑ1โ†’ฮฒ1\alpha_1 \rightarrow \beta_1ฮฑ1โ€‹โ†’ฮฒ1โ€‹๊ณผ ฮฑ2โ†’ฮฒ2\alpha_2 \rightarrow \beta_2ฮฑ2โ€‹โ†’ฮฒ2โ€‹๊ฐ€ FCF_CFCโ€‹์— ์กด์žฌํ•˜์ง€ ์•Š์Œ.
  • ์ด๋Š” FC+=F+F_C^+ = F^+FC+โ€‹=F+๋ฅผ ์˜๋ฏธ
  • ์ง๊ด€์ ์œผ๋กœ, FFF์˜ ์ •๊ทœ ์ปค๋ฒ„๋Š” ์ค‘๋ณต ์ข…์†์„ฑ์ด๋‚˜ ์ข…์†์„ฑ์˜ ์ค‘๋ณต ๋ถ€๋ถ„์ด ์—†๋Š”, FFF์™€ ๋™๋“ฑํ•œ "์ตœ์†Œ" FD ์ง‘ํ•ฉ์ž„.
  • FFF์— ๋Œ€ํ•œ ์ •๊ทœ ์ปค๋ฒ„๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•
FC = F
repeat
    Use the union rule to replace any dependencies in FC
        of the form ฮฑ1 โ†’ ฮฒ1 and ฮฑ1 โ†’ ฮฒ2 with ฮฑ1 โ†’ ฮฒ1ฮฒ2
    Find a functional dependency ฮฑ โ†’ ฮฒ in FC with an extraneous
        attribute either in ฮฑ or in ฮฒ
        - Note: test for extraneous attributes done using FC, not F -
    If an extraneous attribute is found, delete it from ฮฑ โ†’ ฮฒ in FC
until (FC does not change)
  • ์ฐธ๊ณ : ์ผ๋ถ€ ๋ถˆํ•„์š”ํ•œ ์†์„ฑ์ด ์‚ญ์ œ๋œ ํ›„ ํ•ฉ์ง‘ํ•ฉ ๊ทœ์น™์ด ์ ์šฉ ๊ฐ€๋Šฅํ•ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋‹ค์‹œ ์ ์šฉํ•ด์•ผ ํ•จ.

Example: Computing a Canonical Cover

  • R=(A,B,C)R = (A, B, C)R=(A,B,C)
  • F={Aโ†’BC,Bโ†’C,Aโ†’B,ABโ†’C}F = \{ A \rightarrow BC, B \rightarrow C, A \rightarrow B, AB \rightarrow C \}F={Aโ†’BC,Bโ†’C,Aโ†’B,ABโ†’C}
  • Aโ†’BCA \rightarrow BCAโ†’BC์™€ Aโ†’BA \rightarrow BAโ†’B๋ฅผ Aโ†’BCA \rightarrow BCAโ†’BC๋กœ ๊ฒฐํ•ฉ
  • FCF_CFCโ€‹๋Š” ์ด์ œ {Aโ†’BC,Bโ†’C,ABโ†’C}\{ A \rightarrow BC, B \rightarrow C, AB \rightarrow C \}{Aโ†’BC,Bโ†’C,ABโ†’C}
  • ABโ†’CAB \rightarrow CABโ†’C์—์„œ AAA๊ฐ€ ๋ถˆํ•„์š”ํ•จ.
    • ABโ†’CAB \rightarrow CABโ†’C์—์„œ AAA๋ฅผ ์‚ญ์ œํ•œ ๊ฒฐ๊ณผ(์ฆ‰, Bโ†’CB \rightarrow CBโ†’C)๊ฐ€ ๋‹ค๋ฅธ ์ข…์†์„ฑ๋“ค์— ์˜ํ•ด ํ•จ์ถ•๋˜๋Š”์ง€ ํ™•์ธ
    • ์˜ˆ: ์‚ฌ์‹ค Bโ†’CB \rightarrow CBโ†’C๋Š” ์ด๋ฏธ ์กด์žฌํ•จ.
  • FCF_CFCโ€‹๋Š” ์ด์ œ {Aโ†’BC,Bโ†’C}\{ A \rightarrow BC, B \rightarrow C \}{Aโ†’BC,Bโ†’C}
  • Aโ†’BCA \rightarrow BCAโ†’BC์—์„œ CCC๊ฐ€ ๋ถˆํ•„์š”ํ•จ.
    • Aโ†’CA \rightarrow CAโ†’C๊ฐ€ Aโ†’BA \rightarrow BAโ†’B์™€ ๋‹ค๋ฅธ ์ข…์†์„ฑ๋“ค์— ์˜ํ•ด ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ•จ์ถ•๋˜๋Š”์ง€ ํ™•์ธ
    • ์˜ˆ: Aโ†’BA \rightarrow BAโ†’B์™€ Bโ†’CB \rightarrow CBโ†’C์— ๋Œ€ํ•œ ์ดํ–‰์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ
    • ๋” ๋ณต์žกํ•œ ๊ฒฝ์šฐ์—๋Š” A์˜ ์†์„ฑ ํํฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
  • ์ •๊ทœ ์ปค๋ฒ„๋Š”: FC={Aโ†’B,Bโ†’C}F_C = \{ A \rightarrow B, B \rightarrow C \}FCโ€‹={Aโ†’B,Bโ†’C}

Dependency Preservation

  • RRR์— ๋Œ€ํ•œ ํ•จ์ˆ˜ ์ข…์†์„ฑ ์ง‘ํ•ฉ FFF์™€ RRR์˜ ๋ถ„ํ•ด {R1,โ€ฆ,Rn}\{R_1, \dots, R_n\}{R1โ€‹,โ€ฆ,Rnโ€‹}์„ ๊ฐ€์ •
  • FiF_iFiโ€‹๋ฅผ RiR_iRiโ€‹์˜ ์†์„ฑ๋งŒ์„ ํฌํ•จํ•˜๋Š” F+F^+F+์˜ ๋ชจ๋“  FD ์ง‘ํ•ฉ(์ฆ‰, FFF์˜ RiR_iRiโ€‹์— ๋Œ€ํ•œ ์ œํ•œ)์ด๋ผ ํ•˜๊ณ , Fโ€ฒ=F1โˆชF2โˆชโ‹ฏโˆชFnF' = F_1 \cup F_2 \cup \dots \cup F_nFโ€ฒ=F1โ€‹โˆชF2โ€‹โˆชโ‹ฏโˆชFnโ€‹์ด๋ผ ํ•˜์ž.
  • ๋ถ„ํ•ด๊ฐ€ ์ข…์†์„ฑ์„ ๋ณด์กดํ•œ๋‹ค๋ฉด,

    Fโ€ฒ+=(F1โˆชF2โˆชโ‹ฏโˆชFn)+=F+F'^+ = (F_1 \cup F_2 \cup \dots \cup F_n)^+ = F^+ Fโ€ฒ+=(F1โ€‹โˆชF2โ€‹โˆชโ‹ฏโˆชFnโ€‹)+=F+

  • ์ฆ‰, ๊ฐ RiR_iRiโ€‹์˜ FD๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›๋ž˜ FD๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Œ.
  • ๋ถ„ํ•ด๊ฐ€ ์ข…์†์„ฑ์„ ๋ณด์กดํ•˜์ง€ ์•Š์œผ๋ฉด ํ•จ์ˆ˜ ์ข…์†์„ฑ ์œ„๋ฐ˜์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ ํ™•์ธ ์‹œ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์กฐ์ธ(join)์„ ๊ณ„์‚ฐํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Œ.
  • ๊ทธ๋Ÿฌ๋‚˜ ๋ถ„ํ•ด๊ฐ€ ์ข…์†์„ฑ์„ ๋ณด์กดํ•˜๋ฉด, ์ด๋Ÿฌํ•œ ํ™•์ธ์ด ์šฉ์ดํ•ด์ง.
    • ๊ฐ RiR_iRiโ€‹์—์„œ FiF_iFiโ€‹๋งŒ ํ™•์ธํ•˜๋ฉด ์ถฉ๋ถ„ํ•จ.
    • ๊ทธ๋ฆฌ๊ณ  FiF_iFiโ€‹์˜ ๋ชจ๋“  FD๋Š” RiR_iRiโ€‹์˜ ์†์„ฑ๋งŒ์„ ํฌํ•จํ•˜๋ฏ€๋กœ, ์กฐ์ธ์„ ํ•˜์ง€ ์•Š๊ณ  ํ•˜๋‚˜์˜ relation๋งŒ ํ™•์ธํ•˜์—ฌ ํ•ด๋‹น ์ข…์†์„ฑ์˜ ๋งŒ์กฑ ์—ฌ๋ถ€๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Œ.

(Optional) Testing for Dependency Preservation

  • RRR์„ R1,R2,โ€ฆ,RnR_1, R_2, \dots, R_nR1โ€‹,R2โ€‹,โ€ฆ,Rnโ€‹์œผ๋กœ ๋ถ„ํ•ดํ•  ๋•Œ ์ข…์†์„ฑ ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ๊ฐ€ ๋ณด์กด๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ํ…Œ์ŠคํŠธ๋ฅผ ์ ์šฉ (์†์„ฑ ํํฌ๋Š” FFF๋กœ ๊ณ„์‚ฐ)
    result = ฮฑ // result๋Š” ฮฑ์— ์ข…์†๋˜๋Š” ์†์„ฑ๋“ค์˜ ์ง‘ํ•ฉ, ์ดˆ๊ธฐ์—๋Š” ฮฑ ์ž์‹ 
    repeat
        for each Ri in the decomposition // Fi ํ•˜์—์„œ (result)+๋ฅผ ์ฐพ์Œ.
            t = (result โˆฉ Ri)+ โˆฉ Ri
            result = result โˆช t
    until (result does not change) // F' ํ•˜์—์„œ (result)+๋ฅผ ์ฐพ์Œ.
    
  • $\text{result}`๊ฐ€ ฮฒ\betaฮฒ์˜ ๋ชจ๋“  ์†์„ฑ์„ ํฌํ•จํ•˜๋ฉด, ํ•จ์ˆ˜ ์ข…์†์„ฑ ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ๋Š” ๋ณด์กด๋จ
  • ๋ถ„ํ•ด๊ฐ€ ์ข…์†์„ฑ์„ ๋ณด์กดํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด FFF์˜ ๋ชจ๋“  ์ข…์†์„ฑ์— ๋Œ€ํ•ด ํ…Œ์ŠคํŠธ๋ฅผ ์ ์šฉ
  • ์ด ์ ˆ์ฐจ๋Š” F+F^+F+์™€ (F1โˆชF2โˆชโ‹ฏโˆชFn)+(F_1 \cup F_2 \cup \dots \cup F_n)^+(F1โ€‹โˆชF2โ€‹โˆชโ‹ฏโˆชFnโ€‹)+๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ง€์ˆ˜ ์‹œ๊ฐ„์ด ์•„๋‹Œ ๋‹คํ•ญ ์‹œ๊ฐ„์ด ์†Œ์š”๋จ

Algorithms for Decomposition Using Functional Dependencies

Testing for BCNF

  • ์ž๋ช…ํ•˜์ง€ ์•Š์€(non-trivial) ์ข…์†์„ฑ ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ๊ฐ€ BCNF ์œ„๋ฐ˜์„ ์ผ์œผํ‚ค๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด
    1. ฮฑ+\alpha^+ฮฑ+(ฮฑ\alphaฮฑ์˜ ์†์„ฑ ํํฌ)๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ ,
    2. ๊ทธ๊ฒƒ์ด RRR์˜ ๋ชจ๋“  ์†์„ฑ์„ ํฌํ•จํ•˜๋Š”์ง€, ์ฆ‰ RRR์˜ ์Šˆํผํ‚ค์ธ์ง€ ํ™•์ธ
  • Relation ์Šคํ‚ค๋งˆ RRR์ด BCNF์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด
    • ๋‹จ์ˆœํ™”๋œ ํ…Œ์ŠคํŠธ: F+F^+F+๊ฐ€ ์•„๋‹Œ FFF์˜ FD์— ๋Œ€ํ•ด์„œ๋งŒ BCNF ์œ„๋ฐ˜ ์—ฌ๋ถ€ ํ™•์ธ
    • FFF์˜ ์ข…์†์„ฑ ์ค‘ ์–ด๋А ๊ฒƒ๋„ BCNF ์œ„๋ฐ˜์„ ์ผ์œผํ‚ค์ง€ ์•Š์œผ๋ฉด, F+F^+F+์˜ ์ข…์†์„ฑ ์ค‘ ์–ด๋А ๊ฒƒ๋„ BCNF ์œ„๋ฐ˜์„ ์ผ์œผํ‚ค์ง€ ์•Š์Œ.
    • ๊ทธ๋Ÿฌ๋‚˜, RRR์˜ ๋ถ„ํ•ด์—์„œ relation๋ฅผ ํ…Œ์ŠคํŠธํ•  ๋•Œ FFF๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๋‹จ์ˆœํ™”๋œ ํ…Œ์ŠคํŠธ๋Š” ๋ถ€์ •ํ™•ํ•จ.
    • R=(A,B,C,D,E)R = (A, B, C, D, E)R=(A,B,C,D,E), F={Aโ†’B,BCโ†’D}F = \{A \rightarrow B, BC \rightarrow D\}F={Aโ†’B,BCโ†’D}๋ฅผ ๊ณ ๋ ค
    • RRR์„ R1=(A,B)R_1 = (A, B)R1โ€‹=(A,B)์™€ R2=(A,C,D,E)R_2 = (A, C, D, E)R2โ€‹=(A,C,D,E)๋กœ ๋ถ„ํ•ด
    • FFF์˜ ์ข…์†์„ฑ ์ค‘ ์–ด๋А ๊ฒƒ๋„ (A,C,D,E)(A, C, D, E)(A,C,D,E)์˜ ์†์„ฑ๋งŒ์„ ํฌํ•จํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, R2R_2R2โ€‹๊ฐ€ BCNF๋ฅผ ๋งŒ์กฑํ•œ๋‹ค๊ณ  ์˜คํ•ดํ•  ์ˆ˜ ์žˆ์Œ.
    • ์‚ฌ์‹ค, F+F^+F+์˜ ์ข…์†์„ฑ ACโ†’DAC \rightarrow DACโ†’D๋Š” R2R_2R2โ€‹๊ฐ€ BCNF์— ์žˆ์ง€ ์•Š์Œ์„ ๋ณด์—ฌ์คŒ

(Optional) Testing Decomposition for BCNF

  • RRR์˜ ๋ถ„ํ•ด์— ์žˆ๋Š” relation RiR_iRiโ€‹๊ฐ€ BCNF์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด
    • FiF_iFiโ€‹(์ฆ‰, RiR_iRiโ€‹์˜ ์†์„ฑ๋งŒ์„ ํฌํ•จํ•˜๋Š” F+F^+F+์˜ ๋ชจ๋“  FD)์— ๋Œ€ํ•ด RiR_iRiโ€‹๋ฅผ BCNF ํ…Œ์ŠคํŠธ
    • ๋˜๋Š” RRR์—์„œ ์„ฑ๋ฆฝํ•˜๋Š” ์›๋ž˜์˜ ์ข…์†์„ฑ ์ง‘ํ•ฉ FFF๋ฅผ ์‚ฌ์šฉํ•˜๋˜, ๋‹ค์Œ ํ…Œ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉ
      • ๋ชจ๋“  ์†์„ฑ ์ง‘ํ•ฉ ฮฑโІRi\alpha \subseteq R_iฮฑโІRiโ€‹์— ๋Œ€ํ•ด, ฮฑ+\alpha^+ฮฑ+๊ฐ€ Riโˆ’ฮฑR_i - \alphaRiโ€‹โˆ’ฮฑ์˜ ์†์„ฑ์„ ํฌํ•จํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, RiR_iRiโ€‹์˜ ๋ชจ๋“  ์†์„ฑ์„ ํฌํ•จํ•˜๋Š”์ง€ ํ™•์ธ
    • ๋งŒ์•ฝ F+F^+F+์˜ ์–ด๋–ค ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ์— ์˜ํ•ด ์กฐ๊ฑด์ด ์œ„๋ฐ˜๋˜๋ฉด, ์ข…์†์„ฑ ฮฑโ†’(ฮฑ+โˆ’ฮฑ)โˆฉRi\alpha \rightarrow (\alpha^+ - \alpha) \cap R_iฮฑโ†’(ฮฑ+โˆ’ฮฑ)โˆฉRiโ€‹๊ฐ€ RiR_iRiโ€‹์—์„œ ์„ฑ๋ฆฝํ•จ์„ ๋ณด์ผ ์ˆ˜ ์žˆ๊ณ , RiR_iRiโ€‹๋Š” BCNF๋ฅผ ์œ„๋ฐ˜ํ•จ.
    • RiR_iRiโ€‹๋ฅผ ๋ถ„ํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์œ„์˜ ์ข…์†์„ฑ์„ ์‚ฌ์šฉ
    • ํ›„์ž์˜ ํ…Œ์ŠคํŠธ๋Š” FFF์˜ ๋ชจ๋“  ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ์—์„œ ฮฑ+\alpha^+ฮฑ+๋ฅผ ํ™•์ธํ•˜๋Š” ๋Œ€์‹ , RiR_iRiโ€‹์˜ '๋ชจ๋“  ์†์„ฑ ๋ถ€๋ถ„์ง‘ํ•ฉ'์˜ ์†์„ฑ ํํฌ๋ฅผ ํ™•์ธ

BCNF Decomposition Algorithm

result := {R};
done := false;
compute $F+$;
while (not done) do
    if (there is a schema Ri in result that is not in BCNF) then
        begin
            let ฮฑโ†’ฮฒ be a nontrivial functional dependency that holds on Ri
                such that ฮฑโ†’Ri is not in $F+$ , and ฮฑโˆฉฮฒ = โˆ…;
            // ์ด๋Š” ฮฑ๊ฐ€ Ri์˜ ์Šˆํผํ‚ค๊ฐ€ ์•„๋‹˜์„ ์˜๋ฏธ
            result := (result โ€“ Ri) โˆช (Ri โ€“ ฮฒ) โˆช (ฮฑ, ฮฒ);
        end
    else
        done := true;
  • ์ฐธ๊ณ : ๊ฐ RiR_iRiโ€‹๋Š” BCNF์— ์žˆ์œผ๋ฉฐ, ๋ถ„ํ•ด๋Š” ๋ฌด์†์‹ค-์กฐ์ธ(lossless-join)์ž„.

Example of BCNF Decomposition

  • class(course_id, title, dept_name, credits, sec_id, semester, year, building, room_number, capacity, time_slot_id)
  • ํ•จ์ˆ˜ ์ข…์†์„ฑ
    • course_id โ†’ title, dept_name, credits
    • building, room_number โ†’ capacity
    • course_id, sec_id, semester, year โ†’ building, room_number, time_slot_id
  • ํ›„๋ณด ํ‚ค: {course_id, sec_id, semester, year}
  • BCNF ๋ถ„ํ•ด
    • course_id โ†’ title, dept_name, credits๊ฐ€ ์„ฑ๋ฆฝ
    • ๊ทธ๋Ÿฌ๋‚˜ course_id๋Š” ์Šˆํผํ‚ค๊ฐ€ ์•„๋‹˜
    • class๋ฅผ ๋‹ค์Œ์œผ๋กœ ๋Œ€์ฒด
      • course(course_id, title, dept_name, credits)
      • class-1(course_id, sec_id, semester, year, building, room_number, capacity, time_slot_id)

Example of BCNF Decomposition

  • course๋Š” BCNF์— ์žˆ์Œ.
  • building, room_number โ†’ capacity๊ฐ€ class-1์—์„œ ์„ฑ๋ฆฝ
  • ๊ทธ๋Ÿฌ๋‚˜ {building, room_number}๋Š” class-1์˜ ์Šˆํผํ‚ค๊ฐ€ ์•„๋‹˜
  • class-1์„ ๋‹ค์Œ์œผ๋กœ ๋Œ€์ฒด
    • classroom(building, room_number, capacity)
    • section(course_id, sec_id, semester, year, building, room_number, time_slot_id)
  • classroom๊ณผ section์€ BCNF์— ์žˆ์Œ.

Testing for 3NF

  • BCNF ํ…Œ์ŠคํŠธ์—์„œ์ฒ˜๋Ÿผ, FFF์˜ FD๋งŒ ํ™•์ธํ•˜๋ฉด ๋จ (F+F^+F+์˜ ๋ชจ๋“  FD๋ฅผ ํ™•์ธํ•  ํ•„์š” ์—†์Œ)
  • ๊ฐ ์ข…์†์„ฑ ฮฑโ†’ฮฒ\alpha \rightarrow \betaฮฑโ†’ฮฒ์— ๋Œ€ํ•ด, ฮฑ\alphaฮฑ๊ฐ€ ์Šˆํผํ‚ค์ธ์ง€ ์•„๋‹Œ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์†์„ฑ ํํฌ ์‚ฌ์šฉ
  • ฮฑ\alphaฮฑ๊ฐ€ ์Šˆํผํ‚ค๊ฐ€ ์•„๋‹ˆ๋ฉด, ฮฒ\betaฮฒ์˜ ๊ฐ ์†์„ฑ์ด RRR์˜ ํ›„๋ณด ํ‚ค์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•จ.
  • ์ด ํ…Œ์ŠคํŠธ๋Š” ํ›„๋ณด ํ‚ค๋ฅผ ์ฐพ๋Š” ๊ฒƒ์„ ํฌํ•จํ•˜๋ฏ€๋กœ ์ƒ๋‹นํžˆ ๋” ๋น„์šฉ์ด ๋งŽ์ด ๋“ฆ
  • 3NF ํ…Œ์ŠคํŠธ๋Š” NP-hard(NP-๋‚œํ•ด)์ธ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚จ
  • ํฅ๋ฏธ๋กญ๊ฒŒ๋„, 3NF๋กœ์˜ ๋ถ„ํ•ด๋Š” ๋‹คํ•ญ ์‹œ๊ฐ„์— ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Œ.

3NF Decomposition Algorithm

Let FC be a canonical cover for F;
i := 0;
for each FD ฮฑโ†’ฮฒ in FC
    i := i + 1;
    Ri := ฮฑฮฒ;

if none of Rj(1 โ‰ค j โ‰ค i) contains a candidate key for R
    then
        i := i + 1;
        Ri := any candidate key for R;

/- Optionally, remove redundant relations -/
repeat
    if any schema Rj is contained in another schema Rk
    then
        /- delete Rj -/
        Rj := Ri;
        i := i - 1;
until no more Rjs can be deleted

return (R1, R2, ..., Ri)
  • ์œ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ์„ ๋ณด์žฅ
    • ๊ฐ relation ์Šคํ‚ค๋งˆ RiR_iRiโ€‹๋Š” 3NF์— ์žˆ์Œ.
    • ๋ถ„ํ•ด๋Š” ์ข…์†์„ฑ ๋ณด์กด ๋ฐ ๋ฌด์†์‹ค-์กฐ์ธ์ž„.
  • ์ •ํ™•์„ฑ ์ฆ๋ช…์€ ๊ต์žฌ(์„น์…˜ 7.5.3) ์ฐธ์กฐ

3NF Decomposition: An Example

  • Relation ์Šคํ‚ค๋งˆ: cust_banker_branch = (customer_id, employee_id, branch_name, type)
  • ์ด relation ์Šคํ‚ค๋งˆ์˜ ํ•จ์ˆ˜ ์ข…์†์„ฑ
    • customer_id, employee_id โ†’ branch_name, type
    • employee_id โ†’ branch_name
    • customer_id, branch_name โ†’ employee_id
  • ๋จผ์ € ์ •๊ทœ ์ปค๋ฒ„๋ฅผ ๊ณ„์‚ฐ
    • ์ฒซ ๋ฒˆ์งธ ์ข…์†์„ฑ์˜ ์˜ค๋ฅธ์ชฝ์—์„œ branch_name์ด ๋ถˆํ•„์š”ํ•จ.
    • ๋‹ค๋ฅธ ๋ถˆํ•„์š”ํ•œ ์†์„ฑ์€ ์—†์œผ๋ฏ€๋กœ, FCF_CFCโ€‹๋ฅผ ์–ป์Œ.
      • customer_id, employee_id โ†’ type
      • employee_id โ†’ branch_name
      • customer_id, branch_name โ†’ employee_id

3NF Decomposition: An Example

  • for ๋ฃจํ”„๋Š” ๋‹ค์Œ์˜ 3NF ์Šคํ‚ค๋งˆ๋ฅผ ์ƒ์„ฑ
    • (customer_id, employee_id, type)
    • (employee_id, branch_name)
    • (customer_id, branch_name, employee_id)
  • (customer_id, employee_id, type)์ด ์›๋ž˜ ์Šคํ‚ค๋งˆ์˜ ํ›„๋ณด ํ‚ค๋ฅผ ํฌํ•จํ•˜๋ฏ€๋กœ, ๋” ์ด์ƒ์˜ relation ์Šคํ‚ค๋งˆ๋ฅผ ์ถ”๊ฐ€ํ•  ํ•„์š”๊ฐ€ ์—†์Œ.
  • for ๋ฃจํ”„์˜ ๋์—์„œ, (customer_id, branch_name, employee_id) ์Šคํ‚ค๋งˆ์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์ธ (employee_id, branch_name) ์Šคํ‚ค๋งˆ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์‚ญ์ œ
  • ๊ฒฐ๊ณผ์ ์ธ ๋‹จ์ˆœํ™”๋œ 3NF ์Šคํ‚ค๋งˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Œ.
    • (customer_id, employee_id, type)
    • (customer_id, branch_name, employee_id)

Design Goals

  • Relationํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์˜ ๋ชฉํ‘œ: ์Šคํ‚ค๋งˆ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถ„ํ•ด
    • BCNF
    • Lossless(๋ฌด์†์‹ค)
    • Dependency preservation(์ข…์†์„ฑ ๋ณด์กด)
  • ์ด๋ฅผ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์—†๋‹ค๋ฉด, ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜์šฉ
    • ์ข…์†์„ฑ ๋ณด์กด์˜ ๋ถ€์žฌ
    • 3NF ์‚ฌ์šฉ์œผ๋กœ ์ธํ•œ ์ค‘๋ณต์„ฑ
  • ํฅ๋ฏธ๋กญ๊ฒŒ๋„, SQL์€ ์Šˆํผํ‚ค ์ด์™ธ์˜ ํ•จ์ˆ˜ ์ข…์†์„ฑ์„ ์ง€์ •ํ•˜๋Š” ์ง์ ‘์ ์ธ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Œ.
    • Assertion(๋‹จ์–ธ)์„ ์‚ฌ์šฉํ•˜์—ฌ FD๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ…Œ์ŠคํŠธ ๋น„์šฉ์ด ๋น„์Œˆ (๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ง€์›๋˜์ง€ ์•Š์Œ)
    • ์ข…์†์„ฑ ๋ณด์กด ๋ถ„ํ•ด๊ฐ€ ์žˆ๋”๋ผ๋„, SQL์„ ์‚ฌ์šฉํ•˜๋ฉด ์™ผ์ชฝ์ด ํ‚ค๊ฐ€ ์•„๋‹Œ ํ•จ์ˆ˜ ์ข…์†์„ฑ์„ ํšจ์œจ์ ์œผ๋กœ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์—†์Œ.

and Others

Initial Relation Schemas

  • ์ดˆ๊ธฐ relation ์Šคํ‚ค๋งˆ R์ด ์ฃผ์–ด์กŒ์„ ๋•Œ
    • R์€ E-R ๋‹ค์ด์–ด๊ทธ๋žจ์„ ํ…Œ์ด๋ธ” ์ง‘ํ•ฉ์œผ๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ ์ƒ์„ฑ๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Œ.
    • R์€ ๊ด€์‹ฌ ์žˆ๋Š” ๋ชจ๋“  ์†์„ฑ์„ ํฌํ•จํ•˜๋Š” ๋‹จ์ผ relation(Universal relation, ์ „์ฒด relation)์˜€์„ ์ˆ˜ ์žˆ์Œ.
    • ์ •๊ทœํ™”๋Š” R์„ ๋” ์ž‘์€ relation๋กœ ๋ถ„ํ•ด
    • R์€ ์ž„์‹œ๋กœ ์„ค๊ณ„๋œ relation์˜ ๊ฒฐ๊ณผ์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ…Œ์ŠคํŠธ/์ •๊ทœํ˜•์œผ๋กœ ๋ณ€ํ™˜

(Optional) E-R Model and Normalization

  • E-R ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์‹ ์ค‘ํ•˜๊ฒŒ ์„ค๊ณ„ํ•˜๊ณ  ๋ชจ๋“  ์—”ํ‹ฐํ‹ฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‹๋ณ„ํ•˜๋ฉด, E-R ๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ ์ƒ์„ฑ๋œ ํ…Œ์ด๋ธ”์€ ์ถ”๊ฐ€์ ์ธ ์ •๊ทœํ™”๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์•„์•ผ ํ•จ.
  • ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ (๋ถˆ์™„์ „ํ•œ) ์„ค๊ณ„์—์„œ๋Š” ์—”ํ‹ฐํ‹ฐ์˜ ํ‚ค๊ฐ€ ์•„๋‹Œ ์†์„ฑ์—์„œ ์—”ํ‹ฐํ‹ฐ์˜ ๋‹ค๋ฅธ ์†์„ฑ์œผ๋กœ์˜ FD๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ (๋”ฐ๋ผ์„œ BCNF๊ฐ€ ์•„๋‹˜)
    • ์˜ˆ: employee ์—”ํ‹ฐํ‹ฐ (ID, name, dept_name, building, salary)
    • ํ•จ์ˆ˜ ์ข…์†์„ฑ dept_name โ†’ building
    • ์ข‹์€ ์„ค๊ณ„๋Š” department๋ฅผ ์—”ํ‹ฐํ‹ฐ๋กœ ๋งŒ๋“ค์—ˆ์„ ๊ฒƒ์ž„.
  • Relation ์ง‘ํ•ฉ์˜ ํ‚ค๊ฐ€ ์•„๋‹Œ ์†์„ฑ์—์„œ ๋น„๋กฏ๋œ ํ•จ์ˆ˜ ์ข…์†์„ฑ์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„์˜ relation๊ฐ€ ์ดํ•ญ(binary) relation์ด๋ฏ€๋กœ ๋“œ๋ฌพ

Denormalization for Performance

  • ์„ฑ๋Šฅ์„ ์œ„ํ•ด ๋น„์ •๊ทœํ™”๋œ ์Šคํ‚ค๋งˆ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ์ˆ˜ ์žˆ์Œ.
  • ์˜ˆ: ๊ณผ์ • ์ •๋ณด์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค ๋ชจ๋“  ์„ ์ˆ˜๊ณผ๋ชฉ์ด ๊ณผ์ • ์ •๋ณด์™€ ํ•จ๊ป˜ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •
    • ์ •๊ทœํ™”๋œ ์Šคํ‚ค๋งˆ์—์„œ๋Š” course์™€ prereq์˜ ์กฐ์ธ์ด ํ•„์š”
  • ๋Œ€์•ˆ 1: course์™€ prereq์˜ ๋ชจ๋“  ์†์„ฑ์„ ํฌํ•จํ•˜๋Š” ๋น„์ •๊ทœํ™”๋œ relation ์‚ฌ์šฉ
    • ๋” ๋น ๋ฅธ ์กฐํšŒ
    • ์ค‘๋ณต์„ฑ์œผ๋กœ ์ธํ•œ ์ถ”๊ฐ€ ๊ณต๊ฐ„ ๋ฐ ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์‹คํ–‰ ์‹œ๊ฐ„
    • ์‘์šฉ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์ถ”๊ฐ€ ์ฝ”๋”ฉ ์ž‘์—… ๋ฐ ์ถ”๊ฐ€ ์ฝ”๋“œ์˜ ์˜ค๋ฅ˜ ๊ฐ€๋Šฅ์„ฑ
  • ๋Œ€์•ˆ 2: course โ‹ˆ prereq๋กœ ์ •์˜๋œ Materialized view(๊ตฌ์ฒดํ™”๋œ ๋ทฐ) ์‚ฌ์šฉ
    • ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์ถ”๊ฐ€ ์ฝ”๋”ฉ ์ž‘์—…์ด ์—†๊ณ  ๊ฐ€๋Šฅํ•œ ์˜ค๋ฅ˜๋ฅผ ํ”ผํ•œ๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๋ฉด, ์žฅ๋‹จ์ ์€ ์œ„์™€ ๋™์ผ

Limitation of the Normalization

  • ์ •๊ทœํ™”๋กœ ํฌ์ฐฉ๋˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์˜ ์ผ๋ถ€ ์ธก๋ฉด
  • ํ”ผํ•ด์•ผ ํ•  ๋‚˜์œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์˜ ์˜ˆ
    • earnings(company_id, year, amount) ๋Œ€์‹  ๋‹ค์Œ ์‚ฌ์šฉ
      • earnings_2004, earnings_2005, earnings_2006 ๋“ฑ, ๋ชจ๋‘ (company_id, earnings) ์Šคํ‚ค๋งˆ ์‚ฌ์šฉ.
      • ์œ„๋Š” BCNF์— ์žˆ์ง€๋งŒ ๋งค๋…„ ์ƒˆ๋กœ์šด ํ…Œ์ด๋ธ”์ด ํ•„์š”ํ•˜๊ณ , ๊ฐ ์ƒˆ๋กœ์šด relation๋ฅผ ๊ณ ๋ คํ•˜๊ธฐ ์œ„ํ•ด ๋งค๋…„ ์ƒˆ๋กœ์šด ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•จ.
      • ์—ฌ๋Ÿฌ ํ•ด์— ๊ฑธ์นœ ์ฟผ๋ฆฌ๋„ ๋งŽ์€ relation๋ฅผ ์ฐธ์กฐํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋” ๋ณต์žกํ•ด์ง.
    • company_year(company_id, earnings_2004, earnings_2005, earnings_2006)
      • BCNF์— ์žˆ์ง€๋งŒ, ์œ„์™€ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ.
    • ํ•œ ์†์„ฑ์˜ ๊ฐ’์ด ์—ด ์ด๋ฆ„์ด ๋˜๋Š” Crosstab(๊ต์ฐจ ๋ถ„์„ํ‘œ)์˜ ์˜ˆ๋กœ, ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ์™€ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋„๊ตฌ์—์„œ ์‚ฌ์šฉ๋จ
์ตœ๊ทผ ์ˆ˜์ •: 26. 6. 12. ์˜คํ›„ 3:28
Contributors: kmbzn, Claude Sonnet 4.6

BUILT WITH

CloudflareNode.jsGitHubGitVue.jsJavaScriptVSCodenpm

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