Przejście z diagramu O - Z bazy danych do jej fizycznej postaci
polega na takim zaprojektowaniu i implementacji zbiorów bazy danych,
aby wyrażone zostały wszystkie zależności uwzględnione w tymże
diagramie.
W tym celu należy:
ustalić postacie zbiorów (tabel),
znormalizować relacje (tabele),
zaimplementować zbiory (tabele),
zachowując ustalone w procesie analizy
systemu więzy integralności.
Dalej zajmiemy się kolejnymi etapami prowadzącymi do
zaimplementowania bazy danych.
Etap 1:
Odwzorowanie elementów
diagramu O- Z
Występujące na diagramie opisane strzałki
stają się atrybutami obiektów, z których wychodzi strzałka, a
przyjmują wartości ze zbioru, do którego strzałka dochodzi.
Obiekty typu:
a) b)
implementowane są w postaci tabel np.:
Indeks Praca
nr_indeksu ? nr_ przedmiotu
nr_nauczyciela
000001 ... 1 ...
000002 ... 2 ...
... ... ... ...
... ... ... ...
W naszym przykładzie tablice dla obiektów typu “a”
wyglądałyby następująco:
Indeks Przedmiot
nr_indeksu nr_przedmiotu
000001 1
000002 2
... ...
... ...
Wykładowca
nr_nauczyciela
01
02
...
...
Dla obiektów typu “b” ( relacji ) tablice wyglądałyby
następująco:
Nauka
nr naz ad kie nr
projekt
inde wi res ru przed
nr data ocena
ksu sko nek miotu
projektu ukończenia
... ... ... ... ... ...
... ...
... ... ... ... ... ...
... ...
... ... ... ... ... ...
... ...
Dla relacji Praca tabela będzie miała
następującą postać:
Praca
nr przedmiotu nr_nauczyciela
... ...
... ...
... ...
... ...
Etap 2:
Jak odwzorowywane są
zależności:
1 - N oraz N - N ?
Definicja:
Kluczem relacji R będziemy nazywali zbiór atrybutów tej relacji
wtedy i tylko wtedy gdy zbiór ten spełnia następujące własności:
1. zbiór ten jednoznacznie identyfikuje krotkę relacji,
2. jest to zbiór atrybutów o najmniejszej liczności,
3. zakres klucza jest przewidywalny,
4. wśród atrybutów klucza nie występują wartości
nieokreślone.
W rozpatrywanym przykładzie dla relacji Nauka
własność 1 mają zbiory:
a) {nr_indeksu, nr_przedmiotu}
b) {nr_indeksu, nr_przedmiotu, nr_projektu}
Jednakże własność 2 posiada tylko zbiór typu “a”.
Odwzorowanie zależności 1
- N wykonywane jest w
formie tabeli ( zbioru bazy danych ) zawierającej
klucze obiektów wchodzących w skład powiązania.
Np.
Praca
nr_przedmiotu nr_nauczyciela
Dla zachowania integralności wystarczy aby
“nr_przedmiotu” był kluczem relacyjnym
(ang. relation key ).
Odwzorowanie zależności N
- N wymaga rozbicia jej na zależności 1
- N, N -
1.
W rozważanym przypadku: (Indeks) N - N
(Przedmiot)
będzie zrealizowana jako:(Indeks)
1- N (Pomocniczy)
i (Pomocniczy) N - 1 (Przedmiot)
Przykład : Indeks Przedmiot
nr_indeksunr_przedmiotu
1 1
2 2
3 3
4 4
5 5
6 6
7 7
Niech stan powiązania N - N będzie następujący:
Nauka
nr_indeksunr_przedmiotu ? ?
1 1 ... ...
1 2 ... ...
2 2 ... ...
2 3 ... ...
3 1 ... ...
4 1 ... ...
4 2 ... ...
W trakcie implementacji powiązanie to musi zostać rozłożone na
dwa powiązania z dodaniem obiektu pośredniczącego.
Indeks Pomocniczy Przedmiot
nr_indeksunr_indeksu’
nr_przedmiotu’nr_przedmiotu
Klucze relacji Pomocniczy są kluczami obcymi ( ang.
foreign key ) pochodzącymi od obiektów Indeks i
Przedmiot.
Spojrzenie na powiązanie 1
- N
( nr_indeksu - nr_indeksu’ )
gdzie: ’
oznacza klucz obcy.
Indeks Pomocniczy
nr_indeksunr_indeksu’
nr_przedmiotu’
1 1 1
2 1 2
3 2 2
4 2 3
3 1
4 1
Spojrzenie na powiązanie N
- 1
( nr_przedmiotu’ - nr_przedmiotu )
gdzie: ’
oznacza klucz obcy.
Pomocniczy Indeks
nr_indeksu’ nr_przedmiotu’nr_przedmiotu
1 1 1
1 2 2
2 2 3
2 3 4
3 1
4 2
Etap 3:
Normalizacja tabel
W procesie analizy często można dostrzec, iż w bazie
danych występują pewne niezmiennicze własności,
które nazywać będziemy zależnościami funkcyjnymi.
W naszym przykładzie będą to:
Każdemu indeksowi nr_indeksu Nauka
(NUMER INDEKSU) jest jednoznacznie
przyporządkowane nazwisko E(NAZWISKO)
Każdej parze (nr_indeksu, nr_przedmiotu) Nauka
(INDEKS, PRZEDMIOT) jest jednoznacznie
przyporządkowany projekt.
1NF ( pierwsza postać
normalna )
Definicja:
Relacja jest w pierwszej postaci normalnej
jeżeli wartości wszystkich jej atrybutów są
atomowe ( nierozkładalne ).
Relacja
Nauka (nr_indeksu, nazwisko, adres,
kierunek, nr_przedmiotu, Projekt
(nr_projektu, data_ukonczenia, ocena ))
nie jest w 1NF, gdyż atrybut Projekt jest
wielowartościowy
W celu doprowadzenia relacji do 1NF należy tak
przekształcić relację, aby argumenty
przyjmowały wartości atomowe.
Relacja w 1NF będzie miała postać:
Nauka ( nr_indeksu, nazwisko, adres,
kierunek, nr_przedmiotu, nr_projektu,
data_ukonczenia, ocena )
2NF ( druga postać
normalna )
Tabela będąc w 1NF posiada niekorzystne
własności ( anomalie ), dlatego też kontynuujemy
normalizację.
Definicja:
Relacja jest w 2NF, jeżeli każdy niekluczowy
atrybut A jest w pełni zależny od każdego
klucza tej relacji.
W celu doprowadzenia relacji do 2NF dokonujemy podziału tabeli na
dwie:
Nauka_1
nr_indeksu nazwisko adres kierunek
... ... ... ...
... ... ... ...
Nauka_2
nrnr nr data
ocena
indeksuprzedmiotu projektu
ukończenia
... ... ... ... ...
... ... ... ... ...
Można zauważyć, że data_ukończenia zależy od
atrybutu nr_projektu, mimo że nr_projektu nie jest
atrybutem kluczowym.
Takie zjawisko nazywamy tranzytywnością.
Zjawisko to usuwamy doprowadzając relację do 3NF.
3NF ( trzecia postać
normalna )
Definicja
Relacja jest w 3NF, jeśli jest w 2NF a żaden
zbiór atrybutów niekluczowych nie jest
tranzytywnie zależny od żadnego klucza
schematu tej relacji.
Przeprowadzenie relacji do trzeciej postaci
normalnej polega na odpowiednim podziale relacji.
Relacja Nauka_2 musi więc ulec podzieleniu na:
Nauka_2_1
nr_indeksu nr_przedmiotu
nr_projektu ocena
... ... ... ...
... ... ... ...
Nauka_2_2
nr_projektu data_ukończenia
... ...
... ...
Postać normalna
Boyce’a-Codda ( PNB-C )
Definicja
Relacja jest w PNB-C jeśli jest w 3NF i każdy
atrybut kluczowy nie jest w zależności
funkcyjnej od atrybutu niekluczowego.
Zakładając, że z nr_projektu wynika nr_przedmiotu
relacja Nauka_2_1 może zostać znormalizowana
do postaci:
Nauka_3_1 Nauka_3_2
nr nr nrnr ocena
projektu przedmiotu projektuindeksu
... ... ... ... ...
... ... ... ... ...
Etap 4:
Projektowanie
zbiorów wartości
Zbiory wartości określają zakres wartości atrybutu oraz
operacje, które można na nim wykonywać.
Bardzo ważny jest dobór odpowiedniego zbioru wartości.
W celu określenia zbioru wartości należy określić: