Bazy danych
Normalizacja schematów
logicznych relacji.
Denormalizacja.
Krzysztof Molenda
Normalizacja wprowadzenie (1)
" W 1970 E.F. Codd sformułował pewne reguły dotyczące projektowania baz
danych. Reguły te zostały pierwotnie wyrażone jako trzy postacie
normalne:
pierwsza postać normalna (1NF)
druga postać normalna (2NF)
trzecia postać normalna (3NF)
" W połowie lat siedemdziesiątych spostrzeżono pewne braki w trzeciej
postaci normalnej i zdefiniowano mocniejszą postać normalną, znaną jako
postać normalna Boyce a-Codda. W pózniejszym czasie opracowano postać
normalnÄ… czwartÄ…, a nawet piÄ…tÄ….
" Proces kolejnego przekształcania projektu baz danych przez te trzy postacie
normalne znany jest jako normalizacja.
2
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Normalizacja podstawowe pojęcia
" Więzy integralności to zbiór twierdzeń, które muszą być zawsze spełnione
w każdym stanie bazy danych. Zależności mają reprezentować semantyczne
związki między elementami świata.
" Normalizacja danych to takie uporządkowanie tablic (najczęściej przez
rozbicie dużych tabel na kilka mniejszych z mniejszą liczbą kolumn), aby
były one maksymalnie wydajne i zwarte. Unikamy dzięki temu błędów i
utraty spójności danych podczas pracy z relacyjną bazą danych.
" Redundancja danych, czyli powtarzanie siÄ™ tych samych informacji w kilku
miejscach w bazie (co może prowadzić do nadmiernego rozrostu bazy
danych). Pewna powtarzalność danych jest prawie zawsze konieczna,
jednak należy unikać powtórzeń, jeśli to tylko możliwe.
" Redundancja danych w niektórych sytuacjach prowadzi do anomalii:
Anomalie modyfikacji: wartość danej zostanie zmodyfikowana w pewnej
krotce, a w innej nie.
Anomalie przy usuwaniu: jeżeli dla pewnego atrybutu zaczyna obowiązywać
wartość null, to jako efekt uboczny może zdarzyć się utrata danych.
Anomalie dołączania: pewnych danych nie można wprowadzić niezależnie od
innych.
3
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Nieznormalizowany zbiór danych
" Tabela ZAMOWIENIA jest nieznormalizowana.
" Aby tabelę można było nazwać RELACJ, wartości atrybutów muszą być
elementarne (nie mogą być zbiorami wartości).
" W przykładzie tabeli ZAMOWIENIA, atrybuty Id części, Nazwa części, Ilość,
Magazyn, Adres zawierają listy wartości a nie wartości elementarne.
ZAMOWIENIA
Nr Id Nazwa Adres
Id części Nazwa części Ilośc Magazyn Adres magazynu
zam dostawcy dostawcy dostawcy
1 3 Dewoo W-wa 53, 57 59 gaznik, wał, błotnik 100, 50 500 5, 5, 6 Chopina, Chopina, Mozarta
2 4 Fiat Tychy 54, 32 gaznik, koło 500, 100 5, 6 Chopina, Mozarta
3 5 Andrychów Andrychów 88 silnik 15 7 Bacha
4 6 Fiat Bielsko 59, 21 błotnik, prądnica 400, 50 6, 7 Mozarta, Bacha
5 3 Dewoo W-wa 53, 57 gaznik, wał 200, 30 5, 5 Chopina, Chopina
6 3 Dewoo W-wa 59 błotnik 20 6 Mozarta
4
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Pierwsza postać normalna (1NF) slajd 1
Nr Id Nazwa Adres
Id części Nazwa części Ilość Magazyn Adres magazynu
zam dostawcy dostawcy dostawcy
1 3 Dewoo W-wa 53 gaznik 100 5 Chopina
1 3 Dewoo W-wa 57 wał 50 5 Chopina
1 3 Dewoo W-wa 59 błotnik 500 6 Mozarta
2 4 Fiat Tychy 54 gaznik 500 5 Chopina
2 4 Fiat Tychy 32 koło 100 6 Mozarta
3 5 Andrychów Andrychów 88 silnik 15 7 Bacha
4 6 Fiat Bielsko 59 błotnik 400 6 Mozarta
4 6 Fiat Bielsko 21 prÄ…dnica 50 7 Bacha
5 3 Dewoo W-wa 53 gaznik 200 5 Chopina
5 3 Dewoo W-wa 57 wał 30 5 Chopina
6 3 Dewoo W-wa 59 błotnik 20 6 Mozarta
" Relacja jest w pierwszej postaci normalnej (1NF, 1 Normal Form),
jeżeli wartości atrybutów są elementarne, tzn. są to wartości
określonego typu, a nie zbiory wartości. Pierwsza postać normalna
jest konieczna, aby tabelę można było nazwać relacją.
" Większość systemów baz danych nie ma możliwości zbudowania tabel
nie będących w pierwszej postaci normalnej.
5
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Pierwsza postać normalna (1NF) slajd 2
Nr Id Nazwa Adres
Id części Nazwa części Ilość Magazyn Adres magazynu
zam dostawcy dostawcy dostawcy
1 3 Dewoo W-wa 53 gaznik 100 5 Chopina
1 3 Dewoo W-wa 57 wał 50 5 Chopina
1 3 Dewoo W-wa 59 błotnik 500 6 Mozarta
2 4 Fiat Tychy 54 gaznik 500 5 Chopina
2 4 Fiat Tychy 32 koło 100 6 Mozarta
3 5 Andrychów Andrychów 88 silnik 15 7 Bacha
4 6 Fiat Bielsko 59 błotnik 400 6 Mozarta
4 6 Fiat Bielsko 21 prÄ…dnica 50 7 Bacha
5 3 Dewoo W-wa 53 gaznik 200 5 Chopina
5 3 Dewoo W-wa 57 wał 30 5 Chopina
6 3 Dewoo W-wa 59 błotnik 20 6 Mozarta
" Cechy powyższej relacji ZAMOWIENIA:
Redundancja problem zapewnienia spójności danych
Anomalia wprowadzania danych nie można wprowadzić danych nowego
dostawcy dopóki nie dostarcza on części.
Anomalia usuwania danych usunięcie części silnik spowoduje usunięcie
bezpowrotne danych o dostawcy Andrychów .
Anomalia uaktualniania danych - zmiana adresu konkretnego dostawcy musi
być wykonana w każdej krotce jego dotyczącej.
6
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Pierwsza postać normalna (1NF) slajd 3
Klucz: {Nr zam, Id części}
Nr Id Nazwa Adres
Id części Nazwa części Ilośc Magazyn Adres magazynu
zam dostawcy dostawcy dostawcy
1 3 Dewoo W-wa 53 gaznik 100 5 Chopina
1 3 Dewoo W-wa 57 wał 50 5 Chopina
1 3 Dewoo W-wa 59 błotnik 500 6 Mozarta
2 4 Fiat Tychy 54 gaznik 500 5 Chopina
2 4 Fiat Tychy 32 koło 100 6 Mozarta
3 5 Andrychów Andrychów 88 silnik 15 7 Bacha
4 6 Fiat Bielsko 59 błotnik 400 6 Mozarta
4 6 Fiat Bielsko 21 prÄ…dnica 50 7 Bacha
5 3 Dewoo W-wa 53 gaznik 200 5 Chopina
5 3 Dewoo W-wa 57 wał 30 5 Chopina
6 3 Dewoo W-wa 59 błotnik 20 6 Mozarta
" Definicja: Relacja jest w pierwszej postaci normalnej (1NF) wtedy i tylko
wtedy, gdy każdy atrybut niekluczowy jest funkcjonalnie zależny od
klucza głównego.
Kluczem relacji nazywamy taki zbiór atrybutów, który jednoznacznie
identyfikuje każdą krotkę relacji. Klucze: prosty, złożony, potencjalny. Klucz
główny (primary key).
B jest funkcjonalnie zależny od A (A Þð B), jeÅ›li dowolnej wartoÅ›ci a atrybutu A
odpowiada nie więcej niż jedna wartość b atrybutu B.
7
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Zależności funkcyjne definicje slajd 1
" Uniwersalny schemat relacji R = {A1, A2, ..., An} jest zbiorem atrybutów
tworzÄ…cych relacjÄ™.
" Zbiór identyfikujÄ…cy relacji R = {A1, A2, ..., An} to zbiór atrybutów S Íð R,
który jednoznacznie identyfikuje wszystkie krotki relacji o schemacie R.
Inaczej mówiąc, w żadnej relacji o schemacie R nie mogą istnieć dwie krotki
t1 i t2 takie, że t1[S] = t2[S].
" Klucz K schematu relacji R to minimalny zbiór identyfikujący, tzn. taki, że
nie istnieje K Ìð K bÄ™dÄ…ce zbiorem identyfikujÄ…cym schematu R.
W uproszczeniu klucz stanowi więc kolumnę lub kilka kolumn tabeli,
pozwalajÄ…cych na jednoznaczne zidentyfikowanie rekordu. Klucze dzielÄ… siÄ™
na klucze proste i złożone. Klucz nazywamy kluczem prostym, jeżeli zbiór
atrybutów (kolumn) wchodzących w jego skład jest zbiorem
jednoelementowym; w przeciwnym wypadku mamy do czynienia z kluczem
złożonym. Najczęściej w relacji można wyróżnić wiele kluczy, które
nazywamy kluczami potencjalnymi. Dla każdego wiersza wartość atrybutu
będącego kluczem potencjalnym musi być inna i nie może on przyjmować
wartości pustych.
8
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Zależności funkcyjne definicje slajd 2
" Ponieważ dana tabela może mieć tylko jeden klucz główny, to w sytuacjach
gdy więcej atrybutów spełnia cechy klucza potencjalnego wybieramy jeden
klucz spośród kluczy potencjalnych i nazywamy go kluczem głównym
(primary key), natomiast pozostałe kluczami drugorzędnymi (secondary
key).
" Atrybut relacji jest podstawowy, jeżeli należy do dowolnego z kluczy tej
relacji.
" Atrybut relacji nazywa się wtórnym, jeżeli nie należy do żadnego z kluczy
tej relacji.
" Atrybut B relacji R jest funkcjonalnie zależny od atrybutu A tej relacji (A
identyfikuje B): (A Þð B), jeÅ›li dowolnej wartoÅ›ci a atrybutu A odpowiada
nie więcej niż jedna wartość b atrybutu B.
" Atrybut B jest w pełni funkcjonalnie zależny od zbioru atrybutów X w
schemacie R, jeżeli X Þð B i nie istnieje podzbiór taki, że X Þð B.
" Zbiór atrybutów Y jest częściowo zależny od zbioru atrybutów X w
schemacie R, jeżeli X Þð Y i istnieje podzbiór taki, że X Þð Y.
9
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Zależności funkcyjne definicje slajd 3
" Niech X, Y i Z będą trzema rozłącznymi podzbiorami atrybutów danej
relacji. Podzbiór atrybutów Z jest przechodnio funkcjonalnie zależny od
podzbioru atrybutów X, jeśli podzbiór atrybutów Z jest funkcjonalnie
zależny od podzbioru atrybutów Y i podzbiór atrybutów Y jest funkcjonalnie
zależny od podzbioru atrybutów X, natomiast podzbiór atrybutów X nie jest
funkcjonalnie zależny od Y i podzbiór atrybutów Y nie jest funkcjonalnie
zależny od Z.
" Podzbiór atrybutów Y jest wielowartościowo funkcjonalnie zależny od
podzbioru atrybutów X w schemacie R, jeżeli dla dowolnej relacji r w
schemacie R i dla dowolnej pary krotek t1 i t2 z relacji r takich, że
t1[X] = t2[X] istnieje taka para krotek s1 i s2 w relacji r, że:
s1[X] = s2[X] = t1[X] = t2[X]
s1[Y] = t1[Y] i s1[R X Y] = t2[R X Y] oraz
s2[Y] = t2[Y] i s2[R X Y] = t1[R X Y]
Występowanie krotek spełniających wymienione wyżej warunki wiąże się
najczęściej z niezależnością jednego zbioru atrybutów od drugiego.
10
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Zależności funkcjonalne w relacji ZAMOWIENIA
Nr zam
Nr Id Nazwa Adres
Id części Nazwa części Ilośc Magazyn Adres magazynu
zam dostawcy dostawcy dostawcy
Id dostawcy
1 3 Dewoo W-wa 53 gaznik 100 5 Chopina
1 3 Dewoo W-wa 57 wał 50 5 Chopina
1 3 Dewoo W-wa 59 błotnik 500 6 Mozarta
Nazwa dostawcy
2 4 Fiat Tychy 54 gaznik 500 5 Chopina
2 4 Fiat Tychy 32 koło 100 6 Mozarta
3 5 Andrychów Andrychów 88 silnik 15 7 Bacha
4 6 Fiat Bielsko 59 błotnik 400 6 Mozarta
Adres dostawcy
4 6 Fiat Bielsko 21 prÄ…dnica 50 7 Bacha
Klucz: {Nr zam, Id 5części}
5 3 Dewoo W-wa 53 gaznik 200 Chopina
5 3 Dewoo W-wa 57 wał 30 5 Chopina
Id części
6 3 Dewoo W-wa 59 błotnik 20 6 Mozarta
" Atrybuty Nazwa dostawcy i Adres dostawcy sÄ… przechodnio
Nazwa części
funkcjonalnie zależne od atrybutu nr zamówienia , ponieważ atrybut
Id dostawcy jest funkcjonalnie zależny od atrybutu Nr zamówienia
i atrybuty Nazwa dostawcy oraz Adres dostawcy sÄ… funkcjonalnie
ilość
zależne od Id dostawcy .
" Jednocześnie Id dostawcy nie jest funkcjonalnie zależny od Nazwy
dostawcy (mogą być różni dostawcy o tej samej nazwie) ani od
magazyn
Adresu dostawcy (dwóch dostawców może mieć ten sam adres).
Adres magazynu
11
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Proces normalizacji - własności
Proces normalizacji relacji to proces, podczas którego schematy relacji
posiadające pewne niepożądane cechy są dekomponowane na mniejsze
schematy relacji o pożądanych własnościach. Proces normalizacji musi
posiadać trzy dodatkowe własności:
" Własność zachowania atrybutów - żaden atrybut nie zostanie zagubiony w
trakcie procesu normalizacji.
" Własność zachowania informacji - dekompozycja relacji nie prowadzi do
utraty informacji, tj. łącząc zdekomponowane relacje możemy odtworzyć
oryginalnÄ… relacjÄ™.
" Własność zachowania zależności - wszystkie zależności funkcyjne są
reprezentowane w pojedynczych schematach relacji.
Proces normalizacji schematu relacji polega na sprawdzeniu czy dany schemat
jest w odpowiedniej postaci normalnej, jeżeli nie wówczas następuje
dekompozycja schematu relacji na mniejsze schematy relacji. Ponownie,
weryfikowana jest postać normalna otrzymanych schematów relacji. Jeżeli nie
spełniają one zadanej postaci normalnej to proces dekompozycji jest
kontynuowany dopóki otrzymane schematy relacji nie będą w odpowiedniej
postaci normalnej.
12
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Druga postać normalna (2NF) slajd 1
Pełna zależność funkcjonalna:
" Atrybut B relacji jest w pełni zależny od zbioru atrybutów X jeśli jest
funkcjonalnie zależny od X ale nie jest zależny od żadnego jego podzbioru.
Druga postać normalna (2NF):
" Relacja jest w drugiej postaci normalnej, jeśli
1. jest w pierwszej postaci normalnej i
2. każdy atrybut tej relacji nie wchodzący w skład klucza (atrybut wtórny)
jest w pełni funkcjonalnie zależny od wszystkich kluczy potencjalnych
(jest po prostu w pełni zależny od klucza lub inaczej, nie jest częściowo
zależny od klucza).
13
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Druga postać normalna (2NF) slajd 2
Klucz: {Nr zam, Id części}
Nr zam
Nr Id Nazwa Adres
Id części Nazwa części Ilośc Magazyn Adres magazynu
zam dostawcy dostawcy dostawcy
Id dostawcy
1 3 Dewoo W-wa 53 gaznik 100 5 Chopina
1 3 Dewoo W-wa 57 wał 50 5 Chopina
1 3 Dewoo W-wa 59 błotnik 500 6 Mozarta
Nazwa dostawcy
2 4 Fiat Tychy 54 gaznik 500 5 Chopina
2 4 Fiat Tychy 32 koło 100 6 Mozarta
3 5 Andrychów Andrychów 88 silnik 15 7 Bacha
4 6 Fiat Bielsko 59 błotnik 400 6 Mozarta
Adres dostawcy
4 6 Fiat Bielsko 21 prÄ…dnica 50 7 Bacha
5 3 Dewoo W-wa 53 gaznik 200 5 Chopina
5 3 Dewoo W-wa 57 wał 30 5 Chopina
Id części
6 3 Dewoo W-wa 59 błotnik 20 6 Mozarta
Relacja Zamówienie nie jest w drugiej
Nazwa części
postaci normalnej, ponieważ atrybuty Id
dostawcy , Nazwa dostawcy , Adres
ilość
dostawcy i Nazwa części nie są w pełni
funkcjonalnie zależne od jednego klucza
magazyn
potencjalnego pary ( Nr zamówienia , Id
części ).
Adres magazynu
14
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Druga postać normalna (2NF) slajd 3
Nr zam Id części Ilośc
Id Nazwa Adres
1 53 100
Nr zam
dostawcy dostawcy dostawcy 1 57 50
1 59 500
1 3 Dewoo W-wa
2 54 500
2 4 Fiat Tychy
2 32 100
3 5 Andrychów Andrychów 3 88 15
4 59 400
4 6 Fiat Bielsko
4 21 50
5 3 Dewoo W-wa
5 53 200
6 3 Dewoo W-wa 5 57 30
6 59 20
dostawca na zamówieniu
dostawy części
Adres
Id części Nazwa części Magazyn magazyn
u
53 gaznik 5 Chopina
57 wał 5 Chopina
59 błotnik 6 Mozarta części w magazynie
54 gaznik 5 Chopina
32 koło 6 Mozarta
88 silnik 7 Bacha
59 błotnik 6 Mozarta
21 prÄ…dnica 7 Bacha
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Druga postać normalna (2NF) slajd 4
Przykład: tabela dostawca na zamówieniu
Nr zam Id części Ilośc
Id Nazwa Adres
1 53 100
Nr zam
Redundancja: (Id dostawcy, Nazwa dostawcy,
dostawcy dostawcy dostawcy 1 57 50
1 59 500
1 3 Dewoo W-wa Adres dostawcy)
2 54 500
2 4 Fiat Tychy
Anomalie:
2 32 100
3 5 Andrychów Andrychów 3 88 15
" przy modyfikacji danych np. zmiana
4 59 400
4 6 Fiat Bielsko
4 21 50
adresu firmy Dewoo
5 3 Dewoo W-wa
5 53 200
6 3 Dewoo W-wa 5 57 " przy wstawianiu nie można zarejestrować
30
6 59 20
dostawcy dopóki nie będzie zamówienia
dostawca na zamówieniu
" przy usuwaniu usunięcie zamówienia nr 3
dostawy części
spowoduje usunięcie bezpowrotne
dostawcy Andrychów
Adres
Problemy: zapewnienie spójności bazy -
Id części Nazwa części Magazyn magazyn
u
kaskadowe usuwanie:
53 gaznik 5 Chopina
57 wał 5 Chopina " usunięcie zamówienia w dostawca na
59 błotnik 6 Mozarta części w magazynie
zamówieniu powinno zaktualizować
54 gaznik 5 Chopina
32 koło 6 Mozarta
relację dostawy części
88 silnik 7 Bacha
" usunięcie krotki w relacji dostawy części
59 błotnik 6 Mozarta
21 prÄ…dnica 7 Bacha
powinno zaktualizować relację dostawca
na zamówieniu
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Trzecia postać normalna (3NF) slajd 1
" Relacja jest w trzeciej postaci normalnej jeśli:
jest w drugiej postaci normalnej i
każdy jej atrybut nie wchodzący w skład klucza potencjalnego nie jest
przechodnio zależny od żadnego potencjalnego klucza tej relacji
(inaczej mówiąc każdy atrybut musi być w pełni zależny od klucza głównego i
niezależny od pozostałych atrybutów)
B
A
A
B
C
B
C
Równoważne zależności
funkcjonalne w trzeciej postaci
Przechodnia zależność normalnej
funkcjonalna
17
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Trzecia postać normalna (3NF) slajd 2
Zamówienie-dostawcy
Id
Nr zam Magazyny
dostawcy
Magazyn Adres magazynu
1 3
5 Chopina
2 4
Części
3 5 6 Mozarta
Id części Nazwa części
4 6
7 Bacha
21 prÄ…dnica
5 3
32 koło
6 3
53 gaznik
54 gaznik
57 wał
59 błotnik
88 silnik
Części w magazynie
Id części Magazyn
21 7
Dostawcy
32 6
Id Nazwa Adres
53 5
dostawcy dostawcy dostawcy
54 5
3 Dewoo W-wa
4 Fiat Tychy 57 5
5 Andrychów Andrychów 59 6
6 Fiat Bielsko
88 7
18
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Co zostało zrobione
UWAGI:
1. Proces normalizacji nie jest jednoznaczny. Może
być wspomagany komputerowo.
2. Nie zawsze, z punktu widzenia efektywności
przetwarzania posiadanie 2PN lub 3PN jest
3 NF
korzystne.
" Dostawcy
2 NF
" Części
" Dostawca na
" Magazyny
zamówieniu
" Części w
1 NF
" Części w
magazynie
magazynie
" Zamówienie-
" ZAMOWIENIA
" Dostawy
dostawcy
części
Dane
nieuporzÄ…dko
wane
" ???
19
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Postać normalna Boyce a-Codda (BCNF) slajd 1
" Przykład: relacja GRUNTY
Relacja jest w 1NF.
Dwa klucze:
Relacja nie jest w 2NF:
" Klucz1: Id_Własności,
" Stopa_podatku jest
" Klucz2: {Województwo, Id_gruntu}
częściowo zależna od
Zależności:
Klucza2 (zależność 3)
" (1) oraz (2) są zależnościami od klucza
" (3) Stopa_podatku zależy od Województwo
" (4) Województwo zależy od Obszar
" (5) Cena zależy od Obszar
20
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Postać normalna Boyce a-Codda (BCNF) slajd 2
Grunty
Grunty-2
Grunty-1
Stopa_podatk
u
" Dekomponujemy GRUNTY na:
Grunty-1 jest w 2NF ale nie jest w 3NF (ze wzglÄ™du na Obszar Þð Cena)
Grunty-2 jest w 2NF oraz w 3NF
21
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Postać normalna Boyce a-Codda (BCNF) slajd 3
Grunty
Grunty-1
Grunty-2
Stopa_podatku
" Relacja GRUNTY została zdekomponowana do relacji w 3NF
" Problem: zależność Obszar Þð Województwo może powodować dużą redundancjÄ™ (np. w woj.
małopolskim działki standardowo 1, 2, 3 ha, zaś w woj. podkarpackim 5, 10, 20, 30 ha. Jeśli w
relacji GRUNTY informacja o zależności między województwem a obszarem wystąpiła w
tysiącach krotek, to po dekompozycji przeniosła się do relacji Grunty-1A).
22
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Postać normalna Boyce a-Codda (BCNF) slajd 4
Grunty-1A-1 Grunty-1A-2
Id_Własności Id_Gruntu Obszar Obszar Województwo
" Relacja jest w postaci BCNF gdy każdy atrybut relacji zależy
funkcjonalnie tylko od klucza podstawowego.
" W tym przypadku, dla zmniejszenia redundancji należy
zdekomponować relację Grunty-1A na dwie relacje:
Grunty-1A-1
Grunty-1A-2
23
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
3NF z zależnościami wielowartościowymi
" Schemat relacji jest 3NF
" Kluczem relacji jest {Nazwisko, J prog,
Nazwisko J prog J obcy
J obcy} (klucz złożony)
Kowalski Fortran Angielski
" Problem: modyfikacja zależna od Kowalski Fortran Francuski
Kowalski Basic Angielski
stanu bazy danych:
Kowalski Basic Francuski
" Załóżmy, że Nowak nauczył się języka
Kowalski Pascal Angielski
Kowalski Pascal Francuski
PHP oraz języka francuskiego.
Ciastoń C Angielski
Wprowadzenie tej informacji do
Ciastoń C Włoski
relacji wymaga wprowadzenia aż 6
Ciastoń C Hiszpański
nowych krotek: Ciastoń Pascal Angielski
Ciastoń Pascal Włoski
(Nowak, PHP, Francuski)
Ciastoń Pascal Hiszpański
(Nowak, Fortran, Francuski)
Nowak Fortran Angielski
(Nowak, C++, Francuski)
Nowak Fortran Rosyjski
(Nowak, PHP, Angielski)
Nowak C++ Angielski
(Nowak, PHP, Rosyjski) Nowak C++ Rosyjski
" Problemy z pielęgnacją relacji przez
nieinformatyka
24
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
3NF z zależnościami wielowartościowymi
Nazwisko J prog
Nazwisko J prog J obcy
Kowalski Fortran
Kowalski Fortran Angielski
Kowalski Basic
Kowalski Fortran Francuski
Kowalski Pascal
Kowalski Basic Angielski
Ciastoń C
Kowalski Basic Francuski
Ciastoń Pascal
Kowalski Pascal Angielski
Nowak Fortran
Kowalski Pascal Francuski
Nowak C++
Ciastoń C Angielski
dekompozycja
Ciastoń C Włoski
Nazwisko J obcy
Ciastoń C Hiszpański
Kowalski Angielski
Ciastoń Pascal Angielski
Kowalski Francuski
Ciastoń Pascal Włoski
Ciastoń Pascal Hiszpański Ciastoń Angielski
Nowak Fortran Angielski
Ciastoń Włoski
Nowak Fortran Rosyjski
Ciastoń Hiszpański
Nowak C++ Angielski
Nowak Angielski
Nowak C++ Rosyjski
Nowak Rosyjski
Wprowadzenie informacji Nowak nauczył się PHP oraz francuskiego
wymaga tylko wprowadzenia po jednej krotce do każdej z relacji.
25
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Zależności wielowartościowe 4NF
" Zależności wielowartościowe są konsekwencją wymagań pierwszej postaci
normalnej, która nie dopuszcza, aby krotki zawierały atrybuty
wielowartościowe. Zależność wielowartościowa jest własnością semantyczną
schematu relacji.
" Zależność wielowartościowa występuje w relacji nie dlatego, że na skutek
zbiegu okoliczności tak ułożyły się wartości krotek, lecz występuje ona dla
dowolnej relacji dlatego, że odzwierciedla ona ogólną prawidłowość
modelowanej rzeczywistości.
Nazwisko ->> J prog
Nazwisko ->> J obcy
" Zależności wielowartościowe występują rzadziej niż inne.
" Relacja jest w czwartej postaci normalnej (4NF), gdy jest w trzeciej
postaci normalnej i wielowartościowa zależność podzbioru (atrybutów) Y od
X pociąga za sobą funkcjonalną zależność wszystkich atrybutów tej relacji
od X.
26
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
4NF
Dostawy
Czwarta postać normalna,
Hurtownia Producent Wyrób
bo występuje tylko
Centr Opel rozrzÄ…d
wielowartościowa
Centr Opel wałek
zależność od klucza
Centr Ford rozrzÄ…d
Centr Ford wałek
{Hurtownia}
Centr Star sk. bieg.
Doda Opel rozrzÄ…d
Doda Ford rozrzÄ…d
Relacja jest w piÄ…tej postaci
Doda Star sk. bieg.
Miks Fiat koło normalnej (5NF), gdy jest w
Miks Fiat hamulec
czwartej postaci normalnej i gdy
Miks Star koło
zależność połączeniowa (w
Miks Star hamulec
przypadku jej występowania) wynika
z zależności od klucza.
Relacja w 4NF jest w 5NF, jeżeli
nie istnieje jej rozkład
odwracalny na zbiór mniejszych
tabel.
27
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
5NF
Hurtownia Producent Wyrób
Hurtownia Producent
Centr Opel rozrzÄ…d
4NF
Centr Opel wałek Centr Opel
Centr Ford rozrzÄ…d
Centr Ford
Centr Ford wałek
Centr Star
Centr Star sk. bieg.
Doda Opel
Doda Opel rozrzÄ…d
Doda Ford
Doda Ford rozrzÄ…d
Doda Star sk. bieg. Doda Star
Miks Fiat koło
Miks Fiat
Miks Fiat hamulec
Miks Star
Miks Star koło
Miks Star hamulec
Producent Wyrób
Hurtownia Wyrób
Fiat koło
Centr rozrzÄ…d
Fiat hamulec
Centr wałek
Ford rozrzÄ…d
Centr sk. bieg.
Ford wałek
Doda rozrzÄ…d
Opel rozrzÄ…d
Doda sk. bieg.
Opel wałek
Miks koło
Star sk. bieg.
Miks hamulec
Star koło
Star hamulec
5NF
28
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
dealer firma pojazd
Punkty
sprzedaży
Jones Ford Samochód_osobow
y
Jones Vauxhall Furgonetka
Smith Ford Furgonetka
Smith Vauxhall Samochód_osobow
y
" Tabela w czwartej postaci normalnej jest w piÄ…tej postaci normalnej,
jeżeli nie istnieje jej rozkład odwracalny na zbiór mniejszych tabel.
" W podanym przykładzie nie można dokonać rozkładu struktury,
ponieważ, chociaż dealer Jones sprzedaje samochody osobowe firmy
Ford i furgonetki firmy Vauxhall, nie sprzedaje furgonetek firmy Ford
ani samochodów osobowych firmy Vauxhall. Piąta postać normalna
dotyczy powiązanych między sobą zależności wielowartościowych,
nazywanych też zależnościami złączeń.
29
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Hierarchia zależności poziomów normalizacji
30
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Etapy normalizacji - ściąga
Przysięga normalizacji:
1. Bez powtórzeń
2. Pola zależą od klucza
3. Od całego klucza
4. I niczego innego, tylko klucza
5. Tak mi dopomóż Codd!
31
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Denormalizacja
" Dotyczy przede wszystkim baz danych tworzonych na potrzeby tzw.
HURTOWNI DANYCH
" Czym charakteryzujÄ… siÄ™ hurtownie?
- Statyczność
- Archiwalność
- Tematyczność
- Analityczność
- Schematy gwiazdziste:
TABELE FAKTÓW I WYMIARÓW
FAKTY: WYMIARY:
" Dochód " Produkt
" Sprzedaż " Rynek
" Dostawy " Czas
32
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
SCHEMAT GWIAyDZISTY
Id okresu
Opis okresu
Kwartał
w
Rok
Id produktu
Wymiar: okres
Opis produktu
Id okresu
Marka
w
Klucz:
Id produktu
Rozmiar
Id rynku
Wymiar: produkt
Jednostki
Koszt
Id rynku
F
Rabaty
Opis rynku
W - wymiar
Sektor
w
Fakty: sprzedaż
Region
F - fakty
Wymiar: rynek
PRZYKAADY
34
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Przykład 1 (slajd 1)
" Baza danych sklepu
Postać nieznormalizowana, należy wykonać:
1. Usunąć atrybuty złożone
2. Usunąć atrybuty wielowartościowe
3. Usunąć powtarzające się wiersze
4. Ustalić klucze
35
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Przykład 1 (slajd 2)
Baza w 1NF
" relacja Rachunki(id_za, data_za, id_to, nazwa, ilosc, cena, id_pr, nazw_pr)
" klucz: {id_za, id_to}
" zależności funkcyjne:
Nie jest w 2NF, bo:
id_za Ä…ð data_za, id_pr
" jest klucz złożony
id_pr Ä…ð nazw_pr
" są atrybuty niekluczowe zależne
od części klucza, a nie od całości
id_to Ä…ð nazwa, cena
{id_za, id_to} Ä…ð ilosc
36
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Przykład 1 (slajd 3)
" Przejście z 1NF do 2NF
Identyfikacja zależności funkcyjnych
Ustalenie wszystkich kluczy, podział atrybutów na kluczowe i niekluczowe
Sprawdzenie, czy są atrybuty niekluczowe zależne od fragmentu klucza.
Jeśli tak dekompozycja relacji
" Relacje po dekompozycji:
Zamowienia( id_za, data_za, id_pr, nazw_pr)
Towary( id_to, nazwa, cena )
Pozycje( id_za, id_to, ilosc )
Nie jest w 3NF, bo:
" sÄ… atrybuty niekluczowe
zależne tranzytywnie od
klucza
id_za Ä…ð id_pr Ä…ð nazw_pr
37
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Przykład 1 (slajd 4)
" Przejście z 2NF do 3NF
Sprawdzenie (dla każdej relacji), czy są atrybuty niekluczowe zależne
tranzytywnie od klucza.
Jeśli tak, dekompozycja relacji
" Relacje po dekompozycji
Zamowienia( id_za, data_za, id_pr)
Pracownicy( id_pr, nazw_pr)
Towary( id_to, nazwa, cena )
Pozycje( id_za, id_to, ilosc )
Jest w 3NF i jest w BCNF, bo:
" nie ma zależności nie od
klucza
38
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Przykład 1 (slajd 5)
" Przejście z 3NF do BCNF
Sprawdzenie, czy są zależności nie od klucza? Jeśli tak, to próba
dekompozycji.
" Relacje są w BCNF. Wszystkie atrybuty zależą od klucza
id_za Ä…ð data_za
id_za Ä…ð id_pr
id_pr Ä…ð nazw_pr
id_to Ä…ð nazwa
id_to Ä…ð cena
{id_za, id_to} Ä…ð ilosc
" UWAGA:
BCNF eliminuje wszystkie
anomalie (redundancje)
ale może nie zachowywać
oryginalnych zależności
funkcyjnych
39
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Przykład 2 (slajd 1)
" Baza danych dla przychodni
" Postać nieznormalizowana
40
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Przykład 2 (slajd 2)
" Przekształcenie do 1NF
Relacja: Przychodnia(id, data, pacjent, id_lek, nazw_lek, typ_bad, id_lab,
nazw_lab)
Klucze: {id, typ_bad}
Zależności:
" id Ä…ð data, pacjent, id_lek
" id_lek Ä…ð nazw_lek
" {id, typ_bad} Ä…ð id_lab
" id_lab Ä…ð typ_bad, nazw_lab
" Cie jest w 2NF (jest klucz złożony, data, pacjent, id_lek zależą od części
klucza a nie od całości
41
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Przykład 2 (slajd 3)
" Przekształcenie do 2NF
" Relacje:
Wizyty(id, data, pacjent, id_lek, nazw_lek)
Badania(id, typ_bad, id_lab, nazw_lab)
" Nie jest w 3NF, bo id Ä…ð id_lek Ä…ð nazw_lek oraz
{id, typ_bad} Ä…ð id_lab Ä…ð nazw_lab
42
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Przykład 2 (slajd 4)
" Przekształcenie do 3NF
" Relacje:
Wizyty(id, data, pacjent, id_lek)
Lekarze(id_lek, nazw_lek)
Badania(id, typ_bad, id_lab)
Laboranci(id_lab, nazw_lab)
" Nie jest BCNF, ponieważ dla relacji Badani mamy zależności:
{id, typ_bad} Ä…ð id_lab
id_lab Ä…ð typ_bad
id_lab nie jest kluczem,
a typ_bad od niego zależy
43
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Przykład 2 (slajd 5)
" Przekształcenie do 4NF
" Relacje:
Wizyty(id, data, pacjent, id_lek)
Lekarze(id_lek, nazw_lek)
Badania(id, id_lab)
Laboranci(id_lab, nazw_lab, typ_bad)
" Wszystkie atrybuty zależą tylko od kluczy
44
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Zrób to sam
" Przeprowadz proces normalizacji powyższej tabeli.
45
2013-01-10 Bazy danych / Krzysztof Molenda / WSEI w Krakowie
Wyszukiwarka
Podobne podstrony:
BazyDanych KM przeglad SQL v204 Wykład 4 Charakterystyka rozkładu normalnegoidH19Wykład KM 13Wykład KM 7wyklad 1 i 2 istota i znaczenie normalizacjiWykład KM 10Sieci komputerowe wyklady dr FurtakWykład 05 Opadanie i fluidyzacjaNormalizer Formwięcej podobnych podstron