Wykład 2
•
Relacyjny model n – członowy• Zależność funkcyjna i klucz relacji
• Schematy relacji
• Normalizacja relacyjnej bazy danych
Relacyjny model n-członowy
Relacja jest podzbiorem iloczynu kartezjańskiego określonego na zbiorach nazywanych dziedzinami relacji. Dziedziną nazywa się zbiór wartości.
Dziedziną może być zbiór encji.
Niech D1, D2, ... , Dn będzie uporządkowanym ciągiem dziedzin niekoniecznie różnych.
Relacją n-członową Rn nazywa się podzbiór iloczynu kartezjańskiego
Elementami relacji o n członach są krotki takie, że dla i=1,2,..., n.
D 1 D 2 . . . D n
d 1 ,d 2 , . . . ,d n
d i D i
Niech dla przykładu dziedzina D1 stanowi zbiór części samochodowych, a dziedzina D2 zbiór liczb całkowitych dodatnich.
Relacja
określa budowę samochodu.
Relację przedstawia tabela wartości:
R D 1 D 1 D 2
samochód podwozie 1
samochód silnik 1
samochód oś 2
samochód koło 5
silnik głowica cylindra 1
silnik tłok 4
silnik korbowód 4
Zmienne w teorii relacji to atrybuty. Oznacza się je dużymi literami X, Y, Z.
Zmienna X może przyjmować różne wartości - mówimy wtedy, że atrybut X przyjął wartość.
Atrybutowi X przypisuje się określoną dziedzinę D - wartości przyjmowane przez ten atrybut będą pochodziły z dziedziny D.
Relację n-członową definiuje się przez:
(1) podanie zbioru atrybutów relacji ,
(2) przypisanie każdemu z atrybutów Xi dla i=1,2,...,n dziedziny Di
(3) określenie predykatu relacji - funkcji zdaniowej, która przy każdym z przypisań zgodnym z przypisanymi atrybutom dziedzinami przyjmuje jedną z dwóch wartości logicznych: prawda albo fałsz.
X ,X ,...,Xn
X 1 2
X : a
W tabeli przedstawiono przykładową relację trójczłonową o dwóch różnych dziedzinach. W relacji tej kolumnom nie przypisano żadnego konkretnego znaczenia. Jeżeli teraz kolumnom tabeli - atrybutom relacji przypiszemy nazwy, np. CZĘŚĆ_ZŁOŻONA, CZĘŚĆ_SKŁADOWA, LICZBA, to relację tą można przedstawić na 6 różnych sposobów. Sposoby
przedstawienia tej relacji różnić się będą między sobą np. kolejnością
kolumn. Przykłady dwóch różnych reprezentacji tej samej relacji pokazano w kolejnych tabelach.
CZĘŚĆ_ZŁOŻONA CZĘŚĆ_SKŁADOWA LICZBA
samochód podwozie 1
samochód silnik 1
samochód oś 2
samochód koło 5
silnik głowica cylindra 1
silnik tłok 4
silnik korbowód 4
koło opona 1
koło śruba mocująca 4
CZĘŚĆ_SKŁADOWA CZĘŚĆ_ZŁOŻONA LICZBA
podwozie samochód 1
silnik samochód 1
oś samochód 2
koło samochód 5
głowica cylindra silnik 1
tłok silnik 4
korbowód silnik 4
Rozważmy powiązanie:
Z Z Z F
Z Z Z
k k k n
1 2 1 2
Z1, Z2,...,Zn to nazwy zbiorów encji, a F jest odwzorowaniem jedno- lub wielowartościowym. Z dowolnego powiązania o powyższej postaci można skonstruować n-członową relację
R(Z
1, Z
2, ..., Z
n),
której atrybutami są nazwy zbiorów encji występujących w powiązaniu.
W przypadku, jeżeli w powiązaniu nazwy zbiorów encji powtarzają się, w relacji należy zmienić nazwy odpowiednich atrybutów –
atrybuty relacji muszą mieć różne nazwy.
Przykładowo, z powiązania
można skonstruować relację
W przykładowym systemie informacyjnym wyższej uczelni z powiązań (15), (16) i (21) można skonstruować relację:
W Y K A D O W C A G O D Z I N A z a j ę c i a
S A L A
Ł 0
R W Y K Ł A D O W C A G O D Z I N A S A L A, ,
) ROK I
KIERUNEK ,
ADRES ,
NAZWISKO ,
STUDENT (
R 1
dla której predykat ma postać
gdzie s, n, a, k oznaczają odpowiednio studenta, nazwisko, adres oraz kierunek i rok studiów.
Na podstawie powiązań (18) i (19) można w podobny sposób utworzyć relację:
Na podstawie powiązań (17) i (20) powstaje relacja
n nazwiskost udenta s a adresstude nta s k zapisany s
prawda k
, a , n , s R
1
SALA , LICZBA , BUDYNEK
R 2
KIERUNEK I ROK , PRZEDMIOT ,WYK Ł ADOWCA
R 3
Powiązanie (17) jest odwzorowaniem wielowartościowym, a powiązanie (20) - funkcją. Warunek spełnienia predykatu dla tej relacji ma nieco inną postać:
Na podstawie powiązania (22) tworzy się relację
która dotyczy historii studiów poszczególnych studentów.
W przypadku powiązania (23) musimy dokonać zmiany nazwy jednej ze zbiorów encji występujących w powiązaniu:
p Pr zedmiot k w odpowiedzi a y k
prawda w
p k R
ln
,
3 ,
STUDENT ,KIERUNEK I ROK ,ROK ,BOOL
R4
KIERUNEK I ROK ,KIERUNEK I ROK WYMAGANY
R5
Dziedzina atrybutu KIERUNEK-I-ROK jest identyczna z dziedziną atrybutu KIERUNEK-I-ROK-WYMAGANY.
Na podstawie powiązań (24) i (25) można skonstruować relację
Warunek spełnienia predykatu odpowiadającego relacji R6 ma postać:
PRZEDMIOT, GODZINA, DZIEN, SALA, WYKLADOWCA
R
6
R
6p , g , d , s , w prawda g , d , s , w Rozkladzaj ec p
Warunek ten jest równoważny warunkowi
g ,d , s , p
Z a j ę t y
w
Z powiązania (27) wynika relacja
która mówi o tym, czy dany student zaliczył bieżący rok/semestr studiów.
STUDENT , BOOL
R
7Zależność funkcyjna i klucz relacji
Relacji w postaci ogólnej X i Y są niepustymi zbiorami atrybutów a Z może być zbiorem pustym.
Mówimy, że Y jest funkcyjnie zależny od X co zapisujemy symbolicznie jako
wtedy i tylko wtedy, gdy dla dowolnych wartości (a,b,c) i (a, b’, c’) przyjmowanych odpowiednio przez X, Y, Z
X ,Y ,Z
R
R Y X
a , b , c R a , b ' , c ' b b '
R
Inaczej - każda z wartości X wyznacza co najwyżej jedną wartość Y, przy czym Z jest nieistotne.
Zależność funkcyjna
jest zależnością pełną, jeżeli dla żadnego podzbioru właściwego X’ zbioru atrybutów X nie jest spełniona zależność funkcyjna
X jest kluczem relacji jeżeli zależność jest pełną zależnością funkcyjną.
R Y X
R Y ' X
X ,Y ,Z
R X R Y , Z
Relacja może mieć więcej niż jeden klucz.
Rozróżniamy:
• Klucz główny
• Klucze kandydujące (potencjalne)
• Klucze proste
• Klucze złożone
• Klucze obce
Schematy relacji
Relację definiuje się za pomocą predykatu jako pewien zbiór krotek.
Z punktu widzenia semantyki (znaczenia) rozróżnia się dwa pojęcia - pojęcie intensji relacji oraz ekstensji relacji.
Intensja relacji odpowiada znaczeniu relacji - predykat związany z relacją stanowi element jej intensji. Na intensję relacji mogą poza tym składać się inne jej własności.
Ekstensja relacji jest zbiorem krotek spełniających własności, które stanowią intensję relacji.
Własności te nazywa się warunkami integralności. Słowa relacja będziemy dalej używać mówiąc o ekstensji, a terminu schemat relacji -
Przykładowo - intensję relacji
R(PRZEDMIOT, DZIEŃ, GODZINA, SALA, WYKŁADOWCA) wyrażają następujące warunki integralności:
1) predykat związany z relacją R mówi o tym, że
wykładowca w prowadzi zajęcia z przedmiotu p w dniu d, o godzinie g, w sali s 2) dziedzina atrybutu GODZINA jest zbiorem liczb całkowitych
z przedziału <7, 24>
3) dany wykładowca może znajdować się o określonej godzinie tylko w jednej sali
Ekstensję relacji R stanowi zbiór krotek spełniających własności (1), (2), (3).
Schematy relacji definiuje projektant bazy danych, natomiast relacje składają się na bieżącą realizację bazy danych.
Szczególnie istotnymi warunkami integralności są zależności funkcyjne.
Pojęcie zależności funkcyjnej wiąże się z pojęciem klucza relacji.
Klucz relacji stanowi najmniejszy zbiór atrybutów relacji, których wartości pozwalają wskazać jednoznacznie każdą z krotek relacji.
Naczelna zasada normalizacji
Dane powinny zależeć od klucza Od całego klucza
Od niczego innego niż klucz
Tak mi dopomóż Codd
Normalizacja to proces sprowadzania bazy do odpowiedniej postaci.
Polega to przede wszystkim na dzieleniu tabeli na kilka połączonych kluczem tabel.
Głównym powodem, dla którego normalizuje się bazę jest występowanie problemów (zwanych dalej anomaliami) w przypadku źle zaprojektowanej struktury.
Problemy te można zilustrować na następującym, prostym przykładzie:
Przypuśćmy, że dla bazy danych dotyczących książek w bibliotece zaproponowano strukturę złożoną z jednej relacji:
R(R(TYTUŁTYTUŁ--KSIĄŻKI, AUTOR, POŻYCZAJĄCY, ADRES, DATAKSIĄŻKI, AUTOR, POŻYCZAJĄCY, ADRES, DATA--WYPOŻYCZENIA)WYPOŻYCZENIA)
W tak zaprojektowanej bazie danych mogą wystąpić anomalia:
przy aktualizacji - jeżeli wypożyczający zmienił adres, trzeba przeszukać całą bazę i we wszystkich komórkach, w których występuje, należy zmienić ten adres,
przy usuwaniu - jeżeli pożyczający zwróci ostatnią książkę, zostanie utracona informacja na jego temat,
przy wstawianiu - gdy pożyczający chce zapisać się do biblioteki, należy go wpisać do tablicy, ale jednocześnie istnieje wymaganie, aby podana została książka, którą wypożycza - nowy użytkownik wcale nie musi pożyczać książki, redundancja czyli powtarzanie tej samej informacji w kilku miejscach w bazie;
powoduje to niepotrzebne zajmowanie pamięci przez tą samą informację. W przypadku, gdy jedna osoba pożycz dwie lub więcej książek niepotrzebnie powtarzana jest informacja na temat adresu czytelnika.
Zdefiniowano pięć postaci normalnych bazy danych.
Pierwsze trzy postacie normalne wprowadził F. Codd [1] w swoim modelu relacyjnym danych. Ponieważ okazało się, że niekiedy nie wystarcza to do pełnej optymalizacji bazy, powstały dodatkowo postacie czwarta i piąta.
Sformułował je w roku 1977 i 1979 Fagin [2, 3].
Baza jest tym “lepsza” im jest w wyższej postaci normalnej.
Relacyjną bazę danych wystarczy zwykle doprowadzić do trzeciej postaci normalnej.
W modelu implementacyjnym relacja ma graficzną postać tabeli.
W zależności od organizacji SZBD wszystkie relacje (tabele) bazy wraz z danymi organizacyjnymi niezbędnymi (tzw. metadanymi) do prawidłowego przetwarzania bazy przez SZBD przechowuje się albo w jednym pliku w pamięci zewnętrznej, albo dla każdej tablicy przeznacza się odrębny plik w pamięci zewnętrznej.
[1] Codd E.F.: A Relational Model for Large Shared Data Banks. w CACM,1970
[2] Fagin R.: Multi-Valued Dependecies and a New Normal Form for Relational Databases. ACM Trans. On Database
Postacie normalne bazy danych
Postać normalna
Opis
Pierwsza W każdej komórce tabeli znajduje się tylko jedna wartość, inaczej: każdy atrybut niekluczowy (nie należący do żadnego klucza) jest funkcjonalnie zależny od klucza głównego.
Druga
Baza jest w pierwszej postaci normalnej oraz kolumna nie należąca do klucza nie może być zależna od części klucza głównego - klucza wybranego przez projektanta (w ten sposób usuwa się niepełne zależności funkcjonalne), inaczej:
każdy atrybut niekluczowy jest w pełni funkcyjnie zależny od klucza głównego.
Trzecia
Baza jest w drugiej postaci normalnej oraz kolumna nie należąca do klucza nie może być zależna od innej kolumny nie należącej do klucza (w ten sposób usuwa się częściowe
Postać normalna
Opis
Czwarta Baza jest w trzeciej postaci normalnej oraz usunięto wielokrotne, wielowartościowe zależności funkcjonalne
Piąta
Baza jest w czwartej postaci normalnej. Tabele zostały podzielone na najmniejsze możliwe kawałki w celu eliminacji redundancji w tabeli (usunięto zależności funkcjonalne, które nie wynikają z zależności od atrybutów klucza).
A
B
C
D
Klucz A + B Klucz A + B Klucz A
Przekształcenie do 2NF
A
B C
A D
A
B
C
A
B
B
C
Klucz A Klucz A Klucz B Przekształcenie do 3NF
Baza jest w drugiej postaci normalnej oraz kolumna nie należąca do klucza nie może być zależna od innej kolumny nie należącej do klucza (w ten sposób usuwa się częściowe zależności funkcjonalne), inaczej: każdy niekluczowy atrybut jest bezpośrednio zależny od klucza głównego.
A
B C
A
B
A
C
Przekształcenie do 4NF
Baza jest w trzeciej postaci normalnej oraz usunięto wielokrotne, wielowartościowe zależności funkcjonalne
A
B C
A
B
B
C
A
C
Przekształcenie do 5NF
Baza jest w czwartej postaci normalnej. Tabele zostały podzielone na
najmniejsze możliwe części w celu eliminacji redundancji w tabeli (usunięto zależności funkcjonalne, które nie wynikają z zależności od atrybutów klucza).
Nr faktury NIP
Nazwa odbiorcy Adres odbiorcy
Id towaru
Nazwa towaru Cena jednostkowa Ilość
SWW
Nr faktury NIP
Id towaru
Nazwa towaru Cena jednostkowa
SWW VAT
Id towaru Ilość
NIP
Nazwa odbiorcy
NIP SWW VAT
Id towaru
Nazwa towaru Cena jednostkowa
SWW SWW NIP
Id towaru Ilość