Professional Documents
Culture Documents
Rozdzial 3 B
Rozdzial 3 B
wiczenie 3.2.2. Naley przeksztaci opis w jzyku ODL z rys. 2.7 do relacyjnego schematu bazy danych. W
jaki sposb trzy modyfikacje wyspecyfikowane w wiczeniu 2.1.8 wpywaj na posta schematu relacyjnego?
!wiczenie 3.2.3. Na rysunku 3.14 przedstawiono w jzyku ODL definicj klasy klienci. W obiektach tej klasy
przechowuje si zbir rnych rodzajw telefonw (np. domowy, biurowy, fax) oraz zbir doczonych", w
ktrym klient otrzymuje kredyt przy pozyskaniu dla firmy nowych klientw. Naley przeksztaci t
specyfikacj z jzyka ODL do schematu relacyjnego bazy danych.
Na pocztku rozwamy zbiory encji, ktre nie s sabe. Modyfikacje, ktre s potrzebne do przeksztacenia
sabych zwizkw encji, wprowadzimy w p. 3.3.3. Dla kadego zbioru encji, ktry nie jest saby, utworzymy
relacj o takiej samej nazwie i z takim samym zbiorem atrybutw. W tej relacji nie bdzie adirych danych
dotyczcych zwizkw, w ktrych dany zbir uczestniczy. Zwizki zostan zdefiniowane przez osobne relacje,
omwimy to zagadnienie w p. 3.3.2.
PRZYKAD 3.1 U
Rozwamy trzy zbiory encji: Filmy, Gwiazdy oraz Studia z rys. 2.8, ktry odtwarzamy na rys. 3.15. Atrybutami
zbioru encji Filmy s: tytu, rok, dugo oraz typFilmu. Zatem relacja Filmy wyglda zupenie tak samo jak
relacja Film z rys. 3.1, ktrym rozpoczlimy podrozdzia 3.1.
tytu ) ( rok ) ~nazwiskoJ ( adres
Filmy Gwiazdy-w~ ~ Gwiazdy
dugo ~ typFilmu
nazwa
Posiada
Studia
adres
RYSUNEK 3.15
Diagram E/R bazy danych filmw
O
PRZYKAD 3.11
A teraz rozwamy zbir encji Gwiazdy z rys. 3.15. Tutaj wystpuj dwa atrybuty: nazwisko i adres. A wic
odpowiednia relacja mogaby wyglda nastpujco:
3.3. OD DIAGRAMW ZWIZKW ENCJI DO PROJEKTW RELACYJNYCH 133
nazwisko adres
Carrie Fisher 123 Maple St., Hollywood Mark Hamill 456 Oak Rd., Brentwood
Harrison Ford 789 Palm Dr, Beverly Hills
Ta relacja przypomina relacj Gwiazda z rys. 3.6, ktr utworzylimy w przykadzie 3.3. Jednak miaa ona trzy
atrybuty, dwa z nich: ulica i miasto reprezentoway struktur adresu. Rnica jest niewielka. Moglibymy
rwnie dobrze zaprojektowa nasz diagram zwizkw encji z rys. 2.8 tak, aby zbir encji Gwiazdy mia osobne
atrybuty ulica i miasto, co uczynioby relacj Gwiazdy identycznz relacjGwiazda z rys. 3.6.
0
Zauwamy, e powyszy zwizek oraz zwizek z przykadu 3.10, ktry utworzylimy dla zbioru encji
Filmy (przedstawiony na rys. 3.1), zawieraj dokadnie te same dane, ktre zawiera zwizek z rys. 3.12,
utworzony w przykadzie 3.6 dla klasy Film, jedynie z pominiciem waciwoci gwiazdy.
0
PRZYKAD 3.13
Postpujc w podobny sposb, mona przeksztaci zwizek Gwiazdy-w z rys. 3.15 do postaci relacji z
atrybutami tytu oraz rok (klucz Filmu) oraz z atrybutem nazwiskoGwiazdy, ktry stanowi klucz do zbioru encji
Gwiazdy. Na rysunku 3.16 pokazano przykad relacji Gwiazdy-w. Zauwamy, e ta relacja oraz rys. 3.16
zawieraj te same dane co rys. 3.13, nie obejmuj one tylko tych atrybutw klasy Gwiazda, ktre nie wchodz w
skad klucza (atrybutw dugo i typFilmu), umieszczone na rys. 3.13.
tytu I rok I nazwiskoGwiazdy
Gwiezdne Wojny Gwiezdne Wojny Gwiezdne Wojny Potne Kaczory wiat Wayne'a
wiat Wayne'a
RYSUNEK 3.16
Relacja zwizku Gwiazdy-w
1977
Carrie Fisher
1977
Mark Hamill
1977
Harrison Ford
1991
Emilio Estevez
1992
Dana Carvey
1992
Mike Meyers
Moe si wydawa, e na rys. 3.16 atrybut rok jest redundancyjny. Ale wynika to tylko z faktu, e w tym
przykadzie nazwy filmw nie powtarzaj si. Gdyby tam wystpowao kilka filmw o tym samym tytule, np.
King Kong", to rok byby istotny na przykad do rozstrzygnicia, ktre gwiazdy wystpujca ktrej wersji
filmu.
0
Zobaczmy, jakie s zalety schematu bazy danych, ktry otrzymamy, zaczynajc od modelu zwizkw encji
w porwnaniu ze schematem bazy przeksztaconym z modelu ODL.
Relacje czciej wystpuj w postaci znormalizowanej III klasy, co oznacza, e zawieraj mniej
redundancji ni przy bezporedniej transformacji z opisu ODL.
Dwukierunkowy zwizek w modelu ODL zostaje zastpiony pojedyncz relacj, ktra odzwierciedla
zwizek w obu kierunkach.
PRZYKAD 3.14
Rwnie
zwizki
wieloargumentowe
mona
w
atwy
Rozwamy'czteroargumentowy zwizek Kontrakty z rys. 2.12, po
sposb
przeksztaci
relacje.
wtrzony na rys. 3.17, ktry obejmuje gwiazd, film i dwa studia, pierwsze utrzymujce kontrakt z gwiazd i
drugie, ktre pozyskuje gwiazd do udziau w konkretnym filmie. Zwizek ten jest reprezentowany przez
relacj Kontrakty, ktrej schemat skada si z atrybutw czterech nastpujcych kluczy dla czterech zbiorw
encji:
1. Klucz nazwiskoGwiazdy dla zbioru gwiazd.
2. Klucz zoony z atrybutw tytu oraz rok dla filmu.
3. Klucz studioGwiazdy wskazujcy nazw pierwszego studia, jak pamitamy przyjlimy zaoenie, e nazwa
studio jest kluczem zbioru encji studio.
4. Klucz studioProducenta, ktry stanowi nazw tego studia, ktre produkuje film z udziaem gwiazdy.
RYSLIN>JK 3.17 Zwizek Kontrakty
Od ODL do relacji
Jak ju wspomnielimy, w wyniku przeksztalcenia zwizku z modelu zwizkw encji do schematu relacji
czasami otrzymujemy lepszy schemat relacyjny bazy danych ni w sytuacjach, gdy przeksztacamy zwizki w
ODL do postaci relacji. Jednake nic nie stoi na przeszkodzie, aby z modeli zwizkw encji zapoyczy
technik wydzielania w osobn relacj zwizkw typu wiele do jeden albo wiele do wiele. Pozwoli to wyeliminowa redundancj oraz mnoenie si liczby encji, co dzieje si czasami przy prbach implementowania
zwizku wielowartociowego w jzyku ODL przez definiujce go klasy. Poza tym przypomnijmy ponownie, e
w podrozdziale 3.7 bdzie mona pozna automatyczny sposb naprawienia schematu relacji, otrzymanego
bezporednio z opisu w jzyku ODL.
136
3. RELACYJNY MODEL DANYCIi
Nazwy atrybutw wprowadzonych do relacji zostay uwanie wybrane, poniewa,jeli jak dotychczas
uywalibymy okrelenia nazwa", to nie byoby jak odrni, czy chodzi o nazw studia producenta, czy o
studio gwiazdy.
0
Oczywicie, przy wprowadzaniu do sabego zbioru encji tych dodatkowych atrybutw trzeba
zachowa ostrono i nie dopuci do tego, aby jaka nazwa wystpia dwukrotnie. Jeli jest to
konieczne, to cz atrybutw, lub nawet wszystkie, trzeba przemianowa.
numer ) ( nazwa ) ( adres
Zespoy --~ednostka-~~ Studia
RYSUNEK 3.18
Zespoy jako przykad sabego zbioru encji
3.3. OD DIAGRAMW ZWIZKW ENCJI DO PROJEKTW RELACYJNYCH I 37
PRZYKAD 3.15
Rozwamy saby zbir encji Zespo~y z rys. 2.27, ktry zamiecilimy ponownie na rys. 3.18. Z tego
diagramu tworzymy trzy relacje o nastpujcych schematach:
Studia (nazwa, adr) Zespoy (numer, nazwaStudia) Jednostka-w(numer,
nazwaStudia, nazwa)
Pierwsza relacja Studia jest wynikiem najprostszego przeksztacenia ze zbioru encji o takiej samej nazwie.
Druga relacja zespoy jest odpowiednikiem sabego zbioru encji Zespoy. Atrybutami tej relacji s atrybuty
klucza zbioru Zespoly. Jeli istniayby w tym zbiorze jeszcze inne atrybuty, to trzeba by je doczy rwnie do
schematu tej relacji. Atrybut w relacji zespoy o nazwie nazwastudia stanowi odpowiednik atrybutu nazwa w
zbiorze eneji Studia.
Trzecia relacja Jednostka-w powstaje ze zwizku o takiej samej nazwie. Jak we wszystkich przypadkach,
tak i tu zwizek eneji reprezentujemy w modelu relacyjnym relacj, ktrej schemat zawiera atrybuty kluczy
wszystkich zbiorw encji objtych oryginalnym zwizkiem. W rozwaanym przypadku relacja Jednostka-w
zawiera atrybuty numer oraz nazwaStudia, ktre s kluczem sabego zbioru encji Zespoy oraz atrybut nazwa,
ktry jest kluczem zbioru encji Stadia. Zauwamy jednak, e studio o kluczu nazwastudia jest tym samym
studiem, ktrego kluczem jest nazwa, poniewa ,jednostka-w jest zwizkiem wiele do jeden.
Zamy na przykad, e Disney #3 oznacza jeden z zespow w studio Disneya. Zatem w zbiorze zwizku
Jednostka-w wystpuje para
(Disney #3, Disney)
Para ta w krotce relacji Jednostka-w bdzie reprezentowana nastpujco:
(3, Disney, Disney)
W konsekwencji moemy w relacji Jednostka-w poczy atrybuty nazwastudia i nazwa, co da prostszy
schemat:
Jednostka-w(numer, nazwa)
A teraz wida ju, e mona cakiem pomin relacj Jednostka-w, poniewa jej atrybuty spodzbiorem
atrybutw relacji zespoy.
0
PRZYKAD 3.16
Rozwamy teraz saby zbir encji kontrakty z przykadu 2.31 i rys. 2.28 z p. 2.6.1. Powtarzamy ten diagram na
rys. 3.19. Poniej zamieszczamy schemat relacji Kontrakty:
138
3. RELACYJNY MODEL DANYCH
RYSUNEK 3.19
Saby zbir encji Kontrakty
33. OD DIAGRAMW ZWI~ZKW ENCJI DO PROJEKTW RELACY.INYCH 1 39
bego zbioru encji E zawiera schematy relacji skonstruowanych dla kadego zwizku R, oznaczanego
podwjnym rombem", ktry jest typu wiele do jeden i prowadzi od zbioru E do kadego ze zbiorw
uyczajcych E swoich atrybutw kluczy. Ta sytuacja wynika z faktu, e do relacji odpowiadajcej zbiorowi E
docza si wszystkie kluczowe atrybuty E, ktre z kolei obejmuj atrybuty kluczy pozostaych zbiorw
objtych zwizkiem R. A wic reguy dla sabych zwizkw encji mona sformuowa w nastpujcy sposb:
Jeli E jest skabym zbiorem encji, to relacja konstruowana dla zbioru E skada si z atrybutw klucza E,
wczajc te atrybuty, ktre stanowi cz kluczy wspomagajcych" zbiorw encji, polczonych z E
zwizkiem typu wiele do jeden.
Nie tworzy si relacji , ktre odpowiadayby zwizkom typu wiele do jeden, czcych saby zbir encji z
innymi zbiorami eneji, jeli te zwizki oznacza si podwjnymi rombami", dostarczajcych kluczy do sabych
zbiorw encji.
*wiczenie 3.3.3. Nastpujce diagramy zwizkw encji naley przeksztaci do postaci relacyjnych
schematw baz danych.
a) Rysunek 2.28.
b) Odpowied do wiczenia 2.6.1.
c) Odpowied do wiczenia 2.6.4 (a). d) Odpowied do wiczenia 2.6.4(b).
sy i bro, ktre pochodz z pozostaych dwch nadklas. Schemat tej relacji zawiera zatem osiem atrybutw:
Kreskwka-Krymina
(tytu,
rok,
dugo,
typFilmu,
nazwaStudia,
nazwiskoGwiazdy, gosy, bro)
0
skopiowanie atrybutw oryginalnych zbiorw. Ale przecie jednoznaczna identyfikacja krotki wymaga
umieszczenia w kadej relacji kluczy zbiorw poczonych z ni przez zwizek isa. W rezultacie moe okaza
si, e dane o elementach niektrych podklas s umieszczane w rnych relacjach, ale to zjawisko wystpuje w
prawie kadym przypadku, poniewa kade przeksztacenie od postaci zwizkw encji do postaci relacyjnej
powoduje rozmieszczenie atrybutw encji i zwizkw pomidzy rne relacje.
Dla zwizku typu isa nie tworzy si osobnego zwizku. Jest on niejawnie zdefiniowany przez to, e w
powizanych encjach pojawiaj si te same wartoci klucza.
PRZYKAD 3.18
Sprbujmy rozpozna hierarchi zdefiniowan w modelu zwizkw encji, ktry zosta przedstawiony na rys.
3.22; jest to kopia rys. 2.23 i zawiera fragment diagramu zwizkw encji. Ten fragment diagramu mona
przeksztaci do nastpujcej postaci:
1. Relacja Filmy ( tytu, rok, dugo, typFilmu) . Byka ju opisana w przykadzie 3.10.
2. Relacja Kryminay (tytu, rok, bro) . Pierwsze dwa atrybuty tworz klucz dla wszystkich filmw, a ostatni
jest specyficzny dla odpowiadajcego tej relacji zbioru encji.
3. Relacja Kreskwki (tytu, rok). Ta relacja jest zbiorem kreskwek. Poza atrybutami klucza nie wystpuj w
niej adne inne atrybuty, ale pewne dane o kreskwkach szawarte w relacji Gosy.
4. Relacja Gosy (tytu, rck, nazwisko) stanowi odpowiednik zwizku Gosy, ktry obejmuje Gwiazdy i
Kreskwki. Atrybut nazwisko jest kluczem dla Gwiazd, a pierwsze dwa atrybuty s kluczem dla Kreskwek.
3.4. PRlEKSZTACANIE STRUKTUR PODKLAS DO POSTACI RELACJI I43
do Gwiazd
dugo ( tytu ~ (\ rok ~ ~ typFilmu
Filmy
Gosy
bro
Kreskwki
I(
Kreskwka -Krymina
ciu, jeli chcemy odszuka okrelony obiekt,.to trzeba przeszuka szereg relacji, zanim trafi si na waciw.
Jeeli na przykad chcemy odszuka czas trwania pewnego filmu, to korzystajc ze schematu z przykadu 3.17,
zanim znajdziemy waciwy film, musimy przeszuka cztery rne relacje, w ktrych umieszcza si filmy.
Przy przeksztacaniu diagramw encji natomiast trzeba dla danego obiektu w kadym zbiorze encji lub
zwizku, w ktrym pojawia si obiekt, powtrzy jego klucz. Takie powtrzenia s marnowaniem przestrzeni na
dysku. Ponadto ta metoda powoduje, e powstaje koniecznoci uzyskiwania danych o obiekcie z wielu relacji.
Taki przypadek pojawiby si w schemacie bazy danych z przykadu 3.18, gdybymy chcieli uzyska dane
jednoczenie o czasie trwania kryminau, jak i uytej tam broni.
Jeszcze inny sposb reprezentowania danych o strukturze hierarchicznej polega na zastosowaniu pustych
wartoci, ktre oznacza si NULL. Jeli w jakiej krotce wystpuje pusta warto pewnego atrybutu, to oznacza
to nieformalnie, e w tej krotce warto tego atrybutu nie moe zosta okrelona. Mimo e wartoci puste nie
wystpuj w tradycyjnym ujciu modelu relacyjnego, to s bardzo wygodne i odgrywaj znaczc rol w jzyku
zapyta SQL, o czym przekonamy si w podrozdziale 5.9.
Jeli jednak dopucimy stosowanie w krotkach wartoci NULL, to hierarchie klas mona przedstawi w
jednej relacji. Relacja taka ma wszystkie atrybuty, ktre dotycz waciwoci obiektw z dowolnej klasy w
hierarchii. Dziki temu jeden obiekt jest opisywany w jednej krotce. Atrybuty, ktre s spoza podklasy danego
obiektu, przyjmuj w krotce wartoci NULL.
PKZYKAD 3.19
Gdybymy zastosowali ten sposb do rozwizania problemu z przykadu 3.17, to otrzymalibymy jednrelacj,
o nastpujcym schemacie:
Film (tytu, rok, dugo, typFilmu, nazwaStudia, nazwiskoGwiazdy, gos,
bro)
Filmy takie jak na przykad Kto zabi krlika Rogera?, ktre s zarwno kreskwkami, jak i kryminaami,
byyby tu reprezentowane jako kilka krotek, w ktrych nie pojawia si warto pusta, bowiem dla kadego gosu
musiaaby istnie osobna krotka". Natomiast taki film jak Mala Syrenka, ktry jest
" W rzeczywistoci, poniewa w filmie o Krliku Rogerze wystpuj nie tylko gosy gwiazd, lecz
rwnie same gwiazdy, wic dla kadj pary (gwiazda, gos) musiaaby w relacji pojawi si odrbna
krotka. Film, ktry jest czyst kreskwk, miaby przypisan warto pust dla atrybutu
nazwisxocwiazdy, a gosy i inne dane byyby podane.
3,4. PRZEKSZTACANIE STRUKTUR PODKLAS DO POSTACI RELACJI I ~1S
kreskwk, ale nie jest kryminaem, miaby przypisan warto NULL do atrybutu bro. Film Orient Ekspres miaby
okrelon warto NULZa dla atrybutu gosy, podczas gdy dla Przemin~o z wiatrem warto NULL pojawiaby si zarwno
w polu atrybutu gos, jak i bro.
0
Zauwamy, e w wyniku zastosowania tego podejcia, tak samo jak w przypadku metody opisanej w p. 3.4.2, w jednej
relacji wystpujwszystkie krotki z wszystkich klas tworzcych hierarchi. Ponadto, podobnie jak przy uyciu sposobu
przedstawionego w p. 3.4.1, moemy wszystkie dane o obiekcie odnale w jednej relacji.
wiczenie 3.4.3. Naley utworzy relacyjne schematy bazy danych na podstawie opisw w jzyku ODL, ktre
powstay w nastpujcych wiczeniach:
*a) wiczenie 2.4.1, b) wiczenie 2.4.4.
wiczenie 3.4.4. Naley utworzy relacyjne schematy bazy danych na podstawie diagramw zwizkw encji,
ktre powstay w nastpujcych wiczeniach:
*a) wiczenie 2.4.3, b) wiczenie 2.4.4.
!wiczenie 3.4.5. Naley przeksztaci diagram zwizkw encji z rys. 3.25 do postaci relacyjnego schematu
bazy danych.
!wiczenie 3.4.6. Jak zmieniby si relacyjny schemat bazy danych z wiczenia 3.4.5, gdybymy go utworzyli
na podstawie definicji w jzyku ODL.
t~ i
r ,
iiiiii
iiii
U i i
tytu rok - dugo tytu rok --> typFilmu tytu rok -~ nazwaStudia
Poniewa te wszystkie trzy zalenoci maj te same atrybuty po lewej stronie, zatem moemy je skrtowo
zapisa w nastpujcy sposb:
tytu rok -- dugo typFilmu nazwaStudia
Powyszy zbir zalenoci funkcyjnych mona odczyta w nieformalny sposb nastpujco: jeli dwie
krotki maj takie same wartoci skkadowej tytu, a take takie same wartoci skadowej rok, to te dwie krotki
musz mie rwnie takie same wartoci skadowej dugo, takie same waaoci skadowej typFilmu oraz takie
same wartoci skadowej nazwastudia. Takie stwierdzenie nabiera sensu, gdy przypomnimy sobie projekt
pocztkowy, z ktrego utworzylimy schemat relacji Film. Atrybuty tytu i rok tworz klucz relacji. Dlatego te
mona si spodziewa, e przy konkretnym tytule i roku musi istnie jedna okrelona dugo filmu, jeden typ
filmu oraz jedyne studio, ktre ten film wyprodukowao.
Wnioski na temat schematu na podstawie zalenaci funkcyjnych Nie zapominajmy o tym, e zalenoci
funkcyjne, tak jak kade inne wizy, dotycz schematu bazy, a nie okrelonej instancji. Patrzc na jak instancj, nigdy nie moemy twierdzi, e na pewno istniej jakie zalenoci funkcyjne, albo e ich nie ma.
Patrzc na przykad na rys. 3.27, moglibymy wysnu wniosek, e wystpuje z aleno tytu --> typFilmu,
poniewa w kadej krotee akurat tej instancji relacji Film zachodzi to, e jeli dwie krotki majten sam tytui, to
zgadza si rwnie typFilmu.
Nie moemy jednak stwierdza na tej podstawie, e jest to zaleno funkcyjna w relacji Film. Gdyby na
przykad jaka instancja zawieraa krotki opisujce obie wersje King Konga, z ktrych jedna jest czarno-biaa, a
druga kolorowa, to nasze wczeniejsze stwierdzenie zostaoby obalone.
Jednake przy bliszej obserwacji wida, e zdanie
tytu rok -- nazwiskoGwiazdy
jest faszywe, nie okrela ono bowiem zalenoci funkcyjnej. Moglimy oczekiwa, e poniewa atrybuty tytu i
rok s kluczem dla filmw, to taka zaleno musi by prawdziwa. Jednak film nie ma jednoznacznie okrelone-
go zbioru gwiazd, ze wzgldu na sposb w jaki bya zdefiniowana klasa Film. Przy przeksztacaniu opisu w
jzyku ODL do postaci modelu relacyjnego trzeba byo dla kadego filmu utworzy szereg' krotek, po jednej dla
I S O 3. RELACY.INY MODEL DANYCH
kadej gwiazdy, ktra wystpia w tym filmie. Dlatego te, mimo e wszystkie krotki s zgodne dla pozostaych
atrybutw, to nie s zgodne w przypadku nazwiska gwiazdy.
0
wyprodukowane dwa rne filmy o takim sarnym tytule. Moe si take zdarzy, e w obu tych filmach wystpi
ten sam aktor, mimo e szczerze mwic nie potrafimy znale przykadu takiej sytuacji".
0
Czasami zdarza si, e w relacji mona wskaza wicej ni jeden klucz. W komercyjnych systemach baz
danych wybr klucza gwnego moe mie wpyw na implementacj, na przykad na sposb przechowywania
relacji na dysku.
Na czym polega funkcyjno zalenoci funkcyjnych? Zaleno AI, Az, ...,An --; B nazywa si
funkcyjn", poniewa w zasadzie istnieje funkcja, ktra dla danej listy wartoci atrybutw A,, A2, ..., A
wyznacza dokadnie jedn (lub nie okrela adnej) warto atrybutu B. Dla relacji R moemy na przykad
okreli funkcj, ktra napisowi Gwiezdne wojny" oraz liczbie cakowitej 1977 przypisuje dokadnie jedn
warto dugoci, w tym przypadku liczb 124, ktra wystpuje w relacji Film. Nie moemy jedvak utosamia
takich funkcji z matematycznym pojciem funkcji, poniewa tutaj nie istniej reguy przyporzdkowywania
wartoci argumentom. Nie moemy na przykad okreli cigu operacji, ktrych przetworzenie spowodowaoby
nadanie parze zoonej z napisu Gwiezdne wojny" oraz liczby 1977, waciwej dugoci. Wartoci funkcji s w
tym przypadku okrelane w wyniku przeszukiwania relacji. Poszukujemy krotki o podanych wartociach tytu i
rok i w tej krotce odczytujemy warto skadowej dugo.
3.5.3. Nadklucze
Zbir atrybutw, ktry zawiera klucz nazywa si uadkluczem, co jest skrtem od pojcia nadzbioru
klucza". A wic kady klucz jest rwnie nadkluczem. Jednake istniej nadklucze, ktre same nie s kluczami
(minimalnymi). Zauwamy, e kady nadklucz spenia pierwszy warunek bycia kluczem, wszystkie atrybuty
relacji s bowiem od niego zalene funkcyjnie. Jednake najczciej nadklucz nie spenia warunku
minimalnoci.
PRZYKAD 3.22
W relacji z przykadu 3.21 mona okreli wiele nadkluczy. Nie tylko sam klucz
' Przypomnijmy, e zalenoci funkcyjne wynikj z moliwych do przyjcia zaoe lub uzgodnie
dotyczcych danych. Nie istnieje aden autorytet zewntrzny, ktry mgby rozstrzygn z absolutn
pewnoci, czy dana zaleno funkcyjna zachodzi, czy te nie. Std te naley przyjmowa takie zaoenia,
ktre wydjsi njbardziej odpowiednie.
152
{tytu, rok, nazwiskoGwiazdy}
3. RELACYJNY MODEL DANYCI
0
Rozwamy w kocu zwizki wieloargumentowe. Poniewa nie mona w tym przypadku opisa wszystkich
zalenoci strzakami wychodzcymi ze zwizku, zatem trzeba si pogodzi z tym, ze wystpi takie sytuacje,
gdy nie
1 S4 3. RELACYJNY MODEL DANYCH
bdzie oczywiste, co jest kluczem relacji bez wnikania w to, ktre zbiory encji sfunkcyjnie zalene od innych
zbiorw encji. Moemy tylko zapewni, e:
Jeli ze zwizku wieloargumentowego R wychodzi strzaka w kierunku zbioru encji E, to dla odpowiadajcej
relacji istnieje co najmniej jeden klucz, ktry eliminuje klucz E.
Inne notacje zalenoci funkcyjnych
Wyznajemy pogld, e po lewej stronie zalenoci funkcyjnej moe wystpowa wiele atrybutw, natomiast po
prawej wystpuje dokadnie jeden. Ponadto ten atrybut, ktry wystpuje po prawej stronie zalenoci nie moe
pojawia si po lewej stronie tej samej zalenoci. Jednake dopuszczamy skrtowy zapis dla kilku zalenoci,
ktre maj takie same atrybuty z lewej strony, w postaci jednej zalenoci z praw stron otrzyman z
poczenia wszystkich prawych stron zalenoci wejciowych. Czasami rwnie bywa wygodnie dopuci
zalenoci trywialne", w ktrych praw stron stanowi jeden z atrybutw lewej strony.
W innych opracowaniach jest prezentowany pogld, e zarwno prawa, jak i lewa strona zalenoci
funkcyjnej jest zbiorem atrybutw, a te same atrybuty mog wystpowa po obu stronach jednoczenie. Midzy
tymi dwoma pogldami nie ma zbyt duej rnicy, ale w naszych rozwaaniach bdziemy utrzymywa zasad,
e aden atrybut nie pojawia si jednoczenie po obu stronach zalenoci funkcyjnej, chyba e wyranie to
zostanie stwierdzone.
Problem pojawia si wwczas, gdy zwizek R z C do klasy D jest wielowartociowy. Jeli w kierunku
odwrotnym zwizek odwrotny do R jest jednowartociowy (zwizek R jest typu jeden do wiele), to moemy
zwizek R reprezentowa wycznie przez jego odwrotno w relacji powstajcej dla klasy D; bya o tym mowa
w ramce pt. Reprezentowanie zwizkw w jednym kierunku" w p. 3.2.7. Odwrotno zwizku R nie stwarza
problemu, poniewa w klasie D jest on jednowartociowy.
Ale zamy, e zwizek R jest typu wiele do wiele, a wiec w obu kierunkach midzy klasami C a D
zwizek ten jest wielowartociowy. Wwczas moe si zdarzy, ze w relacji tworzonej dla klasy C wystpi
wiele krotek reprezentujcych pojedynczy obiekt klasy C. A zatem klucz klasy C nie bdzie mg by kluczem
w odpowiadajcej klasie C relacji. Aby otrzyma klucz relacji odpowiadajcej klasie C, trzeba bdzie poczy
klucze klas C i D.
PRZYKAD 3.25
W przykadzie 3.7, tworzc relacj odpowiadajc klasie ODL Film, do atrybutw relacji Film do-lczylimy:
1. Klucz nazwastudia z klasy studio, z ktr klasa Film jest poczona zwizkiem jednowartociowym naleyDo
oraz
2. Klucz nazwiskoGwiazdy z klasy Gwiazda (z ktr klasa Film jest objta zwizkiem wielowartociowym
gwiazdy).
Pierwszy z nich pochodzi z jednowartociowego zwizku, a zatem nie ma wpywu na klucz relacji Film.
Jednake drugi z nich, poniewa pochodzi ze zwizku wielowartociowego, musi zosta doczony do zbioru
atrybutw klucza relacji Film, ktry przyjmuje nastpujcposta:
{tytu, rok, nazwiskoGwiazdy}.
Analiza przykadu relacji Film z rys. 3.13 stanowi potwierdzenie tego, e same atrybuty tytu i rok nie stanowi
klucza relacji Film, ale doczenie do tego zbioru atrybutu nazwiskoGwiazdy ju wystarczy do okrelenia
klucza.
0
Mwic oglniej: jeli w relacji dla klasy C trzeba reprezentowa kilka zwizkw wielowartociowych z
C, to wszystkie klucze klas, uczestniczcych w tych zwizkach wraz z klas C, trzeba doczy do pierwotnego
klucza klasy C i dopiero wwczas powstaje klucz relacji C. Jeli kilka zwizkw wielowartociowych czy
klas C z tsama klasD, to w relacji C pojawiaj si rne atrybuty reprezentujce klucz klasy D w rnych
zwizkach C i D.
Czsto zdarza si, e trzeba poprawia projekt relacji, otrzymany w wyniku postpowania zgodnego z
procedur tworzenia relacji, ktr opisano w podrozdziale 3.2, poniewa klucz klasy z ODL moe paradoksalnie
nie by
J S6 3. REI,ACY.INY MODEL DANYCH
wystarczajcy dla relacji odpowiadajcej tej klasie. Sposb postpowania w takich przypadkach zostanie przedstawiony w
podrozdziale 3,7. Okae si wwczas, e zwizek typu wiele do wiele mona rozoy midzy klasy, ktre w nim
uczestnicz. Wynikowy zbir schematw relacji jest bardzo podobny do schematw, ktre uzyskujemy bezporednio z
przeksztace diagramw zwizkw encji".
dania przykadw krotek, mona okreli pewne warunki, ktre musz by spenione w relacji. Moliwo
okrelenia takich warunkw jest niezbdna przy projektowaniu dobrego schematu dla relacji, co zamierzamy
omwi w podrozdziale 3.7.
PRZYKAD 3.26
Jeli wiadomo, e w relacji R z atrybutami A, B i C zachodz zwizki funkcyjne A -- B 1 B -~ C, to atwo jest
wyprowadzi wniosek, e zachodzi rwnie zaleno funkcyjna A --~ C. W jaki sposb uzasadni taki
wniosek? eby udowodni, e zachodzi zaleno A -- C musimy zanalizowa dwie krotki z R, ktre s zgodne
dla A, i uzasadni, e musz by wwczas zgodne dla C.
Zamy, e nasze dwie krotki zgodne dla A maj posta (a, bl, c,) oraz (a, b2, cZ). Przyjlimy, e
porzdek atrybutw w R okrelono jako A, B, C. Poniewa speniona jest zaleno A - B, a nasze krotki s
zgodne dla A, wic musz by rwnie zgodne dla B, Oznacza to, e b~ = bz, a wic posta naszych krotek w
rzeczywistoci jest nastpujca: (a, b, c~) i (a, b, ez), gdzie b jest rwne b~ i bz. Z kolei poniewa R spenia
take zaleno B -~ C, wic jeli krotki szgodne dla B, to srwnie zgodne dla C. A zatem c~ = cz, czyli
nasze krotki s zgodne dla C. W ten sposb wykazalimy, e kade dwie krotki relacji R, ktre s zgodne dla A,
s rwnie zgodne dla C, a zatem zachodzi zaleno funkcyjna A -- C.
0
Jeli zalenoci funkcyjne mona okreli na rne sposoby i nie ma to wpywu na instancje relacji, to
takie zalenoci nazywamy rwnowahyn~i. Jeszcze oglniejsza wkaciwo polega na tym, e zbir zalenoci
funkcyjnych S wynika ze zbioru zalenoci funkcyjnych. To oznacza, e jeli z faktu, i dowolna instancja
relacji R spenia wszystkie zalenoci w T, wynika, e spenia take wszystkie zalenoci w S. Zauwamy, e
zbiory zalenoci funkcyjnych S i T s rwnowane wtedy i tylko wtedy, kiedy z S wynika T i jednoczenie z T
wynika S.
Poznamy teraz kilka uytecznych zasad dotyczcych zalenoci funkcyjnych. Zasady te, mwic
najoglniej, pozwalaj na zastpowanie zbioru zalenoci fiu~kcyjnych zbiorami rwnowanymi lub ua
doczanie do zbioru tych zalenoci, ktre wynikaj ze zbioru pocztkowego. Widzielimy ju przykad 3.26 z
regule przechodnioci (tra~rsitive rule), ktra umoliwia przejcie przez acuch zalenoci. Poznamy take
algorytm, ktry umoliwia udzielenie odpowiedzi na pytanie o to, czy jaka zaleno funkcyjna wynika z
jednej lub wicej zalenoci.
Kada zaleno trywialna zachodzi w kadej relacji, poniewa jej tre sprowadza si do stwierdzenia, e
,jeli dwie krotki s zgodne dla wszystkich A~, Az, ..., An, to s zgodne dla pewnego z nich". A zatem moemy
korzysta z dowolnej zalenoci trywialnej, bez potrzeby udowadniania jej w konkretnych przypadkach danych.
W pocztkowej denicji zalenoci funkcyjnej nie dopuszczalimy przypadku zalenoci trywialnych.
Jednake nie ma przeszkd, aby je wprowadzi, szczeglnie e s we wszystkich przypadkach spenione, a z
kolei czsto upraszczaj ustalenie regu.
Jeli dopucimy stosowanie zalenoci trywialnych, to take dopucimy w skrtowych zapisach
wystpowanie tych samych atrybutw po lewej i po prawej stronie. Mwimy, e zalenoA~ AZ ... A -~
B,B, ... B,jest:
Trywialna, jeli zbir zoony z atrybutw typu B jest podzbiorem zbioru atrybutw typu A.
Nietrywialna, jeli co najmniej jeden z atrybutw typu B znajduje si pord atrybutw typu A.
Calkowicie nietrywialna, jeli aden z atrybutw typu B nie znajduje si pord atrybutw typu A.
A zatem zaleno:
tytu rok --> rok dugo
jest nietrywialna, ale nie jest cakowicie nietrywialna. Po usuniciu atrybutu rok z prawej strony otrzymamy
zaleno cakowicie nietrywialn.
I6O 3. RELACYJNY MODEL DANYCi
Atrybuty, ktre wystpuj rwnoczenie z prawej i lewej strony, zawsze mona pomin po prawej stronie.
Prawdziwe jest zatem stwierdzenie nastpujce:
Zaleno funkcyjna A,Az ... A --~ B,BZ ... B, jest rwnowana zalenoci A~A~ ... A - C~CZ ...
Ck, gdzie C s tymi elementami z B, ktre nie s rwne A.
Regu t, ktra zostaa zilustrowana na rys. 3.28, nazywamy regulct zalenoci trywialnych.
i i i~ C ~ i
~~.- A i i i i i i i i i i t
iiiiiii
iiiiiiiiiiiiii
iiiiiii
gdzie B,, Bz, ..., B, nale do zbioru X , a C nie naley. Wwczas doczamy C do zbioru X.
3. Powtarzamy krok 2 tak dugo, jak dugo nie bdzie mona doczy do X adnego nowego atrybutu.
Poniewa zbir X w ten sposb moe si tylko rozszerza, a z kolei liczba atrybutw kadej relacji jest z
zaoenia skoczona, zatem nastpi taki moment, e niczego wicej nie da si doczy do zbioru X.
4. Jeli ju adnego atrybutu nie mona doczy do zbioru X, to znaczy, e jest on wartoci {A,,
Az, ..., A}+.
162 3. RELACYJNY MODEL DANYCH
PRZYKAD 3.28
Rozwamy relacj z atrybutami: A, B, C, D, E, F. Zamy, e w tej relacji zachodz zalenoci AB --> C, BC
-> AD, D --~ E oraz CF --~ B. Co jest domkniciem zbioru {A, B}, czyli {A, B}+?
Zaczniemy od X= {A, B}. Po pierwsze zauwaamy, e wszystkie atrybuty lewej strony zalenoci
funkcyjnej AB --> C s w X, a wic do X moemy doczy atrybut C, ktry wystpuje po prawej stronie tej
zalenoci. Zatem po pierwszej iteracji kroku 2 zbir X przyjmuje posta {A, B, C}. Potem stwierdzamy, e lewa
strona zalenoci BC -> AD jest ju zawarta w X, a wic do zbioru X mona doczy atrybuty A oraz D ~. A
ju znajduje si w X, lecz D nie, wic nastpny stan X zapisujemy jako {A, B, C, D} . W tym miejscu moemy
zastosowa zaleno D --> E i w ten sposb doczy do X atrybut E. Wicej zmian w X nie mona zrobi. Nie
moemy zastosowa zalenoci CF--~ B, poniewa jej lewa strona nigdy nie znajdzie si wX. Zatem {A, B}+=
{A, B, C, D, E}.
0
Jeli potrafimy obliczy domknicie dowolnego zbioru atrybutw, to moemy
sprawdzi, czy dana zaleno funkcyjna A,Az ... A -- B wynika ze zbioru zalenoci S.
Najpierw obliczamy {A~Az ... A}+ dla zbioru zalenoci S. Jeli B naley do {A,,Az, ...,
A}+, to oznacza e
A~Az...A--B
wynika z S, jeli natomiast B nie naley do {A~, Az, ..., A}+, to znaczy, e ta zaleno
nie wynika z S. Mona testowa uoglnion zaleno, ktra po prawej stronie ma zbir
atrybutw, jeli pamita si o tym, e jest to zapis skrtowy zbioru zalenoci. Zatem
zaleno A,Az ... A -~ B,Bz ... Bm wynika ze zbioru zalenoci S wtedy i tylko wtedy,
kiedy wszystkie atrybuty B B B nale do {A A . A }+.
~, z~ ..., nt n z~ .~ > >,
PRZYKAD 3.29
Rozwamy relacje i zalenoci funkcjonalne, ktre okrelono w przykadzie 3.28. Chcemy sprawdzi, czy z
tego zbioru zalenoci wynika zaleno AB --> D. Z przykadu wynika, e zbir {A, B, C, D, E} jest
dopenieniem {A, B}+. Poniewa element D jest elementem dopenienia, wic zaleno AB --> D wynika ze
zbioru zalenoci.
A teraz rozwamy zaleno D --> A. Chcemy sprawdzi, czy ta zaleno wynika ze zbioru zalenoci. W
tym celu najpierw obliczymy {D}+. Zaczniemy od X= {D}. Na podstawie zalenoci D --; E do zbioru X mona
doczy element E. Ale to ju koniec. Nie mona ju znale adnej zaleno
Przyjmijmy, e zapis BC -- AD jest skrtem zapisu pary zalenoci BC ~ A oraz BC --~ D. Mona te
zalenoci rozpatrzy osobno.
3.6. REGUY DOTYCZCE ZALENOCI FUNKCYJNYCH 163
ci, ktra po lewej stronie miaaby ktry z elementw E lub D, a zatem {D}+= {D, E}. Poniewa atrybut A nie
jest elementem zbioru {D, E}, wic wnioskujemy, e D -~ A nie wynika ze zbioru zalenoci.
0
Algorytm domkni - dlaczego to dziala?
Algorytm obliczania domkni ma sens z bardzo prostego powodu. Stosujc indukcj ze wzgldu na liczb
krokw drugiego punktu algorytmu, wykaemy, e dla kadego atrybutu D ze zbioru X zachodzi zaleno
AIAZ ... A --~ D (gdy D jest rwne ktremu z atrybutw typu A, zaleno jest trywialna). A zatem
wykaemy, e jeli pewna relacja R spenia zalenoci ze zbioru S, to spenia rwnie zaleno A~Az ... An -->
D.
Na pocztku przyjmujemy, e liczba krokw wynosi 0. Wwczas D musi by rwne ktremu z
elementw AI, A2, ..., A, a to znaczy, e A -- D zachodzi w kadej relacji, bowiem jest to zaleno trywialna.
Zamy teraz, e element D zosta doczony do domknicia w wyniku zastosowania zalenoci BIBZ ...
B, --> D. Z zaoenia indukcyjnego wiemy, e R spenia wszystkie zalenoci postaci AIAZ ... A --~ B; dla
wszystkich i = 1, 2, ..., m. Inaczej mwic: jeli dwie krotki R s zgodne dla atrybutw AI, AZ, ..., A, to s
zgodne rwnie dla BI, B2, ..., B,. Poniewa relacja R spenia zaleno B1B~ ... Bm -~ D, wic te dwie krotki
s rwnie zgodne dla D. A zatem R spenia zaleno AIAZ ... A --; D.
Powyszy dowd wiadczy, e algorytm jest poprawny, tzn. e jeli umiecimy w wyniku jego dziaania
atrybut D w domkniciu {A,, AZ, ..., AN}+, to na pewno zaleno AIAz ... A --> D jest prawdziwa. Nie wykazalimy jedynie twierdzenia odwrotnego o kompletnoci algorytmu, tzn. e jeli zachodzi zaleno AIAZ ...
A --> D, to atrybut D na pewno znajdzie si w {A ~, A2, ..., A}+. Nasza ksika jednak nie obejmie tego
dowodu.
Zaleno funkcyjna A~AZ ... An -- B1B2 ... B, wiadczy o tym, e wszystkie atrybuty B~, BZ, ..., B,
nale do zbioru {A,, AZ, ..., A}+. Stosujc zaleno B~BZ ... Bm -- ClC2 ... Ck, mamy wic prawo doczy
rwnie atrybuty Cl, CZ, ..., Ck do zbioru {A~, A2, ..., A}+. Poniewa wszystkie elementy C,Cz ... Ck znalazy
si w ten sposb w zbiorze {A~, AZ, ..., A}+, wic moemy wysnu wniosek, e zaleno
A,Az ... A ~ C,CZ ... Ck
jest speniona we wszystkich relacjach, ktre speniaj jednoczenie zalenoci AiA2 ... A -~ B~BZ ...
B, oraz B~BZ ... B, -- C~CZ ... Ck.
Domknicia i klucze
Zauwamy, e zbir {A,, A2, ..., A}+zawiera wszystkie atrybuty relacji R wtedy i tylko wtedy, gdy elementy A
~, Az, ..., A s nadkluczem w R. Bowiem tylko wtedy wszystkie atrybuty s zalene funkcyjnie od zbioru A,,
AZ, ..., A. A zatem stwierdzenie, czy atrybuty A~, Az, ..., An stanowi klucz relacji, moe polega na
sprawdzeniu po pierwsze, czy wszystkie atrybuty R nale do zbioru {A1, A2, ..., A}+, a potem czy S"
otrzymane z dowolnego S, ktry tworzymy przez usunicie choby jednego elementu spord A,, Az, ..., A, nie
zawiera wszystkich atrybutw R.
PRZYKAD 3.30
Rozwamy relacj Film z rys. 3.12, ktra powstaa w p. 3.2.4 z czterech atrybutw klasy oraz zwizku
naleyDo z klas studio. Poniej przedstawiamy relacj i przykad danych:
tul
rok
du
Gwiezdne wojny
1977
124
Potne Kaczory
1991
104
wiat Wayne'a
1992
95
nazwaStudia
kolor Fox kolor Disney kolor Paramount
Przypumy, e pewne dane o studiu producenta filmu chcemy przechowywa w tej samej relacji. Dla
uproszczenia doczymy tylko nazw miasta, ktra bdzie reprezentowa adres studia. Wwczas relacja moe
wyglda nastpujco:
tul
rok
dlu o
Filmu nazwaStudia adresS'tudia
Gwiezdne wojny
1977 124
kolor
Fox
Hollywood
Potne Kaczory
1991 104
kolor
Disney
Buena Vista
wiat Wayne'a
1992 95
kolor
Paramount
Hollywood
3.6. REGUY DOTYCZCE ZALENOSCI FUNKCYJNYCH I 6S
Z powyszych rozwaa wynika, e zbir zalenoci mona rozszerzy o nowe zalenoci zarwno
trywialne, jak i nietrywialne. W nastpnych rozdziaach chcemy rozrnia zalenoci dane, ktre wynikaj
bezporednio z definicji relacji, od zalenoci wyprowadzonych z tego oryginalnego zbioru, przez zastosowanie
jednej z opisanych powyej regu lub przez przetworzenie algorytmu domknicia zbioru atrybutw.
Czasami moe si zdarzy, e istnieje wybr zalenoci, ktrych uywa si do reprezentowania penego
zbioru zalenoci relacji. Kady zbir zalenoci relacji, z ktrego mona wyprowadzi wszystkie inne
zalenoci tej relacji, nazywa si baz tej relacji. Jeli skada si tak, e aden z podzbiorw bazy nie umoliwia
wyprowadzenia wszystkich zalenoci, to taka baza nazywa si mininaalnc~.
PRZYKAD 3.31
Rozwamy relacj R(A, B, C), w ktrej kady atrybut zaley funkcyjnie od pozostaych dwch atrybutw. Peny
zbir zalenoci zawiera zatem sze zalenoci z jednym atrybutem po lewej stronie i jednym po prawej: A -->
B, A -~ C, B - A, B --~ C, C --~ A, C --~ B. W tym zbiorze znajduj si take trzy zalenoci nietrywialne: AB
--> C, AC -~ B oraz BC --~ A. Skrty par zalenoci takie jak A --~ BC oraz trywialne zalenoci postaci A --~
A oraz nie cakiem trywialne AB - BC mona take doczy do tego zbioru (mimo e nasza cisa definicja
zalenoci funkcyjnych nie wymaga doczania zalenoci trywialnych, czciowo trywialnych ani takich z
kilkoma atrybutami po prawej stronie).
166
3. RELACYJNY MODEL DANYCH
!wiczenie 3.6.9. Naley znale minimalne bazy dla zalenoci i relacji okrelonych w przykadzie 3.31.
!!wiczenie 3.6.10. Wykaza, e jeli pewna zaleno funkcyjna F wynika z okrelonego zbioru zalenoci, to
F mona wyprowadzi z tego zbioru, korzystajc z aksjomatw Armstronga (zdefiniowano je w ramce w p.
3.6.5). Wskazwka: naley zanalizowa algorytm obliczania domknicia zbioru atrybutw i wskaza, w jaki
sposb kady krok algorytmu jest rwnowany z wyprowadzeniem zalenoci funkcyjnej przez zastosowanie
ktrego z aksjomatw Armstronga.
W biecym podrozdziale rozwiemy problem projektowania dobrego relacyjnego schematu bazy danych
i przedstawimy ten proces w podziale na nastpujce etapy:
1. Najpierw szczegowo opiszemy problemy, ktre wynikaj przy tworzeniu schematu.
2. Nastpnie przedstawimy metod dekompozycji, ktra polega na podziale schematu relacji (zbioru atrybutw)
na dwa mniejsze schematy.
3. Potem opiszemy posta normalna Boyce'a-Codda", inaczej BCNF", czyli taki warunek naoony na
schemat, dziki ktremu mona wyeliminowa jego niedoskonaoci.
4. Poczymy potem te elementy i wytumaczymy, w jaki sposb zapewni spenienie warunkw BCNF przez
dekompozycj schematw relacyjnych.
3.7.1. Anomalie
Takie problemy jak redundancja, ktre powstaj, gdy prbujemy do pojedynczej relacji wczy zbyt wiele
danych, s nazywane anomaliami. Poniej wyliczamy podstawowe rodzaje anomalii:
1. Redundancja (redudancy). Dane niepotrzebnie powtarzaj si w kilku krotkach. Jako przykad moe suy
dugo i typ filmu zdefiniowane na rys. 3.30.
2. Anomalie modyfikacji (update anomalies). Moe si zdarzy, e warto danej zostanie zmodyfikowana w
pewnej krotce, a w innej nie. Na przykad w pewnym momencie okae si , e Gwiezdne Wojny trwaj
naprawd 125 minut i beztrosko zmieniamy warto tego atrybutu w pierwszej krotce na rys. 3.30, ale druga
i trzecia krotka pozostaj bez zmian. Co prawda mona by si kci, e nikt nie powinien zachowywa si
tak beztrosko. Jednak przekonamy si, e mona takich sytuacji unikn dziki zmianom schematu relacji
Film.
3. Anomalie usun (deletion anomalies). W przypadku gdy dla pewnego atrybutu zaczyna obowizywa
warto pusta, to jako efekt uboczny moe si zdarzy utrata czci danych. Jeli na przykad ze zbioru
gwiazd filmu Potne Kaczory usuniemy nazwisko Emilio Estevez, to w bazie nie bdzie ju adnych
danych o gwiazdach tego filmu. Z relacji Film zniknie wwczas ostatnia krotka zawierajca dane o filmie
Potne KaczoYy, a wraz z ni informacje o tym, e film trwa 95 minut oraz e jest kolorowy.
170
W czwartej krotce wartoci tych piciu atrybutw s inne, a krotki pita i szsta maj jednakowe
wartoci tych piciu atrybutw. Relacj Filml przedstawiono na rys. 3.3 I .
tytul rok Gwiezdne Wojny 1977 Potne Kaczory 1991 wiat Wayne'a 1992
dugo
typFilmu
124
kolor
104
kolor
95
kolor
nazwaStudia
Fox Disney Paramount
RYSUNEK 3.31 Relacja Filml
A teraz rozwamy rzut danych z rys. 3.30 do schematu relacji Film2. Kada z szeciu krotek rni si albo
wartoci atrybutu tytu, albo atrybutu rok, albo nazwiskoGwiazdy, a zatem otrzymujemy w wyniku relacj
przedstawion na rys. 3.32.
tytul I rok I nazwiskoGwiazdy
Gwiezdne Wojny 1977 Gwiezdne Wojny 1977 Gwiezdne Wojny 1977 Potne Kaczory
1991 wiat Wayne'a 1992 wiat Wayne'a 1992
Carrie Fisher Mark Hamill Harrison Ford Emilio Estevez Dana Carvey Mike
Meyers
RYSUNEK 3.32 Relacja Film2
O
a w innych krotkach Gwiezdnych woj en - nie, wystpi anomalia modyfikacji. Ot zaoenia, dotyczce
zalenoci funkcyjnych, nie zabraniaj wystpienia filmu o takiej samej nazwie i innym roku produkcji, czyli
innych Gwiezdnych Wojen, wyprodukowanych na przykad w 1997 roku z Carrie Fisher w charakterze gwiazdy.
A zatem nie naley wprowadza mechanizmw uniemoliwiajcych tego typu modyfikacji, a dodatkowo, taka
zmiana wcale nie musi by bdem.
PRZYKAD 3.33
Relacja Film z rys. 3.30 nie jest w postaci BCNF. Aby uzasadni to stwierdzenie, najpierw wyodrbnimy zbir
atrybutw tworzcych klucz. W przykadzie 3.21 podalimy powody tego, e zbir (tytu, rok, nazwiskoGwiazdy) stanowi klucz. A zatem kady zbir zawierajcy wymienione trzy atrybuty jest nadkluczem. Te same
argumenty, ktrych uylimy w przykadzie 3.21, mog posuy do uzasadnienie tego, e aden zbir, ktry nie
zawiera wszystkich trzech atrybutw , nie moe by nadkluczem. Std wynika wic, e atrybuty (tytu, rok,
nazwiskoGwiazdy} s jedynym kluczem relacji Film.
Ale rozwamy z kolei zaleno funkcyjn: