Hogyan bontható le ez a kapcsolat 3NF kapcsolatokra?

Ma olvastam a 3NF bontási algoritmusról. Ez a következőket mondta:

  1. Keressen egy minimális F-alapot, mondjuk G-t használja az {X, A} -t a bontás egyik relációjának sémájaként
  2. Ha a 2. lépés relációinak halmaza egyik sem R kulcsszuper kulcs, adjon hozzá egy másik relációt, amelynek sémája az R kulcsa. / li>

Ezt a relációt 3NF-re szeretném bontani.

R(A,B,C) S={A→B, A→C, B→A, B→C, C→A, C→ B, AB→ C, BC→A, AC→B, A→BC, B→AC, C→AB} 

Mint láthatjuk, az R kulcsa: {A},{B},{C}

S több minimális alapú, például:

  1. {A→B, B→A, B→C, C→B}; és
  2. {A→B, B→C, C→A}

A probléma az, ha az 1. minimális alapot használjuk, akkor az R-t 2 relációra bontjuk : (A, B), (B, C).

Ha a 2. minimális bázist használjuk, akkor R-ből: (A, B), (B, C), (C, A) válik.

A kérdésem a következő: melyik a helyes?

Válasz

Először is vegye figyelembe, hogy Az eredeti reláció már a Harmadik Normál Formában van, mivel mindegyik attribútum elsődleges (tulajdonképpen mindegyik attribútum kulcs), így a 3NF definícióját tiszteletben tartják.

Ezután vegye figyelembe, hogy az algoritmus hiányos. A lépések a következők:

  1. Keressen egy minimális F-alapot, mondjuk G-t
  2. Az FD minden egyes csoportjával azonosak bal rész, X → A 1 , X → A 2 , …, X → A n G-ben, használja az {X, A 1 , A 2 , …, A n } mint a bontás egyik relációjának sémája
  3. Törölje az összes relációt, amelynek attribútumait egy másik reláció tartalmazza.
  4. Ha a 2. lépés relációinak egyike sem egy R kulcs, akkor adjon hozzá egy másik relációt, amelynek sémája az R kulcsa.

Tehát az első esetben három függőségi csoportot kap:

A → B B → A B → C C → B 

amelyek három relációt hoznak létre, R 1 (A, B), R 2 (A, B, C), R 3 (B, C), és az algoritmust követve eredményt kap csak R 2 , mivel a másik kettő tartalmaz attribútumokat.

Tehát két különböző kimenete van az algoritmusból, a használt minimális bázistól függően (ami viszont a sorrend, amelyben figyelembe veszi a függőségeket a minimális fedezet kiszámításakor).

Tehát válasz a kérdésére:

melyik az egyik helyes?

az: mindkettő helyes , mivel mindkettő megfelel a 3NF definíciójának. Egyszerűen felfedezte, hogy a 3NF-ben egy reláció lebontására szolgáló szintézis algoritmus különböző megoldásokat eredményezhet.

Más kérdés: melyik a „jobb”, és természetesen az egyetlen relációval ellátott megoldás „jobb” , mivel a lekérdezések során nem kell táblákhoz csatlakoznia.

Természetesen, ha az elején ellenőrizni lehet, hogy a reláció már 3NF-ben van-e, akkor elkerülheti az algoritmus alkalmazását. De ez általában nem hajtható végre, mivel az ellenőrzés megköveteli az összes kulcs exponenciális kiszámítását, hogy megtalálják a reláció elsődleges attribútumait.

Megjegyzések

  • Köszönöm a válaszod! De hogyan hozta létre 3 összefüggést: R1 (A, B), R2 (A, B, C), R3 (B, C)? Azt hittem, hogy csak R1 és R3 van benne. Az R2 az eredeti reláció.
  • A helyes algoritmus második lépéséhez két függőség van ugyanazzal a bal résszel, B → A és B → C, ezért az összes attribútumot össze kell hoznia, és meg kell kapnia a kapcsolat (A, B, C). Csak az algoritmus szabja meg.
  • Hú, nem tudtam ' erről a 2. lépésről. Az algoritmust egy A First Course in Database System - 3rd edition nevű könyvből vettem. Melyiket kövessem most?
  • Ez az algoritmus nem teljes. Az adatbázisok összes főbb könyve rendelkezik azzal az algoritmussal, amelyet a válaszban leírtam.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük