Przejście do pierwszej części wykładu


Transformacja związku niejednoznacznego

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.

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:

  1. (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.
  2. 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.
  3. 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:
  1. W barze podają gatunek piwa.
  2. Piwosz lubi gatunek piwa.
  3. Piwosz bywa w barze.
  4. Piwosz ma najbardziej ulubiony gatunek piwa.
  5. Gatunek piwa pochodzi z browaru. 

Rozwiązanie

 


Podsumowanie

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.
 


Słownik

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

Zadania 1 i 2



Strona przygotowana przez Lecha Banachowskiego - 02/06/03 .