Przejście do pierwszej części wykładu
Każdy związek niejednoznaczny (tj. który nie jest
jednoznaczny) trzeba sprowadzić do związków jednoznacznych.
- Dla związku o liczbie argumentów większej niż
dwa Z(E1 ,...,En),
n>2 wprowadzamy nową
encję E0 i n
jednoznacznych związków binarnych Zi(E0,Ei)
łączących nową encję ze starymi. Klucz encji E0 jest sumą kluczy encji E1,...,En.
- Dla niejednoznacznego związku binarnego Z(E1,E2) wprowadzamy nową encję E0 i dwa związki jednoznaczne Z1(E0,E1),
Z2(E0,E2)
łączące nowy zbiór encji ze starymi. Klucz encji E0
jest sumą kluczy encji E1
i E2.
Wprowadzana encja reprezentująca związek nazywa się asocjacyjną. Jest ona zawsze encją słabą (zależną), bo związki łączące ją z encjami-argumentami
związku nie-jednoznacznego są związkami identyfikującymi.
|
Oto przykład opisanej transformacji dla
związku trójargumentowego.
Pracownik w projekcie pełni rolę
|
Stosując
przedstawioną metodę wprowadzamy nową encję asocjacyjną, której
zadaniem jest opisać związek zachodzący między osobami, projektami i
rolami.
Jednoznaczny identyfikator nowej encji tworzą trzy wprowadzone związki tj. klucze obce do encji
Osoba, Projekt
i Rola.
- Istotne jest ustawienie typu związków jako identyfikujących – to właśnie
powoduje umieszczenie kluczy obcych do encji Osoba, Projekt i Rola w części
identyfikującej (klucza głównego) encji asocjacyjnej Uczestnictwo.
- W encji asocjacyjnej można umieszczać atrybuty charakteryzujące związek
np. między osobami, projektami i rolami - atrybut Okres_czasu.
Związek rekurencyjny
Zachodzi między tą samą encją, np. "Jedna osoba jest kierownikiem drugiej
osoby".
Aby go zdefiniować w MS Visio tworzymy pętlę związku wokół encji Osoba,
wprowadzamy do encji Osoba nowy atrybut o nazwie Kierownik i łączymy go z
kluczem głównym Numer – w zakładce "Definition".
Na kluczach obcych zaprojektowaliśmy indeksy -
co jest często stosowaną praktyką.
Poruszymy jeszcze kwestię specjalnego rodzaju związku
jednoznacznego, który dopuszcza inne, efektywne implementacje niż tylko
implementacja standardowa oparta na reprezentacji związku jednoznacznego za
pomocą powiązania
klucz obcy-klucz główny.
Związek jedno-jednoznaczny, jeden-do-jeden
jest to związek jednoznaczny, kórego instancja jest różnowartościową funkcją częściową np.
związek "Każdy student jest osobą" (Osoba może być studentem,
ale nie musi nim być).
|
Metody
odwzorowania związku jedno-jednoznacznego w tabele bazy danych na przykładzie
związku między encjami Osoba i Student:
-
(Stosowana
przez MS Visio) Używamy dwóch tabel: Student i Osoba. W tabeli
Osoba
zapisujemy atrybuty wspólne dla wszystkich osób. W tabeli Student
zapisujemy klucz główny z tabeli Osoba (identyfikujący studenta jako osobę)
oraz atrybuty charakterystyczne tylko dla studentów.
- Wadą tego rozwiązania
jest konieczność częstego używania złączenia dwóch tabel.
-
Używamy
tylko jednej tabeli, w której są przechowywane wszystkie możliwe atrybuty
dotyczące osób. Jeśli osoba nie jest studentem, wartości atrybutów
charakterystycznych tylko dla studentów pozostają NULL.
- Wadą tego rozwiązania
jest potencjalnie duża liczba wartości NULL w tabeli.
-
Używamy tylko jednej tabeli Student. W
przypadku, gdy zajdzie potrzeba reprezentowania jeszcze innego typu osób
jak np. Pracownik – dla tej kategorii osób definiujemy osobną tabelę. Gdy jest
potrzebna informacja obejmująca wszystkie osoby,
trzeba wtedy stosować sumowanie zawartości tabel.
- Metoda ta jest dobra,
gdy podział na kategorie osób jest rozłączny.
- Gdy podział
nie jest
rozłączny, ta sama informacja będzie powtarzana, np.
informacja o pracownikach będących jednocześnie studentami.
|
Generowanie bazy danych
Po wybraniu docelowego systemu
bazodanowego (w naszym przypadku MS Access) możemy wygenerować z programu MS
Visio tabele w bazie
danych:
1. Tworzymy pustą bazę danych MS Access.
2. Z menu
Visio wybieramy opcję "Database -> Generate" wywołując kreator
generacji.
3. W pierwszym okienku dialogowym kreatora wybieramy opcję "Generate
new database".
4a. Przy pierwszym użyciu:
- Wybieramy opcję: "Create MDB file" i "New"
(data source name - DSN).
- W kolejnych okienkach wybieramy opcje "System data
source", "Microsoft Access driver".
- Po utworzeniu DSN podajemy ścieżkę do utworzonej wcześniej bazy danych
MS Access.
4b. Przy kolejnym użyciu:
- Wybieramy opcję: "MDB file already exists".
- W kolejnych okienkach wybieramy DSN z
listy rozwijanej i ścieżkę do utworzonej wcześniej bazy danych Access.
|
Po wygenerowaniu i otwarciu bazy danych Access mamy:
Na koniec proponujemy zadanie o piwoszach:
Zbuduj model bazy danych z informacjami o piwoszach,
barach i gatunkach piwa. Wymodeluj związki:
-
W barze podają gatunek piwa.
-
Piwosz lubi gatunek piwa.
-
Piwosz bywa w barze.
-
Piwosz ma najbardziej ulubiony gatunek piwa.
-
Gatunek piwa pochodzi z browaru.
Rozwiązanie
|
Wykład 3 przedstawia metodę konstrukcji schematu bazy
danych za pomocą diagramu związków encji dla rozważanej dziedziny zastosowań.
Diagram związków encji reprezentuje model danych tej dziedziny. Jest istotnie
prostszy do utworzenia od samego schematu bazy danych, ponieważ abstrahuje od
szczegółów technicznych reprezentacji danych w konkretnym systemie baz
danych. Specjalne oprogramowanie (nazywane narzędziami CASE
- Computer
Aided System Engineering) dostarcza narzędzi graficznych do rysowania
diagramów na ekranie komputera. Co więcej dostarcza narzędzi do
automatycznego generowania schematu bazy danych w konkretnym systemie baz
danych. Diagram związków encji składa się z trzech rodzajów komponentów: encja,
atrybut i związek. Encja przechodzi na tabelę relacyjnej bazy
danych, atrybut na kolumnę. Specjalne znaczenie ma związek jednoznaczny, który
jest bezpośrednio implementowany w schemacie bazy danych poprzez powiązanie
klucz obcy-klucz główny dwóch tabel będących
implementacjami encji połączonych tym związkiem. Natomiast związki nie jednoznaczne trzeba przekształcać
na pomocnicze (asocjacyjne) encje i związki jednoznaczne zanim będzie można
dokonać ich implementacji. Wśród związków jednoznacznych wyróżniamy związki
identyfikujące (klucz obcy staje się częścią klucza głównego) oraz związki
nieidentyfikujące (klucz obcy pozostaje poza kluczem głównym). Zwracamy
jeszcze uwagę na związki opcjonalne (wartością klucza obcego może być
NULL) i związki wymagane (wartością klucza obcego nie może być NULL). Specjalne
metody implementacyjne stosuje się w przypadku związków jedno-jednoznacznych.
encja (obiekt) coś co istnieje, co jest odróżnialne
od innych, o czym informację trzeba znać lub przechowywać. Encje o tych
samych własnościach tworzą typy (zbiory) encji. Reprezentacją graficzną encji jest ramka (prostokąt).
Encja może być niezależna lub zależna (od innych encji przez związek lub
związki z nimi).
atrybut
jest to właściwość encji danego typu,
reprezentowana pewną wartością np. liczbą całkowitą, liczbą rzeczywistą,
napisem.
klucz (jednoznaczny identyfikator)
jest to zbiór (być może jednoelementowy) atrybutów danej encji, których
wartości jednoznacznie identyfikują każdą instancję tej encji. Jeden
klucz - główny, pozostałe nazywają się alternatywnymi.
związek - uporządkowana lista encji, poszczególne encje mogą występować wielokrotnie.
instancja związku - relacja określona między zbiorami egzemplarzy encji wchodzącymi
w skład związku. Relacja ta zwykle jest zmienna w czasie.
związek binarny -
związek dwuargumentowy (między dwiema encjami).
związek jednoznaczny (jeden-do-wiele) - związek binarny, którego instancja jest dwuargumentową
funkcją częściową.
liczebność związku - ile egzemplarzy encji po stronie wiele może być
połączone z jednym egzemplarzem encji po stronie jeden. Może
to być konkretna liczba np. 2 albo określenie typu "zero lub więcej",
"jeden
lub więcej", "zero lub jeden".
związek identyfikujący - klucz obcy wchodzi w
skład klucza głównego encji po stronie wiele.
związek nieidentyfikujący - klucz obcy nie wchodzi w skład klucza głównego encji po stronie wiele.
związek opcjonalny
- wartość klucza obcego jest opcjonalna
tzn. dopuszcza wartość NULL.
związek wymagany
- wartość klucza obcego jest wymagana
tzn. nie dopuszcza wartości NULL.
związek rekurencyjny - związek binarny, który zachodzi między tą samą encją w dwóch rolach,
np. "Jedna osoba jest kierownikiem drugiej
osoby".
związek jedno-jednoznaczny (jeden-do-jeden) - związek
jednoznaczny którego instancja jest różnowartościową funkcją częściową np.
związek "Każdy student jest osobą" ("Osoba może być studentem,
ale nie musi nim być").
Zadania 1 i 2
Strona przygotowana przez Lecha Banachowskiego - 02/06/03
.