Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałEleonora Kozak Został zmieniony 8 lat temu
1
1 W wykładzie 2 zaprezentowana jest podstawowa metoda tworzenia schematu relacyjnej bazy danych. Jest ona dwustopniowa. W pierwszej fazie projektujemy model danych dla rozważanej dziedziny zastosowań, nazywany diagramem związków encji. W drugiej fazie przekształcamy otrzymany model danych w schemat bazy danych. Specjalne oprogramowanie (nazywane narzędziami CASE - Computer Aided System Engineering) dostarcza narzędzi graficznych do projektowania i rysowania diagramów na ekranie komputera. Co więcej, dostarcza narzędzi do automatycznego generowania schematu bazy danych w konkretnym systemie baz danych, takim jak na przykład Microsoft Access. W wykładzie wprowadzane pojęcia ilustrowane są za pomocą zdjęć ekranów pochodzących z programu Microsoft Visio (wersja 2000), który służy do rysowania różnego rodzaju diagramów, w tym także diagramów związków encji.
2
2 Celem procesu projektowania schematu bazy danych jest: 1. Wyspecyfikowanie wymagań użytkowników przyszłej bazy danych oraz dokonanie analizy tych wymagań, 2. Utworzenie schematu bazy danych, spełniającego wymagania użytkowników i jednocześnie gwarantującego poprawne funkcjonowanie bazy danych w ramach całego systemu informacyjnego. Na ogół, zanim utworzy się bazę danych, dokonuje się analizy wymagań informacyjnych i przedstawia się je w postaci modelu danych nazywanego diagramem związków encji. W diagramie tym abstrahujemy od szczegółów technicznych związanych z implementacją danych w konkretnym systemie baz danych.
3
3 Diagram związków encji powinien: * w sposób jednoznaczny określać wymagania użytkowników, umożliwiając im sprawdzenie, czy analityk systemu dobrze zrozumiał ich intencje i specyfikę działania firmy (ogólnie – obiektów stanowiących przedmiot modelowanej bazy danych); * być istotnie prostszy od schematu bazy danych, ponieważ abstrahuje od szczegółów implementacyjnych, które muszą być później opracowane przez projektanta bazy danych tak, aby baza danych mogła powstać i spełniać postawione przed nią zadania.
4
Encja (obiekt) to 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). Należy odróżniać typ encji od jej instancji (egzemplarza) np. Osoba jako typ i jako konkretny obiekt (instancja, egzemplarz, czyli fizyczna osoba). 4
5
5 Atrybut jest to właściwość encji danego typu, opisywana pewną wartością np. liczbą całkowitą, liczbą rzeczywistą, napisem, datą. Inaczej mówiąc – atrybut to cecha (właściwość) obiektu, którego modelem jest encja. Zbiór atrybutów opisuje encję, a zbiór konkretnych wartości atrybutów opisuję instancję (konkretny egzemplarz) encji. * Identyfikowany atrybut powinien opisywać encję, przy której się go umieszcza (a nie związki z innymi encjami!). Na przykład Numer miejsca w samolocie jest atrybutem encji Samolot lub encji Miejsce w samolocie, a nie atrybutem encji Bilet, choć na nim się także pojawia. * Pierwsza postać normalna - dla każdego egzemplarza encji, każdy jej atrybut powinien przyjmować pojedynczą, atomową (niepodzielną) wartość. Z tego powodu, atrybut Dzieci pracownika nie jest dobrym kandydatem na atrybut encji Pracownik. * Należy pomijać atrybuty wyliczane, czyli takie, których wartości dadzą się wyliczyć z innych, już istniejących w bazie wartości. Np. wiek osoby jest wyliczany z daty urodzenia; cena brutto wynika z ceny netto i stawki podatku VAT, wartość zakupu z liczby zakupionych przedmiotów i ich cen.
6
Klucz (jednoznaczny identyfikator) jest to zbiór (może być jednoelementowy) atrybutów danej encji, których wartości jednoznacznie identyfikują każdą instancję tej encji. Jeden klucz jest główny, pozostałe alternatywne. Jedna encja może mieć wiele kluczy. * Atrybuty klucza głównego wyróżnia się etykietą PK i/lub podkreśleniem. * Niektóre encje, w celu jednoznacznego ich zidentyfikowania, wymagają powiązania z innymi encjami, czego efektem jest umieszczenie klucza obcego wśród atrybutów klucza głównego. Encje takie nazywają się słabe albo zależne. Pozostałe encje to encje niezależne. Analizę zaczynamy od zidentyfikowania encji niezależnych. 6
7
Typy zmiennych, czyli dziedziny atrybutów, to zbiory wartości, które mogą być przyjmowane przez zmienne zapisywane w kolumnach tabel. * W MS Visio atrybuty encji określa się w zakładce "Columns". * Odróżnia się dwie specyfikacje typów danych: niezależną od systemu baz danych (Portable Data Type), oraz zorientowaną na generowanie bazy danych do konkretnego systemu baz danych (Physical Data Type). 7
8
Więzy spójności dla encji w MS Visio określa się zakładce Check. Definiowane są przez wyrażenia. 8
9
Wśród atrybutów encji wyróżniamy atrybuty bądź grupy atrybutów, względem wartości których, są wyszukiwane egzemplarze encji. Dla takich atrybutów specyfikujemy indeksy. Indeks na kluczu głównym jest zakładany automatycznie i nie trzeba dodatkowo go specyfikować. Na diagramie atrybuty posiadające indeksy są etykietowane literą I ze wskaźnikiem. W MS Visio indeksy specyfikuje się w zakładce "Indexes". Przykład pokazany na slajdzie to specyfikacja indeksu do wyszukiwania osób według ich nazwisk. 9
10
10 Związek to uporządkowana lista encji, poszczególne encje mogą występować wielokrotnie. Każdy związek określa pewną zależność między zbiorami egzemplarzy (instancji) encji wchodzącymi w skład związku - instancję związku. Związek można formalnie zapisać przy użyciu notacji relacyjnej: Z(E1,...,En) co oznacza: encje E1,...,En wchodzą w skład związku Z Można także opisać związek werbalnie, np.: * Pracownik pracuje w dziale (związek pomiędzy encjami Dział i Pracownik) * Pracownik w projekcie pełni rolę (związek pomiędzy encjami Pracownik i Projekt) * Firma produkuje towar (związek pomiędzy encjami Firma i Towar)
11
Związek binarny jest reprezentowany graficznie jako linia łącząca dwie ramki (encje). MS Visio automatycznie tworzy w encji Student atrybut Nr_Grupy (z etykietą FK1 - klucz obcy) - określający powiązania instancji encji Student z instancjami encji Grupa. Instancja związku binarnego jest dwuargumentową relacją na iloczynie kartezjańskim zbiorów instancji encji. W naszym przykładzie - zbioru studentów, ze zbiorem grup studenckich. 11
12
12 Związek jednoznaczny Gdy instancja związku binarnego jest funkcją częściową związek nazywa się jednoznaczny. * Instancja związku jednoznacznego między encjami Grupa i Student jest funkcją ze zbioru studentów w zbiór grup studenckich. Część związku odpowiadająca dziedzinie funkcji jest nazywana stroną wiele związku (lub encją podrzędną), a część odpowiadająca przeciwdziedzinie funkcji stroną jeden związku (lub encją nadrzędną) – i jest oznaczana strzałką. * Grupa jest encją po stronie jeden (nadrzędną) a Student encją po stronie wiele (podrzędną). Implementacja związku jednoznacznego Dwie encje połączone związkiem jednoznacznym są implementowane odpowiednio przez dwie tabele. W encji po stronie wiele jest dodany klucz obcy określający powiązanie z instancją encji po stronie jeden. * W naszym przykładzie do encji Student jest dodany klucz obcy Nr_grupy etykietowany przez FK1, określający powiązanie z instancją encji Grupa - przez wartość klucza głównego Nr_grupy.
13
W zakładce Definition związek definiowany jest jako powiązanie dwóch zbiorów atrybutów: tworzonego automatycznie klucza obcego w encji po stronie "wiele" i klucza głównego w encji po stronie "jeden". Pole „Foreign key role name” jest miejscem gdzie można opisać rolę, jaką w encji podrzędnej pełni klucz obcy (może być to przekształcone w etykietę kolumny przyszłej tabeli). W przykładzie Student jest encją po stronie "wiele", a Grupa jest encją po stronie "jeden". 13
14
Zakładka Name określa sposób odczytywania zawartości związku oraz nazwę dla więzów klucza obcego: Grupa_Student_FK1. Pola Verb phrase i Inverse phrase pozwalają opisać verbalnie związek, ułatwiając zrozumienie jego roli. Opis może zostać wykonany w ujęciu „od strony wiele do strony jeden” i/lub odwrotnie. MS Visio pozwala wyświetlić opisy związków na diagramie. 14
15
Zakładka Miscelaneous określa podstawowe własności związku: 1. Liczebność (Cardinality) - 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". 15
16
2. Typ związku (Relationship type), który może być: * identyfikujący – do identyfikacji egzemplarza encji po stronie wiele jest potrzebny odpowiadający mu egzemplarz encji po stronie jeden i wtedy encja po stronie wiele nazywa się encją słabą (zależną) - inaczej mówiąc wartość klucza obcego wchodzi w skład klucza głównego encji po stronie wiele * nieidentyfikujący - wartość klucza obcego nie wchodzi w skład klucza głównego encji po stronie wiele. 16
17
3. Opcję Optional – czy wartość klucza obcego jest opcjonalna tzn. czy dopuszcza wartość NULL. Związek jest opcjonalny gdy wartość klucza obcego dopuszcza wartość NULL. Związek jest wymagany gdy wartość klucza obcego musi być określona tzn. nie może być NULL (inaczej mówiąc dla każdego egzemplarza encji po stronie wiele istnieje odpowiadający mu egzemplarz encji po stronie jeden). 17
18
Zakładka Ref. Integrity określa akcje referencyjne, które zostaną podjęte w przypadku naruszenia więzów spójności referencyjnej przez operacje usuwania i aktualizacji wierszy w tabeli nadrzędnej. Dostępne są następujące opcje: 1. Odmawiaj wykonania akcji (No action, Restricted) - nie wykonuj zmiany, jeśli naruszyłaby ona więzy spójności referencyjnej. System zarządzania bazą danych „odmówi” wykonania polecenia, informując o tym użytkownika i/lub zapisując informację o tym w logu. 18
19
2. Propaguj zmiany do encji podrzędnej (Cascade) - przy aktualizacji instancji encji nadrzędnej uaktualnij wartość klucza obcego w encji podrzędnej, a przy usuwaniu, razem z egzemplarzem encji nadrzędnej, usuń wszystkie powiązane przez wartość klucza obcego egzemplarze encji podrzędnej. Ta akcja jest w szczególności naturalna dla wszystkich związków identyfikujących. 3. Wstaw NULL (Set Null) - w przypadku aktualizacji lub usuwania instancji encji nadrzędnej, w miejsce wartość klucza obcego w odpowiadających jej instancjach encji podrzędnej wstaw NULL. 19
20
4. Wyłącz więzy spójności referencyjnej i wykonaj operację (Do not enforce). System zarządzania bazą danych przestaje odpowiadać za spójność danych. Niektóre systemy dopuszczają jeszcze jedną opcję: 5. Wstaw wartość domyślną (Set Default) - w przypadku aktualizacji lub usuwania instancji encji nadrzędnej, zamiast wartości klucza obcego w odpowiadających jej instancjach encji podrzędnej wstaw wartość domyślną. 20
21
21 Każdy związek niejednoznaczny (czyli taki związek, 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ę z encjami już istniejącymi. 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) oraz 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ę encją asocjacyjną. Jest ona zawsze encją słabą (zależną), bo związki łączące ją z encjami - argumentami związku niejednoznacznego są związkami identyfikującymi.
22
Powyżej przedtawiony jest przykład opisanej transformacji dla związku trójargumentowego: wykładowca prowadzi zajęcia dla grupy studenckiej z przedmiotu nauczania. Stosując opisaną metodę wprowadzimy nową encję asocjacyjną, której zadaniem będzie opisanie związku, jaki zachodzi pomiędzy wykładowcami, przedmiotami nauczania i grupami. 22
23
Jednoznaczny identyfikator nowej encji tworzą trzy wprowadzone związki tj. klucze obce do encji Grupa, Wykładowca i Przedmiot. Istotne jest ustawienie typu tych związków jako identyfikujących. To właśnie spowoduje umieszczenie kluczy obcych z encji Grupa, Wykładowca i Przedmiot w części identyfikującej (czyli wśród atrybutów klucza głównego) encji asocjacyjnej Zajęcia. W encji asocjacyjnej można umieszczać atrybuty charakteryzujące związek np. między osobami, projektami i rolami - atrybut Godz_rozp, Czas_trwania, Sala. 23
24
Związek rekurencyjny jest to związek zachodzący pomiędzy tą samą encją, np. „Jedna Osoba jest kierownikiem drugiej osoby”. W pokazanym przykładzie na kluczach obcych zostały utworzone (przez projektanta bazy) indeksy, co jest często stosowaną praktyką. 24
25
Związek jedno-jednoznaczny to związek jednoznaczny, którego instancja jest różnowartościową funkcją częściową. Inaczej mówiąc, każdej instancji encji po stronie „wiele” odpowiada co najwyżej jedna instancja encji po stronie „jeden” - na przykład związek "Każdy student jest osobą" (Osoba może być studentem, ale nie musi nim być). 25
26
26 Związek jedno-jednoznaczny może zostać odwzorowany w tabele bazy danych na jeden z trzech sposobów (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, zaletą jest elegancja schematu. 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.
27
27 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. UWAGA: Opcja generowania bazy danych z modelu wykonanego w MS Visio dostępna jest w wersjach 2002 i 2003 tylko w wydaniach „Enterprise”. W powszechnie dostępnych wydaniach „Proffesional” możliwe jest tylko wykonanie diagramu związków encji.
28
28 * 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 (może być 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ą.
29
29 * 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ć").
30
30 Do zobaczenia na wykładzie III
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.