Professional Documents
Culture Documents
Rozdzial 3
Rozdzial 3
Rozdzial 3
na rys. 3.2. Warto przypomnie sobie, e nie bya to ostateczna wersja definicji klasy Film i obejmowaa tylko
atrybuty tytu, rok, dugo i typFilmu.
tytu rok Gwiezdne Wojny 1977 Potne Kaczory 1991 wiat Wayne'a 1992
cllugo
typFihrau
124
kolor
104
kolor
95
kolor
RYSUNEK 3.1 Relacja Film
1) interface Film{
2) attribute string tytu; 3) attribute integer rok;
4) attribute integer dugo;
5) attribute enumeration (kolor, czarno-biay) typFilmu;
};
RYSUNEK 3.2
Opis klasy Film w jzyku ODL
3.1.1. Atrybuty
W nagwku relacji s podane atrybuty. Na rysunku 3.1 atrybutami s: tytu, rok, dugo i typFilmu.
Atrybuty relacji su do nazywania kolumn relacji. Na og atrybuty oddaj znaczenie danych umieszczanych
w kolumnach pod nimi. Na przykad w kolumnie z atrybutem dugo umieszcza si czas trwania (czyli
dugo) poszczeglnych filmw.
Zauwamy, e atrybuty relacji Film z rys. 3.1 odpowiadaj elementom struktury danych definicji ODL z
rys. 2.4, nazywanym tam rwnie atrybutami. Taki sposb dobierania atrybutw relacji jest do powszechny.
Jednak to, e atrybuty relacji maj jakie odpowiedniki w skadnikach modelu encji lub obiektowym modelu
opisu danych, nie musi by obowizujca regu.
3.1.2. Schematy
Nazwa relacji oraz jej zbir atrybutw nazywaj si schematem relacji. Schemat relacji
zapisujemy za pomoc jej nazwy, po ktrej wystpuje lista atrybutw ujta w nawiasy okrge.
Schemat relacji Film z rys. 3.l jest nastpujcy:
Film (tytu, rok, dugo, typFilmu)
I Z 2 3. RELACYJNY MODEL DANYCH
Mimo e atrybuty schematu relacji nie stanowi listy, bowiem s zbiorem, to aby mc opowiada o
relacji, czsto trzeba okreli standardowy" porzdek atrybutw. Std te, jeli gdziekolwiek
wprowadzimy schemat relacji w powyszej postaci, z list atrybutw, to porzdek na licie bdziemy
traktowa wico i przestrzega go wszdzie tam, gdzie trzeba bdzie rysowa relacje lub jej
wiersze.
W modelu relacyjnym projekt skada si z jednego lub kilku schematw relacji. Zbir schematw relacji
projektu jest okrelany schematem relacyjnym bazy danych lub po prostu schematem bazy danych.
3.1.3. Krotki
Wiersze relacji, poza wierszem nagwka, zawierajcym atrybuty relacji, s nazywane knotkami. W krotce
kady atrybut ma swj odpowiednik w postaci skadowej knotki. Na przykad pierwsza z trzech knotek z rys.
3.1 ma cztery skladowe: Gwiezdne Wojny, 1977, 124 oraz kolor, ktre s koljnymi wartociami atrybutw:
tytu, rok, dugo oraz typFilmu. Jeli przedstawiamy wyodrbnion krotk, a nie wskazujemy wiersza relacji,
to jej skadowe oddzielamy przecinkami, a sam krotk ujmujemy w nawiasy. Na przykad:
(Gwiezdne Wojny, 1977, 124, kolor)
jest pierwsz krotk z rys. 3.1. Zauwamy, e jeli knotka wystpuje osobno, nie w tabeli, to nie ma
opisanych atrybutw, zatem trzeba mie jak dodatkow wskazwk, aby okreli, o ktr relacj
chodzi. Dlatego bdziemy stosowa ten sam porzdek wartoci, w ktrym definiuje si atrybuty w
schemacie relacji.
Czsto traktuje si knotki tak jak obiekty, a relacje, tak jakby byy klasami tych obiektw. Na pewno tak
si dzieje z nasz przykadow relacj filmw, kada knotka reprezentuje obiekt typu film. Skadowe knotek i
waciwoci obiektw z klasy opisanej na rys. 3.2 s identyczne. Jednak trzeba sobie zdawa spraw, e obiekty
maj tosamo, a knotki nie. Oznacza to, e w reprezentacji obiektowej filmw mog wystpi dwa obiekty o
takich samych wartociach wszystkich atrybutw, aczkolwiek, jak ju wspomnielimy w przykadzie 2.23, taki
przypadek wrd filmw nie powinien si zdarzy.
Relacje natomiast s zbiorami knotek, a zatem jedna knotka nie moe wystpi w danej relacji wicej ni
jeden raz. Jeli wic relacja suy do przedstawienia obiektw pewnej klasy, to trzeba si upewni, e ma
dostatecznie szeroko okrelony zbir atrybutw, po to by adne dwa obiekty nie miay tych samych wartoci
atrybutw relacji. W przykkadzie 2.23 stwierdzilimy, e nie moe si zdarzy, aby dwa rne filmy miay
identyczny tytu i rok produkcj i. Jednak w najgorszym przypadku moe okaza si potrzebne utworzenie
3.1. PODSTAWY MODELI RELACYJNYCFf I I 3
sztucznego atrybutu, ktry stanowiby o identyfikacji obiektu. Na przykad kademu filmowi mona by
nadawa jednoznaczny numer IdFilmu" oraz doda zdFilmu do zbioru atrybutw naszej przykadowej relacji.
3.1.4. Dziedziny
W modelu relacyjnym kada skadowa kadej relacji musi mie okrelony typ atomowy, tzn. jej typ musi
nalee do typw elementarnych, np. musi by to typ cakowity lub znakowy. Warto atrybutu nie moe by
ani rekordem, ani list, ani tablic, ani zbiorem, ani adn inn struktur, ktr mona podzieli na niniejsze
czci. Wanie to wymaganie sprawia, e atrybuty z notacji ODL nie mog by automatycznie przekadane na
pojedyncze atrybuty relacji. Jeli na przykad atrybut nazwisko w ODL zapisuje si jako struktur:
Struct nazwisko {string pierwsze, string drugie}
to w odpowiadajcej relacji musz zosta uwzgldnione osobno dwa atrybuty: pierwsze i drugie. Obszerniejsze
omwienie tego zagadnienia znajduje si w p. 3.2.2.
Zakada si, e z kadym atrybutem relacji jest powizana dziedzina, czyli pewien okrelony typ
elementarny. Kada skadowa kadej krotki w relacji ma warto, ktra naley do dziedziny odpowiedniej
kolumny. Na przykad w krotkach relacji Film z rys. 3.1 pierwsza skadowa musi mie warto typu string,
druga i trzecia - typu integer, a czwarta musi mie okrelonjednzdwch wartoci: Kolor lub czarno-biay.
1991
Pot~ne Kaczory
1992
wiat Wayne'a
1997
Gwiezdne Wojny
RYSUNEK 3,3
Inny ukad relacji Film
kolor
kolor
kolor
dlugo 104
94 124
Jako przykkad na rys. 3.3 zostaa przedstawiona jedna z wielu relacji, ktre mona otrzyma w wyniku
permutacji wierszy i kolumn na rys. 3.1. Obie relacje mona traktowa jako t sam". A mwic cilej, te
dwie tabele s rnymi obrazami tej samej relacji.
Wynik permutowania atrybutw i kolumn musi by widoczny rwnie w krotkach przedstawianych
osobno, poza tabel.
PRZYKAD 3.1 Krotka
(Gwiezdne Wojny, 1977, 124, kolor)
z rys. 3. I oraz krotka
(1977, Gwiezdne wojny, kolor, 124)
z rys, 3.3 prezentuj ten sam obiekt. Ale tej rwnowanoci jestemy wiadomi wycznie wtedy, kiedy znamy
kolejno atrybutw w odpowiadajcym knotkom relacjach. Zatem zalecamy generalnie, aby ustali kolejno
atrybutw relacji i przestrzega jej tak dugo, jak korzysta si z tej relacji.
0
Formalny zapis knotki
W naszej ksice postanowilimy przedstawia knotki w postaci list, z ustalonym porzdkiem atrybutw w
relacji, jednak istnieje sposb zapisu knotek, ktry pozwala unika takiego ustalonego porzdku atrybutw. O
krotce moemy bowiem myle jako o funkcji przeprowadzajcej atrybuty ze schematu relacji do ich zbiorw
wartoci - do skadowych tych knotek. Na przykad reprezentowana ju dwojako knotka w przykadzie 3.1
moe by przedstawiona jako nastpujca funkcja:
tytu --> Gwiezdne Wojny rok --> 1977
dugo --~ 124 typFilmu --~ kolor
3.1. PODSTAWY MODELI RELACYJNYCH
pamita o tym, e w fazie projektowania bazy danych jej instancja nie wchodzi do projektu. Staramy si tylko
wyobrazi sobie, jak bd wyglda typowe instancje po zakoczeniu projektu.
I I C) 3. RELACY.TNY MODEL DANYCH
i integralnoci referencyjnej. Ta faza moe rozcign si w czasie, poniewa ocenia si rozmaite warianty oraz
podsumowuje rne opinie.
Po fazie projektowania nastpuje faza implementacji w rzeczywistym systemie baz danych. Poniewa
znakomita wikszo komercyjnych systemw baz danych stosuje model relacyjny, wic preferuje si tworzenie
projektu rwnie w modelu relacyjnym, a nie w modelu obiektowym, jak ODL czy zwizkw encji, ktre byy
omwione w rozdziale 2.
Mimo to w praktyce do czsto jest atwiej rozpocz od postaci opisauych w rozdziale 2, utworzy
projekt w tym modelu, a potem przeksztaci go do postaci relacyjnej. Jedna z przyczyn takiego postpowania
ley w braku elastycznoci modelu relacyjnego, ktry zawiera tylko jeden rodzaj elementw - relacje i nie
operuje innymi wygodnymi pojciami (np. zbiorami encji i zwizkw z modelu zwizkw encji), a jest to
znacznie atwiej obsugiwa ju po okreleniu struktury projektu.
W biecym rozdziale zastanowimy si, w jaki sposb przeksztaca modele zapisane w jzyku ODL do
postaci projektw relacyjnych. Z kolei konwersje midzy modelem zwizkw encji a modelem relacyjnym
omwimy w podrozdziale 3.3. Nastpnie powicimy troch uwagi podklasom w podrozdziale 3.4. Poniewa
ujcie podklas (zwizkw isa) jest rne w jzyku ODL i w zwizkach encji, to rwnie ich przeksztacanie do
modelu relacyjnego bdzie si rnio.
Czsto do schematu bazy danych docza si wizy. Wizy z modelu ODL i modelu zwizkw encji, takie
jak klucze i wizy integralnoci, mona take wyrazi w modelu relacyjnym. Wana kategoria wizw,
nazywana zalenociami funkcyjnymi, w modelu relacyjnym bdzie przedstawiona w podrozdziale 3.5.
Omwienie innych rodzajw wizw modelu relacyjnego rozpocznie si od podrozdziau 4.5.
tych zaoe, lecz na chwil przyjmijmy najprostszy przypadek, kiedy moemy bezporednio przeksztaci
klasy na relacje, a waciwoci na atrybuty. A oto nasze zaoenia:
1. Wszystkie waciwoci klas zapisuje si jako atrybuty (nie ma ani zwizkw, ani metod).
2. Typy atrybutw stylko atomowe (nie ma ani struktur, ani zbiorw). n
PKZYKAD'. 3.2
Na rysunku 3.2 zosta pokazany przykad klasy, odpowiadajcy przyjtym zaoeniom. Wystpuj tam cztery
atrybuty i nie okrelono adnych innych
I I S 3. RELACYJNY MODEL DANYCH
waciwoci. Kady atrybut ma okrelony typ atomowy: tytu jest napisem, rok i dugo s typu cakowitego, a
typFilmu moe przyjmowa jedn z dwch wartoci.
Tworzymy relacj o takiej samej nazwie jak nazwa klasy, w tym przypadku Film. Relacja ma cztery
atrybuty, po jednym odpowiedniku dla kadego atrybutu klasy. Nazwy atrybutw relacji mog by takie same
jak nazwy odpowiednich atrybutw klasy. Zatem otrzymujemy nastpujcy schemat dla tej relacji:
Film (tytu, rok, dugo, typFilmu)
taki sam jak w p. 3.1.1.
W obiektach klasy s okrelone wartoci dla kadego atrybutu klasy. Kademu obiektowi moe
odpowiada krotka, ktrej skadowe s rwne wartociom poszczeglnych atrybutw obiektu. Wynik takiego
przeksztacenia ju widzielimy. Na rysunku 3.1 przedstawiono bowiem przykad przeksztacenia obiektw
klasy Film do postaci krotek.
0
Struktury takie jak rekordy, ktrych pola s z zaoenia typu atomowego, obsuguje si najatwiej. Po
prostu rozszerza si wwczas definicj struktury, dodajc do relacji po jednym atrybucie dla kadego pola
struktury. Jedyny kopot moe wynika wwczas, gdy dwie struktury w klasie maj jednakowe nazwy pl, i w
takim przypadku trzeba wymyli dla jednego z powstajcych w tej parze atrybutw now nazw po to, by w
relacji mona je byo odrni.
interface Gwiazda { attribute string nazwisko; attribute Struct Adr
{string ulica, string miasto} adres; };
RYSUNEK 3.5
Klasa z atrybutem strukturalnym
PRZYKAD 3,3
Rozwamy wstpn definicj klasy gwiazda z przykadu 2.3, podajemy j ponownie na rys. 3.5. Atrybut
nazwisko jest typu atomowego, ale ju atrybut adres jest struktur o dwch polach: ulica oraz miasto. A wic w
relacji odpowiadajcej tej klasie trzeba utworzy 3 atrybuty. Pierwszy z nich to bdzie nazwisko i odpowiada on
atrybutowi o tej samej nazwie z jzyku ODL. Drugi i trzeci atrybut nazwiemy odpowiednio ulica oraz miasto,
bd one stanowi odpowiedniki dwch pl struktury adres i cznie stanowi opis adresu. Schemat relacji
przedstawia si zatem nastpujco:
Gwiazda (nazwisko, ulica, miasto)
PI-zykad instancji tej relacji z arbitralnie dobranymi krotkami zostal przedstawiony na rys. 3.6.
nazwisko
Carrie Fischer Marle Hamill Harrison Ford
ulica 123 Maple St 456 Oak Rd. 789 Palm Dr.
miasto Hollywood Brentwood Beverly Hills
RYSUNEK 3.6
Relacja reprezentujca gwiazdy
0
Ale to nie struktura typu rekord jest najbardziej skomplikowana wrd typw atrybutw, ktrymi mona
okrela atrybuty w definicjach klas w modelu ODL. Mona budowa wartoci, korzystajc z konstruktorw
typw takich jak: set, bag, array i list. Kady z nich stanowi osobny problem
IZO 3. RELACY.INY MODEL DANYCH
przy migracji do modelu relacyjnego. Szczegowo omwimy tylko konstruktor set, ktry rozpowszechnil si
najbardziej.
Uwagi na temat jakoci danych :-)
Podczas obmylania stosownych przykadw danych osobowych, zdecydowalimy si uywa
wymylonych wartoci adresw i innych atrybutw okrelajcych prywatn sfer ycia gwiazd
filmowych, po to by chroni prywatno ludzi sceny, bowiem bywaj oni nadwraliwi i czsto unikaj
publicznoci.
Jedna z metod reprezentowania zbioru wartoci atrybutu A polega na utworzeniu dla kadej wartoci
odpowiadajcej jej krotki. Taka krotka zawiera wwczas stosowne wartoci wszystkich pozostaych atrybutw
klasy. Na pocztku przeledzimy przykad, w ktrym ta metoda dziaa poprawnie, dopiero potem opiszemy
kryjce si w niej puapki.
PRZYKAD 3.4
Przypumy, e klas Gwiazda zdefiniowano w ten sposb, e kadej gwiedzie jest przypisany zbir adresw.
Definicj klasy mona wwczas zapisa w jzyku ODL, tak jak zrobiono to na rys. 3.7. Zamy ponadto, e
Carrie Fischer posiada rwnie domek na play, a pozostae dwie gwiazdy filmowe, wymienione na rys. 3.6
maj tylko jeden dom. Wwczas zapisujemy dwie krotki, w ktrych atrybut nazwisko ma warto Carrie
Fischer, co jest przedstawione na rys. 3.8. Inne krotki pozostajtakie same jak na rys. 3.6.
interface Gwiazda { attribute string nazwisko; attribute Set<
Struct Adr {string ulica, string miasto} > adres;
);
RYSUNEK 3.7
Gwiazdy ze zbiorami adresw
nazwisko
Carrie Fischer Carrie Fischer Mark Hamill Harrison Ford
RYSUNEK 3.8 Dopuszczenie zbioru adresw
ul ica miasto
123 Maple St. Hollywood 5 Locus Ln. Malibu 456 Oak Rd. Brentwood 789 Palm
Dr. Beverly Hills
D
3.2. OD PRO.IEKTW ODL DO PRO.IEKTW RELACYJNYCH I2I
Trzeba jednak przestrzec przed sytuacjami, gdy taka technika rozszerzenia zbioru na kilka krotek
doprowadza do utworzenia le zaprojektowanych relacji. W podrozdziale 3.7 rozwaymy problemy, ktre mog
wwczas si pojawi, oraz dowiemy si, w jaki sposb przeksztaci schemat bazy danych. Tutaj zastanwmy
si po prostu przez chwil nad mogcymi si pojawi problemami.
Wartoci atomowe: bdy czy waciwoci?
Wydaje si, e model relacyjny rzuca nam kody pod nogi w tych miejscach, gdzie model ODL jest bardziej
elastyczny i dopuszcza opisywanie waciwoci w postaci struktur zoonych. Mona nawet poczu ch totalnego odrzucenia modelu relacyjnego lub potraktowania go jako prymitywnej koncepcji wypartej przez
elegantsze techniki obiektowe, takie jak ODL. Jednak w rzeczywistoci na rynku dominuj systemy baz danych
realizowane w modelu relacyjnym. Jednym z powodw takiego stanu rzeczy jest to, e prostota modelu
relacyjnego umoliwia tworzenie zapyta do baz danych poprzez silne narzdzia jzykw zapyta. W
podrozdziaach 4.1 i 4.2 wprowadzimy abstrakcyjne jzyki programowania, algebr relacji i Datalog.
Waniejsze jest pewnie jednak ich wcielenie w SQL, jzykowym standardzie dostarczanym obecnie w prawie
wszystkich systemach baz danych.
PRZYKAD 3.5
Zamy, e w definicji klasy Gwiazda wystpi dodatkowo atrybut dataUrodzenia, skorzystamy wic z definicji
zapisanej na rys. 3.9. Do rysunku 3.7 doczylimy atrybut dataUrodzenia typu Data, ktry w modelu ODL jest
typem atomowym. A zatem schemat relacji Gwiazda z nowym atrybutem dataUrodzenia wyglda nastpujco:
Gwiazda (nazwisko, ulica, miasto, dataUrodzenia)
Wprowadmy jeszcze jednzmian do danych z rys. 3.8. Poniewa zbir adresw moe by pusty, wic
zamy, e w bazie nie figuruje adres Harrisona Forda. Tak zmodyfikowana relacja zostaa przedstawiona na
rys. 3.10.
interface Gwiazda {
attribute string nazwisko; attribute Set<
Struct Adr {string ulica, string miasto} > adres;
attribute Date dataDrodzenia;
RYSUNEK 3.9.
Zbir adresw i dat urodzenia gwiazd
122 nazwisko Carri.e Fischer Carrie Fischer Marle Hamill
RYSUNEK 3.10 Doczenie dat urodzenia
3. RELACYJNY MODEL DANYCH
tego proponujemy doczy do schematu relacji nowy atrybut licznik, okrelajcy, ile razy dany element
wystpuje w wielozbiorze. Przyjmijmy na przykad, e adres z rys. 3.7 jest wielozbiorem, a nie zbiorem.
Wwczas mona by okreli, e 123 Maple St., Hollywood jest adresem Carrie Fischer dwukrotnie, a z kolei 5
Locust Ln., Malibu jest jej adresem trzykrotnie, stosujc nastpujcy zapis:
nazwisko I ulica
Carrie Fischer 123 Maple St Carrie Fischer 5 Locus Ln.
miasto licznik Hollywood 2 Malibu 3
Lista adresw moe by reprezentowana przez nowy atrybut pozycj a, wskazujcy pozycj w obrbie listy.
Na przykad moemy przedstawi list adresw Carrie Fischer, z adresem w Hollywood na pierwszym miejscu,
w postaci nastpujcej relacji:
nazwisko Carrie Carrie
ulica
Fischer
miay struktur zoon zbioru lub zbioru struktur. W przypadku zwizku naleyDo, do schematu relacji Film
doczylibymy po jednym atrybucie dla kadej waciwoci klasy studio.
interface Film{
attribute string tytu; attribute integer rok; attribute integer dlugo;
attribute enumeration(kolor, czarno-biay) typFilmu;
relationship Set<Gwiazda> gwiazdy
inverse Gwiazda:: wystpujeW; relationship Studio naleyDo;
inverse Studio:: posiada;
RYSUNL;K 3.1 1
Pena definicja klasy Film
Przy takim podejciu pojawia si jednak kopot polegajcy na tym, e obiekty studio pozostaj rwnie we
wasnym zwizku posiada, ktry definiuje z powrotem zaleno do obiektw klasy Film. Do reprezentowania
tego zwizku w kadej krotce relacji film trzeba by zawrze dane o wszystkich innych filmach
wyprodukowanych przez jego studio. Z kolei dane o kadym z tych filmw obejmuj rwnie dane ich studia,
co skania nas do ponownego wczenia danych o filmach powizanych ze studiem. A zatem taka technika moe
doprowadzi do istotnych komplikacji, jeli uda si j stosowa w praktyce.
Lepsz metod uzyskamy, gdy zastanowimy si, w jaki sposb naprawd obiekty s rozmieszczone w
pamici komputera. Jeli obiekt O~ zawiera dowizanie do innego obiektu O2, to wcale nie tworzymy nowej
kopii obiektu OZ w O~. Na og po prostu okrela si wewntrz Ol warto wskanika pokazujcego na obiekt
O2.
Ale model relacyjny nie zawiera pojcia wskanika ani adnego innego podobnego elementu. Zamiast
tego musimy symulowa efekt, uzyskiwany poprzez wskaniki, zbiorem wartoci definiujcyclo powizany
obiekt. Trzeba nam po prostu zbioru atrybutw powizanej klasy, ktre tworz w niej klucz. Jeli to okrelimy,
to moemy potraktowa zwizek tak, jakby by atrybutem lub atrybutami kluczowymi wskazywanej klasy. T
technik ilustruje nastpny przykad.
` O ile acuch filmw i studia nie wychodzi nigdy poza jedno studio, to ju analogiczne postpowanie w
przypadku zwizku gwiazdy i odwrotnego do zwizku wystpujew prowadzioby od filmu do jego gwiazd, do
wszystkich filmw powizanych z gwiazdami, do wszystkich gwiazd, ktre tam wystpoway, i tak dalej,
bardzo szybko doprowadzajc do koniecznoci uwzgldnienia w jednej krotce prawie wszystkich filmw i
gwiazd umieszczonych w bazie danych.
32. OD PROJEKTW ODL DO PROJEKTW RELACYJNYCH I2S
PRZYKAD 3.6
Zamy, e atrybut nazwa stanowi klucz dla klasy studio. Definicj tej klasy przepisujemy zgodnie z rys. 2.6
interface Studio { attribute string nazwa; attribute string adres;
relationship Set<Film> posiada inverse Film::naleyDo; );
Moemy zmodyfikowa schemat relacji Film z rys. 3.1 tak, aby zostay do niego doczone atrybuty okrelajce
studio waciciela. Arbitralnie nazwiemy ten atrybut nazwastudia. Na rysunku 3.12 zostao przedstawione takie
rozszerzenie o atrybut nazwastudia oraz pewne przykadowe krotki.
tytu~
rok
dugo
typFilmu
nazwaStudia
Gwiezdne Wojny
1977
124
kolor
Fox
Potne Kaczory
1991
104
kolor
Disney
Swiat Wayne'a
1992
95
kolor
Paramount
RYSUNEK 3.12
Relacja Film z nowym atrybutem okreljcym studio waciciela
O
szczeglnych wartoci. I tak jak w przypadku atrybutw o typie zbioru, przy tej technice zagadnienie
redundancji pozostaje otwarte, poniewa wartoci innych atrybutw relacji musz si powtarza dla kadego
elementu ze zbioru. Ten problem zostanie rozwizany w podrozdziale 3.7, wic na razie pogodzimy si z takim
stanem rzeczy.
PRZYKAD 3.7
Zamy, e nazwisko jest kluczem w klasie Gwiazda. Wwczas relacj, zaprojektowan dla klasy Film,
moemy rozszerzy, doczajc do niej atrybut o przykadowej nazwie nazwiskoGwiazdy, ktrego wartoci
bd odpowiada nazwiskom poszczeglnych gwiazd. Wwczas jeden film bdzie opisany przez tyle krotek, ile
gwiazd wystpujcych w danym filmie umieszczono w bazie danych. Pewne przykady danych zamieszczono
na rys. 3.13. Wyranie wida ju redundancj, wszystkie pozostae dane o filmie s powtarzane dla kadej
gwiazdy wystpujcej w tym fiknie.
tytu
rok
dlugo
typFilmu nazwaStudia
nazwiskoGwiazdy
Gwiezdne
1977
124
kolor
Fox
Carie
Wojny
Fischer
Gwiezdne
1977
124
kolor
Fox
Mark
Wojny
Hamill
Gwiezdne
1977
124
kolor
Fox
Harrison
Wojny
Ford
Potne
1991
104
kolor
Disney
Emilio
Kaczory
Estevez
wiat
1992
95
kolor
Paramount
Dana
Wayne'a
Carvey
wiat
1992
95
kolor
Paramount
Mike
Wayne'a
Meyers
RYSUNEK 3.13
Relacja Fi lm z danymi gwiazd
O
Moe si rwnie zdarzy, e w klasie wystpi wicej ni jeden zwizek wielowartociowy. Wwczas
liczba powstaych krotek w relacji gwatownie si zwiksza. Zamy, e w klasie C okrelono zwizki
wielowartociowe R,, R2, ..., Rk. Wwczas relacja zaprojektowana dla klasy C ma atrybuty odpowiadajce
wszystkim atrybutom C oraz atrybuty odpowiadajce atrybutom klucza wszystkich zwizkw
jednowartociowych z C. Poza tym musz wystpi atrybuty reprezentujce klucze klas powizanych
zwizkami R,, RZ, ..., Rk.
Zamy, e pewien obiekt o z klasy C jest powizany poprzez zwizek R, z n, obiektami, poprzez
zwizek RZ z n, obiektami i tak dalej. Wwczas dla
3.2. OD PROJEKTW ODL DO PROJEKTW RELACYJNYCH 12%
wszystkich moliwych kombinacji tych obiektw tworzymy po jednej krotce, ktra odpowiada obiektowi o. A
zatem, w wyniku otrzymamy n~ x n2 x ... x nk krotek, ktre trzeba umieci w relacji, jeli chcemy
reprezentowa obiekt o w tym modelu.
PRZYKAD 3.8
Zamy, e w klasie C zdefiniowano zbir jednowartociowych atrybutw X oraz dwa wielowartociowe
zwizki R, i R2. Niechaj te zwizki cz klas C z klasami, ktrych kluczowe atrybuty tworz odpowiednio
zbiory Y i Z. A teraz rozwamy obiekt c klasy C, ktry poprzez zwizek R~ jest powizany z obiektami o
kluczach yJ i y2, a poprzez zwizek Rz z obiektami o kluczach z,, zz oraz z3. Niech x reprezentuje wartoci
obiektu c w zbiorze atrybutw X.
Wwczas obiekt c w relacji utworzonej do reprezentowania klasy C sam jest reprezentowany przez sze
krotek. Moemy je oznaczy symbolicznie w nastpujcy sposb:
(x~ Ya zO (x~ Yo zz) (x~ Yn z3) (x~ Y2~ ~t) (x~ Yz~ z2) (x~Yz~ z3)
Klucze z Y zostay tu poczone w pary z kluczami z Z na wszystkie moliwe sposoby.
0
PRZYK.AD 3.9
Jeli wprowadzimy jednoznaczne numery certyfikatw dla gwiazd i zdefiniujemy klucz gwiazdy w relacji
poprzez ten numer, to relacja Film przyjmie nastpujc posta:
rok I dluQO I tvpFilmu I nazwaStudio I cert#
Gwiezdne Wojny 11977 1124 (kolor IFox 112345 Podajemy tu tylko jedn krotk i zakadamy, e 12 345 jest
numerem cer
tyfikatu Carrie Fisher. Do relacji Gwiazda trzeba rwnie doczy atrybut okrelajcy numer certyfikatu, a
take wszystkie inne dane o gwiedzie, ktre wynikajz definicji klasy Gwiazda zapisanej w jzyku ODL. Na
przykad: -cert# ~ nazwisko ~ ulica ~ miasto ~wyste~ujeW
12345 Carrie Fisher 123 Maple St. Hollywood Gwiezdne Wojny opisuje pewien schemat relacji oraz jedn z
kilku krotek odpowiadajcych Carrie Fisher.
0
Jednak zauwamy, e przechowywanie zarwno zwizku gwiazdy, jak i jego odwrotnoci, jest
redundantne. Kady z nich dostarcza bowiem tych samych danych co ten drugi. A zatem moemy w relacji
Gwiazda cakiem pomin zwizek wystepuj eW. Zamiast tego moemy utrzyma wszystkie dane w relacji
Gwiazda, a usun atrybut nazwiskoGwiazdy z relacji Film. W punkcie 3.3.2 opiszemy trzeci metod,
polegajc na tym, e zwizek i jego odwrotno s oddzielane i razem tworz now relacj. Czasami, acz kolwiek nie zawsze, taka metoda jest najwaciwsza. Jednak jeli tak si zdarzy, e oddzielna relacja dla
zwizkw jest najlepszym sposobem, to proces normalizacji, ktry omwimy w podrozdziale 3.7, zmusi nas do
utworzenia jej, nawet jeli sami we wstpnym projekcie relacyjnym tego nie zrobimy.
Zauwamy, e w modelach ODL zarwno zwizek, jak i jego odwrotno s niezbdne, poniewa
zawieraj wskaniki od gwiazd do ich filmw
3.2. OD PROJEKTW ODL DO PRO.tEKTW RELACYJNYCH 129
oraz od filmw do ich gwiazd. Nie mona posugiwa si bowiem wskanikami odwrotnie do ich kierunku,
wiec w przeciwnym razie musiayby powsta wskaniki dwukierunkowe". Lecz zarwno w modelu relacyjnym,
jak i w modelu zwizkw encji, zwizki definiuje si przez powizane wartoci (kluczy). Krotki zawierajce
pary powizanych kluczy, ua przykad tytu i rok dla filmu oraz nazwisko gwiazdy, mona stosowa zarwno do
analizowania zwizku, jak i jego odwrotnoci.
Reprezentowanie zwizkw w jednym kierunku
Jeli binarny zwizek zachodzi midzy dwoma zbiorami encji, to mona wybra jednz relacji, w ktrej
zostanie zapisany zwizek: relacj definiujc ktrykolwiek ze zbiorw encji. Czy ma znaczenie, ktr z nich
wybierzemy? Jeli zwizek jest typu jeden do jeden lub wiele do wiele, to naj prawdopodobniej nie ma to
znaczenia. Ale jeli zwizek jest typu wiele do jeden, to warto wprowadzi zwizek po stronie wiele, tzn. do
tego zbioru encji, w ktrym wiele encji moe by powizanych z jedn encj drugiego zbioru encji. W ten
sposb bowiem uda si nam unikn redundancji.
Na przykad zwizek Posiada midzy Filmami i Studiami jest lepiej umieci w zbiorze Filmy. W ten
sposb po prostu tylko rozszerza si zbir atrybutw filmu o nazw waciwego dla filmu studia i kada krotka
rozszerza si o jedn warto. Gdybymy natomiast doczyli zwizek do relacji Studia, to musielibymy kad
krotk w tej relacji rozszerzy o wiele innych krotek, dodajc dla kadego studia tyle krotek, ile filmw ono
posiada. W wyniku takich dziaa powielilibymy wszystkie inne dane na temat studia tyle razy, ile ma ono
filmw.
niewiele si traci przez brak wskanikw. Ponadto, o ile wskaniki s bardzo potrzebne w programach, ktre
dziaaj na danych w pamici operacyjnej, a ich wykonanie trwa nie duej ni uamek sekundy, o tyle w bazach
danych stosuje si zupenie inne metody. Implementacja wskanikw midzy obiektami, ktre istniej latami w
bazie, a mog by przechowywane w sposb rozproszony na rnych urzdzeniach pamici zewntrznych
doczonych do szeroko rozproszonych systemw komputerowych, jest znacznie trudniejsze. Tutaj dopiero
wida, jak silne s argumenty przemawiajce za rozwizaniami stosowanymi w modelu relacyjnym, gdzie nie
uywa si wskanikw.
interface Klient{
attribute Struct nazwisko
{string imi, string nazwisko} nazwisko; attribute Set<
Struct Tel {string typ, int numer}
>telefony; relationship Klient okrelonyPrzez inverse
wprowadzenia; relationship Set<Klient> wprowadzenia; inverse
Studio:: okrelonyPrzez;
KYSUNEK 3.14 Rekordy Klienta
3.3. OD DIAGRAMW ZWIZKW ENCJI DO PROJEKTW RELACYJNYCH 131
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 adnych danych
dotyczcych zwizkw, w ktrych dany zbir uczestniczy. Zwizki zostan zdefiniowane przez osobne relacje,
omwimy to zagadnienie w p. 3.3.2.
PRZYKAD 3.10
Rozwamy trzy zbiory encji: Filmy, Gwiazdy oraz Studia z rys. 2.8, ktry odtwarzamy na rys. 3.15. Atrybutami
zbioru eneji 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 ) ~nazwisko~ ( 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 I33
>`razwisko 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~
rok
nazwiskoGwiazdy
Gwiezdne Wojny
1977
Carrie Fisher
Gwiezdne Wojny
1977
Mark Hamill
Gwiezdne Wojny
1977
Harrison Ford
Potne Kaczory
1991
Emilio Estevez
wiat Wayne'a
1992
Dana Carvey
wiat Wayne'a
1992
Mike Meyers
RYSUNEK 3.16
Relacja zwizku Gwiazdy-w
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 frlmw 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 ni 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
sposb
przeksztaci
w
relacje.
Rozwamy'czteroargumentowy zwizek Kontrakty z rys. 2.12, po
3.3. OD DIAGRAMW ZWIZKW ENCJI DO PROJEKTW RELACYJNYCf~ I3S
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.
Filmy
Kontrakty
Studio ~ ' Studio gwiazdy ) producenta
Studia
RYSUNEK 3.17 Zwizek Kontrakty
Od ODL do relacji
Jak ju wspomnielimy, w wyniku przeksztacenia 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 DANYCI~1
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 eneji 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
Zespoyjaka przy=kad stabego zbioru encji
3.3. OD DIAGRAMW ZWIZKW ENCJI DO PROJEKTW RELACYJNYCH I3 %
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 Zespoty. Atrybutami tej relacji s atrybuty
klucza zbioru Zespo~y. 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 encj i Studia.
Trzecia relacja Jednostka-w powstaje ze zwizku o takiej samej nazwie. Jak we wszystkich przypadkach,
tak i tu zwizek encji 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 Studia. Zauwamy jednak, e studio o kluczu nazwastudia jest tym samym
studiem, ktrego kluczem jest nazwa, poniewa Jednost ka-w jest zwizkiem wiele do jeden.
Zamy na przykad, e Disney #3 oznacza jeden z zespow w studio Disneya. Zatem w zbiorze
zwizku.7ednostka-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 polczy 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 s
podzbiorem atrybutw relacji zespoy.
0
I'R7,YK(,AD 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: