170 3. RELACYJNY MODI-L DANYCH P
Właściwym sposobem eliminowania wymienionych powyżej anomalii jest dekompozycja relacji. Sprowadza się on do podziału atrybutów relacji R między dwa schematy nowych relacji. Reguła dekompozycji obejmuje również podział krotek relacji wejściowej R między nowe relacje, dzięki operacji rzutowania krotek R. Sposób eliminowania anomalii przez dekompozycję opiszemy zaraz po omówieniu procesu samej dekompozycji.
Relację R o schemacie {Au A2,...,A„} dekomponujemy między dwie relacje S i T o schematach odpowiednio {B\, B2,..., Bm) oraz {C\, Cj,..., Ck] według następujących zasad:
1. {Au A2, ...» A„} - {B\, B2,..., Bm} u Cu C2,..., C*}.
2. Krotki relacji S powstają przez rzutowanie wszystkich krotek relacji R
na zbiór atrybutów {Bu &2, Oznacza to, że z każdej krotki l
z bieżącej instancji relacji R pobieramy wartości atrybutów {B\, Bi, ...,Bm) i tworzymy w len sposób krotkę relacji S, należącą do jej bieżącej instancji. Ponieważ relacje są zbiorami, więc taką sama krotkę S można uzyskać z rzutowania różnych krotek relacji R. W takich przypadkach w S umieszcza się tylko jedną kopię.
3. W podobny sposób, z rzutowania krotek bieżącej instancji relacji R na zbiór atrybutów {Ci, C2,..., C*}, otrzymuje się krotki relacji T.
PRZYKł.AD 3.32
Spróbujmy dekomponować relację Film z rys. 3.30. Najpierw dekomponujemy schemat tej relacji. Wybór atrybutów do poszczególnych relacji został podyktowany motywami, które omówimy w p. 3.7.3; przedstawia się on następująco:
1. Do relacji Filml dołączamy wszystkie atrybuty prócz atrybutu na-
zwiskoGwiazdy.
2. Relacja Film2 obejmuje atrybuty' tytuł, rok oraz nazwisko-Gwi azdy.
Proces dekompozycji instancji relacji przedstawimy na krótkim przykładzie danych z rys. 3.30. Ale najpierw zbudujemy rzut schematu relacji Film!:
{tytuł, rok, długość, typFilmu, nazwaStudia-)
Na rysunku 3.30 pierwsze trzy krotki mają identyczne wartości tych pięciu atrybutów'.
(Gwiezdne Wojny, 1977, 124, kolor, Fox)
W czwartej krotce wartości tych pięciu atrybutów są inne, a krotki piąta i szósta mają jednakowe wartości tych pięciu atrybutów. Relację Fili?.! przedstawiono na rys. 3.31.
tytuł |
rok |
długość |
typFiłmu |
nazwaStudia |
Gwiezdne Wojny |
1977 |
124 |
kolor |
Fox |
Potężne Kaczory |
1991 |
104 |
kolor |
Disney |
świat Wayne'a |
1992 |
95 |
kolor |
Paramount |
RYSUNEK 3.31 Relacja Filml
A teraz rozważmy rzut danych z rys. 3.30 do schematu relacji Film2. Każda z sześciu krotek różni się albo wartością atrybutu tytuł, albo atrybutu rok, albo r.azwiskoGwiazdy, a zatem otrzymujemy w wyniku relację przedstawioną na rys. 3.32.
tytuł |
rok |
nazwiskoGwiazdy |
Gwiezdne Wojny |
1977 |
Carrie Fisher |
Gwiezdne Wojny |
1977 |
Mark Haiaill |
Gwiezdne Wojny |
1977 |
Harrison Ford |
Potężne Kaczory |
1991 |
F.milio Estcvez |
Świat Wayne' a |
1992 |
Dana Carvey |
Świat Wayne'a |
1992 |
Mikę Meyers |
RYSUNEK 3.32 Relacja Fi lm2
□
Zauważmy, że dzięki dekompozycji udało się wyeliminować anomalie, które omawialiśmy wcześniej. Po pierwsze nie ma już redundancji: na przykład długość filmu w relacji Filml występuje tylko raz. Znika również ryzyko anomalii modyfikacji. Na przykład jeśli musimy zmienić długość filmu Gwiezdne Wojny, to nie powstanie już laka sytuacja, żeby ten film miał w bazie dwie różne w-artości tego atrybutu.
Ryzyko wystąpienia anomalii usunięć również znika. Jeśli usuniemy wszystkie gwiazdy filmu Potężne Kaczory, to zostaną w ten sposób usunięte wszystkie dane o tym filmie z relacji Fi Jn2. Ale wszystkie inne dane o nim będą nadal dostępne w relacji Filml.
Pozornie może się wydawać, że w dalszym ciągu w relacji Film2 występuje redundancja, ponieważ tytuł oraz rok produkcji filmu ukazują się kilka razy. Trzeba jednak pamiętać o tym. że te dwa atrybuty stanowią klucz dla filmu, a nie da sic tu już określić bardziej lapidarnego sposobu identyfikacji. Poza tym w relacji Filmż nie ma żadnych możliwości wystąpienia anomalii modyfikacji. Można mniemać, że gdy zmienimy rok w krotce / Carrie Fisher,