1
Rozdział 13
Normalizacja
© Pearson Education Limited 1995, 2005
Chapter 13 - Objectives
The purpose of normalization.
How normalization can be used when
designing a relational database.
The potential problems associated with
redundant data in base relations.
The concept of functional dependency, which
describes the relationship between
attributes.
The characteristics of functional
dependencies used in normalization.
2
© Pearson Education Limited 1995, 2005
Chapter 13 - Objectives
How to identify functional dependencies for
a given relation.
How functional dependencies identify the
primary key for a relation.
How to undertake the process of
normalization.
How normalization uses functional
dependencies to group attributes into
relations that are in a known normal form.
3
© Pearson Education Limited 1995, 2005
Chapter 13 - Objectives
How to identify the most commonly used
normal forms, namely First Normal Form
(1NF), Second Normal Form (2NF), and Third
Normal Form (3NF).
The problems associated with relations that
break the rules of 1NF, 2NF, or 3NF.
How to represent attributes shown on a form
as 3NF relations using normalization.
4
© Pearson Education Limited 1995, 2005
Cel normalizacji
Normalizacja to technika wyznaczania zbioru
relacji o pożądanych cechach na podstawie
wymagań względem danych przedsiębiorstwa.
5
© Pearson Education Limited 1995, 2005
Cel normalizacji
Cechy charakterystyczne odpowiedniego
zbioru relacji to:
minimalna liczba atrybutów niezbędnych do
spełnienia wymagań danych danego
przedsiębiorstwa;
atrybuty blisko ze sobą logicznie związane są w tej
samej relacji;
minimalna redundancja, wyrażająca się tym, że
każdy atrybut występuje tylko raz, z wyjątkiem
tych, które stanowią część lub całość klucza
obcego.
6
© Pearson Education Limited 1995, 2005
2
Cel normalizacji
Korzystanie z odpowiedniego zbioru relacji
sprawia, że baza danych:
Cechuje się łatwością dostępu do danych i ich
aktualizacji;
Zajmuje minimalną objętość pamięci komputera.
7
© Pearson Education Limited 1995, 2005
8
© Pearson Education Limited 1995, 2005
Redundancja danych i anomalie
aktualizacji
Główne zadanie w projektowaniu relacyjnej
bazy danych to pogrupowanie atrybutMajor
aim ów w relacje w sposób, który minimalizuje
redundancję danych.
9
© Pearson Education Limited 1995, 2005
Redundancja danych i anomalie
aktualizacji
Potencjalne korzyści dla bazy danych to:
Aktualizację danych zapisanych w bazie danych
można przeprowadzić wykonując minimalną liczbę
operacji, co zmniejsza możliwość wystąpienia
niespójności danych.
Zmniejszenie rozmiaru plików z danymi pozwala
na minimalizację kosztów.
10
© Pearson Education Limited 1995, 2005
Redundancja danych i anomalie
aktualizacji
Problemy związane z redundancją danych
ilustruje porównanie relacji Pracownicy
(Staff) i Biura (Branch) z relacją
PracownicyBiura (StaffBranch).
11
© Pearson Education Limited 1995, 2005
Redundancja danych i anomalie
aktualizacji
12
© Pearson Education Limited 1995, 2005
3
Redundancja danych i anomalie
aktualizacji
Relacja StaffBranch zawiera redundantne
dane; informacje o biurze są powtarzane dla
każdego pracownika.
Dla odmiany, w relacji Branch dane dotyczące
każdego biura pojawiają się tylko raz, a jedyną
informacją powtarzającą się w relacji Staff jest
tylko numer biura wskazujący miejsce pracy
poszczególnych pracowników.
13
© Pearson Education Limited 1995, 2005
Redundancja danych i anomalie
aktualizacji
Relacje zawierające redundantne dane mogą
potencjalnie podlegać anomaliom aktualizacji.
Typy anomalii:
Anomalie wstawiania
Anomalie usuwania
Anomalie modyfikacji
14
© Pearson Education Limited 1995, 2005
Własności bezstratnego złączenia
i zachowania zależności
Istotnymi cechami są:
Bezstratne złączenie pozwala na odtworzenie
każdego stanu oryginalnej relacji z odpowiednich
stanów mniejszych relacji.
Zachowanie zależności gwarantuje, że więzy na
oryginalnej relacji mogą być utrzymane przez
proste wymuszenie pewnych więzów na każdej z
mniejszych relacji.
15
© Pearson Education Limited 1995, 2005
Zależności funkcyjne
Istotne pojęcie związane z normalizacją.
Zależność funkcyjna opisuje związek pomiędzy
atrybutami.
Na przykład, jeżeli A i B są atrybutami relacji R,
to B jest funkcyjnie zależny od A (oznaczane
przez A B), jeżeli każda wartość A w R jest
powiązana z dokładnie jedną wartością B (A i
B mogą składać się z jednego lub z większej
liczby atrybutów).
16
© Pearson Education Limited 1995, 2005
Charakterystyki zależności
funkcyjnych
Zależność funkcyjna jest własnością
znaczenia lub semantyki atrybutów w relacji.
Diagram zależności funkcyjnej.
Wyznacznik określa atrybut lub grupę
atrybutów, które występują po lewej stronie
strzałki oznaczającej zależność funkcyjną.
17
© Pearson Education Limited 1995, 2005
Przykład zależności funkcyjnej
18
© Pearson Education Limited 1995, 2005
4
Przykład zależności funkcyjnej
zawsze prawdziwej
Z danych w tabeli wynika,
że prawdziwe są
następujące zależności:
staffNo → sName
sName → staffNo
19
© Pearson Education Limited 1995, 2005
Rozważmy wartości atrybutów staffNo i sName
relacji Staff.
Przykład zależności funkcyjnej
zawsze prawdziwej
Zauważyć jednak trzeba, że jedyną zależnością
funkcyjną, która pozostaje prawdziwa dla
wszystkich możliwych wartości atrybutów
staffNo i sName relacji Staff jest:
staffNo → sName
20
© Pearson Education Limited 1995, 2005
Charakterystyki zależności
funkcyjnych
Wyznaczniki powinny mieć minimalną liczbę
atrybutów niezbędnych do określenia zależności
funkcyjnej atrybutu(ów) po prawej stronie.
To wymaganie nosi nazwę pełnej zależności
funkcyjnej:
Atrybuty B są w pełni zależne funkcyjnie od
atrybutów A, jeśli B jest funkcyjnie zależny od A, ale
nie jest zależny od żadnego właściwego podzbioru A.
21
© Pearson Education Limited 1995, 2005
Charakterystyki zależności
funkcyjnych
Pełna zależność funkcyjna oznacza, że jeżeli A i
B są atrybutami relacji, to B jest w pełni
funkcyjnie zależne od A, jeżeli B jest funkcyjnie
zależne od A, ale nie od żadnego podzbioru A.
22
© Pearson Education Limited 1995, 2005
Przykład częściowej zależności
funkcyjnej
W relacji Staff występuje następująca
zależność funkcyjna:
staffNo, sName → branchNo
Poprawne jest stwierdzenie, że każda para
(staffNo, sName) wyznacza jednoznacznie
wartość branchNo.
Tym niemniej branchNo jest także funkcyjnie
zależne od podzbioru (staffNo, sName), a
mianowicie staffNo.
23
© Pearson Education Limited 1995, 2005
Główne cechy zależności
funkcyjnych
Związek pomiędzy atrybutami z lewej i prawej
strony zależności jest jednoznaczny.
Zależność zachodzi zawsze.
Zależność jest nietrywialna. Trywialna to taka,
gdy nie jest możliwe, by nie zachodziła – gdy
jej prawa strona jest podzbiorem jej lewej
strony (wyznacznika).
24
© Pearson Education Limited 1995, 2005
5
Zależności przechodnie
(tranzytywne)
Wykrycie zależności przechodnich jest
istotne, bo ich zachodzenie w relacji może
spowodować anomalie aktualizacji.
Zależność przechodnia występuje w
sytuacji, gdy A, B i C są atrybutami relacji,
takimi że A → B i B → C. Wtedy C jest
przechodnio (tranzytywnie) zależne od A
poprzez B (pod warunkiem, że A nie jest
zależne funkcyjnie od B lub C).
25
© Pearson Education Limited 1995, 2005
Przykład zależności przechodniej
staffNo → sName, position, salary, branchNo,
bAddress
branchNo → bAddress
Zależność przechodnia staffNo → bAddress
występuje poprzez atrybut branchNo.
26
© Pearson Education Limited 1995, 2005
Proces normalizacji
Technika służąca do wyznaczenia zbioru relacji
o pożądanych cechach na podstawie
wymagań względem danych przedsiębiorstwa.
Często prowadzona w szeregu etapów. Każdy
etap odpowiada konkretnej postaci normalnej
o znanych własnościach.
27
© Pearson Education Limited 1995, 2005
Określanie zależności funkcyjnych
Zidentyfikowanie wszystkich zależności
funkcyjnych w obrębie zbioru atrybutów jest
względnie łatwe jeżeli znaczenie każdego
atrybutu i zależności pomiędzy nimi są dobrze
zrozumiane.
Takie informacje powinny być udostępnione
przez przedsiębiorstwo w toku dyskusji
użytkownikami oraz/lub dokumentacji, takie
jak specyfikacja wymagań użytkowników.
28
© Pearson Education Limited 1995, 2005
W przypadku, gdy nie można przeprowadzić
konsultacji z użytkownikami oraz/lub
dokumentacja jest niekompletna, to może
okazać się konieczne pozyskanie brakujących
informacji w oparciu o zdroworozsądkową
analizę popartą doświadczeniem projektanta
bazy danych.
29
© Pearson Education Limited 1995, 2005
Określanie zależności funkcyjnych
Przykład – Identyfikacja zbioru
zależności funkcyjnych dla relacji
StaffBranch
Załóżmy, że piastowane stanowisko i biuro
(oddział) określają płacę pracownika.
30
© Pearson Education Limited 1995, 2005
6
Dysponując wystarczającymi informacjami
określimy następujące zależności funkcyjne dla
relacji StaffBranch:
staffNo → sName, position, salary, branchNo, bAddress
branchNo → bAddress
bAddress → branchNo
branchNo, position → salary
bAddress, position → salary
31
© Pearson Education Limited 1995, 2005
Przykład – Identyfikacja zbioru
zależności funkcyjnych dla relacji
StaffBranch
Rozważmy dane dla atrybutów oznaczonych
A, B, C, D, oraz E w przykładowej relacji.
Ważne, by przykładowe wartości danych były
reprezentatywne dla wszystkich możliwych
wartości, jakie mogą przyjmować atrybuty A,
B, C, D, oraz E. Wystarczy przeanalizowanie
niewielkiej takiej próbki danych.
32
© Pearson Education Limited 1995, 2005
Przykład – Identyfikacja zbioru
zależności funkcyjnych dla relacji
Przykład – określanie zależności
funkcyjnych
33
© Pearson Education Limited 1995, 2005
Zależności funkcyjne pomiędzy atrybutami
A – E w powyższej relacji:
A C
(fd1)
C A
(fd2)
B D
(fd3)
A, B E
(fd4)
34
© Pearson Education Limited 1995, 2005
Przykład – określanie zależności
funkcyjnych
Określanie klucza głównego dla relacji
w oparciu o zależności funkcyjne
Głównym celem identyfikowania zbioru
zależności funkcyjnych relacji jest określenie
zbioru więzów integralności, które relacja
musi spełniać.
Do istotnych więzów integralności, które
trzeba rozważyć, należy identyfikacja kluczy
kandydujących, z których jeden wybiera się na
klucz główny relacji.
35
© Pearson Education Limited 1995, 2005
Example - Identify Primary Key for
StaffBranch Relation
StaffBranch relation has five functional
dependencies (see Slide 31).
The determinants are staffNo, branchNo,
bAddress, (branchNo, position), and
(bAddress, position).
To identify all candidate key(s), identify the
attribute (or group of attributes) that
uniquely identifies each tuple in this relation.
36
© Pearson Education Limited 1995, 2005
7
Example - Identifying Primary Key
for StaffBranch Relation
All attributes that are not part of a candidate
key should be functionally dependent on the
key.
The only candidate key and therefore
primary key for StaffBranch relation, is
staffNo, as all other attributes of the relation
are functionally dependent on staffNo.
37
© Pearson Education Limited 1995, 2005
Example - Identifying Primary Key
for Sample Relation
Sample relation has four functional
dependencies (see Slide 31).
The determinants in the Sample relation
are A, B, C, and (A, B). However, the only
determinant that functionally determines
all the other attributes of the relation is
(A, B).
(A, B) is identified as the primary key for
this relation.
38
© Pearson Education Limited 1995, 2005
Proces normalizacji
As normalization proceeds, the relations
become progressively more restricted
(stronger) in format and also less vulnerable
to update anomalies.
39
© Pearson Education Limited 1995, 2005
Proces normalizacji
40
© Pearson Education Limited 1995, 2005
41
© Pearson Education Limited 1995, 2005
Proces normalizacji
Użytkownicy
Specyfikacja
wymagań
Formularze/raporty
wykorzystywane przez
zleceniodawcę
Źródła: słownik
danych, model
przedsiębiorstwa
Postać
nieznormalizowana
(UNF)
Pierwsza postać
normalna
(1NF)
Druga postać
normalna(2NF)
Trzecia postać
normalna(3NF)
Źródła danych
Zapisz atrybuty w tabeli
Usuń grupy powtórzeniowe
Usuń zależności
częściowe
Usuń zależności
przechodnie
Postać nieznormalizowana (UNF)
Tabela zawierająca jedną lub więcej grup
powtórzeniowych.
Tworzenie tabeli nieznormalizowanej:
Przekształć dane ze źródła informacji (np.
formularza) do postaci tabelarycznej – ze
wierszami i kolumnami.
42
© Pearson Education Limited 1995, 2005
8
Dokumenty źródłowe
43
Zawartość dokumentów w postaci tabeli
nieznormalizowanej
44
Pierwsza postać normalna (1NF)
Relacja, w której na przecięciu każdego
wiersza i każdej kolumny znajduje się tylko
wartość elementarna.
45
© Pearson Education Limited 1995, 2005
UNF → 1NF
Wskaż atrybut lub grupę atrybutów jako klucz
tabeli nieznormalizowanej.
Zidentyfikuj grupę (grupy) powtórzeniową w
tabeli nieznormalizowanej, która powtarza się
dla atrybutów kluczowych.
46
© Pearson Education Limited 1995, 2005
Usuń grupę powtórzeniową przez:
Wprowadzenie odpowiednich danych do pustych
kolumn wierszy zawierających powtarzające się
dane .
Albo przez
Przeniesienie powtarzających się danych wraz z
kopią atrybutów klucza do nowej relacji.
47
© Pearson Education Limited 1995, 2005
UNF → 1NF
Pierwsza postać normalna – 1NF
48
Wersja A
9
49
Wersja B
Pierwsza postać normalna – 1NF
Druga postać normalna (2NF)
Based on the concept of full functional
dependency.
Full functional dependency indicates that if
A and B are attributes of a relation,
B is fully dependent on A if B is functionally
dependent on A but not on any proper subset of
A.
50
© Pearson Education Limited 1995, 2005
Jest to relacja, która jest w 1NF i każdy jej
atrybut niewchodzący w skład klucza
głównego jest w pełni funkcyjnie zależny od
klucza głównego.
51
© Pearson Education Limited 1995, 2005
Druga postać normalna (2NF)
1NF →2NF
Zidentyfikuj klucz główny relacji w 1NF.
Zidentyfikuj zależności funkcyjne w relacji.
Jeżeli istnieją zależności cząstkowe od klucza
głównego, to usuń je przez umieszczenie w
nowej relacji wraz z kopią ich wyznacznika.
52
© Pearson Education Limited 1995, 2005
Analiza zależności funkcyjnych relacji
53
Schemat zależności funkcyjnych relacji
54
10
Wynik normalizacji do 2NF
55
Trzecia postać normalna (3NF)
Postać ta jest oparta na pojęciu przechodniej
zależności funkcyjnej.
Zależność przechodnia to stan, w którym:
A, B i C są atrybutami relacji takimi, że jeżeli A B i
B C,
to wtedy C jest przechodnio zależne od A poprzez B
(przy założeniu, że A nie jest funkcyjnie zależne od
B lub od C).
56
© Pearson Education Limited 1995, 2005
Relacja, która jest w 1NF oraz w 2NF i w
której żaden atrybut nie należący do klucza
głównego nie jest przechodnio zależny od
klucza głównego.
57
© Pearson Education Limited 1995, 2005
Trzecia postać normalna (3NF)
2NF → 3NF
Zidentyfikuj klucz główny w relacji w 2NF.
Zidentyfikuj zależności funkcyjne w relacji.
Jeżeli występują zależności funkcyjne od
klucza głównego, to usuń je przez
przeniesienie tych atrybutów wraz z kopią ich
wyznacznika do nowej relacji.
58
© Pearson Education Limited 1995, 2005
Analiza zależności funkcyjnych relacji
59
Wynik normalizacji do 3NF
60
11
Przebieg normalizacji - podsumowanie
61
Dokumenty źródłowe – jeszcze raz …
62
Ostateczny schemat relacyjny w 3NF
63
Definicje 2NF i 3NF
Druga postać normalna (2NF)
Relacja, która jest w pierwszej postaci normalnej i
każdy jej atrybut nie wchodzący w skład klucza
głównego jest w pełni funkcyjnie zależny od każdego
klucza kandydującego.
Trzecia postać normalna (3NF)
Relacja, która jest w pierwszej i drugiej postaci
normalnej, i w której żaden z atrybutów nie
wchodzących w skład klucza głównego nie jest
przechodnio funkcyjnie zależny od żadnego klucza
kandydującego.
64
© Pearson Education Limited 1995, 2005