opr. Lech Banachowski, Krzysztof Matejews
opr. Lech Banachowski, Krzysztof Matejews
ki
ki
1
1
Relacyjne Bazy Danych
Relacyjne Bazy Danych
Wykład II
Wykład II
Projektowanie baz danych
Projektowanie baz danych
diagramy związków encji
diagramy związków encji
opr. Lech Banachowski, Krzysztof Matejewski
2
Streszczenie wykładu II
Streszczenie wykładu II
W wykładzie 2 zaprezentowana jest podstawowa metoda tworzenia
W wykładzie 2 zaprezentowana jest podstawowa metoda tworzenia
schematu relacyjnej bazy danych. Jest ona dwustopniowa. W
schematu relacyjnej bazy danych. Jest ona dwustopniowa. W
pierwszej fazie projektujemy
pierwszej fazie projektujemy
model danych
model danych
dla rozważanej
dla rozważanej
dziedziny zastosowań, nazywany
dziedziny zastosowań, nazywany
diagramem związków encji
diagramem związków encji
. W
. W
drugiej fazie przekształcamy otrzymany model danych w schemat
drugiej fazie przekształcamy otrzymany model danych w schemat
bazy danych. Specjalne oprogramowanie (nazywane
bazy danych. Specjalne oprogramowanie (nazywane
narzędziami
narzędziami
CASE
CASE
- Computer Aided System Engineering
- Computer Aided System Engineering
) dostarcza narzędzi
) dostarcza narzędzi
graficznych do projektowania i rysowania diagramów na ekranie
graficznych do projektowania i rysowania diagramów na ekranie
komputera. Co więcej, dostarcza narzędzi do automatycznego
komputera. Co więcej, dostarcza narzędzi do automatycznego
generowania schematu bazy danych w konkretnym systemie baz
generowania schematu bazy danych w konkretnym systemie baz
danych, takim jak na przykład Microsoft Access.
danych, takim jak na przykład Microsoft Access.
W wykładzie wprowadzane pojęcia ilustrowane są za pomocą zdjęć
W wykładzie wprowadzane pojęcia ilustrowane są za pomocą zdjęć
ekranów pochodzących z programu
ekranów pochodzących z programu
Microsoft Visio
Microsoft Visio
(wersja
(wersja
2000), który służy do rysowania różnego rodzaju diagramów, w
2000), który służy do rysowania różnego rodzaju diagramów, w
tym także diagramów związków encji.
tym także diagramów związków encji.
opr. Lech Banachowski, Krzysztof Matejewski
3
Diagram związków encji
Diagram związków encji
Celem procesu projektowania schematu bazy danych jest:
Celem procesu projektowania schematu bazy danych jest:
1.
1.
wyspecyfikowanie wymagań użytkowników przyszłej bazy
wyspecyfikowanie wymagań użytkowników przyszłej bazy
danych oraz dokonanie analizy tych wymagań,
danych oraz dokonanie analizy tych wymagań,
2.
2.
utworzenie schematu bazy danych, spełniającego wymagania
utworzenie schematu bazy danych, spełniającego wymagania
użytkowników i jednocześnie gwarantującego poprawne
użytkowników i jednocześnie gwarantującego poprawne
funkcjonowanie bazy danych w ramach całego systemu
funkcjonowanie bazy danych w ramach całego systemu
informacyjnego.
informacyjnego.
Na ogół, zanim utworzy się bazę danych, dokonuje się analizy
Na ogół, zanim utworzy się bazę danych, dokonuje się analizy
wymagań informacyjnych i przedstawia się je w postaci modelu
wymagań informacyjnych i przedstawia się je w postaci modelu
danych nazywanego
danych nazywanego
diagramem związków encji
diagramem związków encji
. W diagramie
. W diagramie
tym abstrahujemy od szczegółów technicznych związanych z
tym abstrahujemy od szczegółów technicznych związanych z
implementacją danych w konkretnym systemie baz danych.
implementacją danych w konkretnym systemie baz danych.
opr. Lech Banachowski, Krzysztof Matejewski
4
Diagram związków encji
Diagram związków encji
pośredni model projektowy
pośredni model projektowy
Diagram związków encji
Diagram związków encji
powinien:
powinien:
w sposób jednoznaczny określać wymagania użytkowników,
w sposób jednoznaczny określać wymagania użytkowników,
umożliwiając im sprawdzenie, czy analityk systemu dobrze
umożliwiając im sprawdzenie, czy analityk systemu dobrze
zrozumiał ich intencje i specyfikę działania firmy (ogólnie –
zrozumiał ich intencje i specyfikę działania firmy (ogólnie –
obiektów stanowiących przedmiot modelowanej bazy danych);
obiektów stanowiących przedmiot modelowanej bazy danych);
być istotnie prostszy od schematu bazy danych, ponieważ
być istotnie prostszy od schematu bazy danych, ponieważ
abstrahuje od szczegółów implementacyjnych, które muszą być
abstrahuje od szczegółów implementacyjnych, które muszą być
później opracowane przez projektanta bazy danych tak, aby
później opracowane przez projektanta bazy danych tak, aby
baza danych mogła powstać i spełniać postawione przed nią
baza danych mogła powstać i spełniać postawione przed nią
zadania.
zadania.
opr. Lech Banachowski, Krzysztof Matejewski
5
Składniki diagramu związków encji
Składniki diagramu związków encji
Encja
Encja
Encja
Encja
(obiekt) to coś, co istnieje, co jest odróżnialne od innych, o czym
(obiekt) to coś, co istnieje, co jest odróżnialne od innych, o czym
informację trzeba znać lub przechowywać. Encje o tych samych
informację trzeba znać lub przechowywać. Encje o tych samych
własnościach tworzą typy (zbiory) encji. Reprezentacją graficzną encji
własnościach tworzą typy (zbiory) encji. Reprezentacją graficzną encji
jest ramka (prostokąt).
jest ramka (prostokąt).
Należy odróżniać
Należy odróżniać
typ encji
typ encji
od jej
od jej
instancji
instancji
(egzemplarza) np.
(egzemplarza) np.
Osoba
Osoba
jako
jako
typ
typ
i jako konkretny
i jako konkretny
obiekt
obiekt
(instancja, egzemplarz, czyli fizyczna osoba).
(instancja, egzemplarz, czyli fizyczna osoba).
opr. Lech Banachowski, Krzysztof Matejewski
6
Składniki diagramu związków encji
Składniki diagramu związków encji
Atrybut
Atrybut
Atrybut
Atrybut
jest to właściwość encji danego typu, opisywana pewną wartością np.
jest to właściwość encji danego typu, opisywana pewną wartością np.
liczbą całkowitą, liczbą rzeczywistą, napisem, datą. Inaczej mówiąc –
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 to cecha (właściwość) obiektu, którego modelem jest encja. Zbiór
atrybutów opisuje encję, a zbiór konkretnych wartosci atrybutów opisuję
atrybutów opisuje encję, a zbiór konkretnych wartosci atrybutów opisuję
instancję (konkretny egzemplarz) encji.
instancję (konkretny egzemplarz) encji.
Identyfikowany atrybut powinien opisywać encję, przy której się go
Identyfikowany atrybut powinien opisywać encję, przy której się go
umieszcza (a nie związki z innymi encjami!). Na przykład
umieszcza (a nie związki z innymi encjami!). Na przykład
Numer miejsca w
Numer miejsca w
samolocie
samolocie
jest atrybutem encji
jest atrybutem encji
Samolot
Samolot
lub encji
lub encji
Miejsce w samolocie
Miejsce w samolocie
, a nie
, a nie
atrybutem encji
atrybutem encji
Bilet
Bilet
, choć na nim się także pojawia.
, choć na nim się także pojawia.
Pierwsza postać normalna
Pierwsza postać normalna
-
-
dla każdego egzemplarza encji, każdy jej
dla każdego egzemplarza encji, każdy jej
atrybut powinien przyjmować pojedynczą, atomową (niepodzielną)
atrybut powinien przyjmować pojedynczą, atomową (niepodzielną)
wartość. Z tego powodu, atrybut
wartość. Z tego powodu, atrybut
Dzieci pracownika
Dzieci pracownika
nie jest dobrym
nie jest dobrym
kandydatem na atrybut encji
kandydatem na atrybut encji
Pracownik
Pracownik
.
.
Należy pomijać atrybuty wyliczane, czyli takie, których wartości dadzą się
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
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
wyliczany z daty urodzenia; cena brutto wynika z ceny netto i stawki
podatku VAT, wartość zakupu z liczby zakupionych przedmiotów i ich cen.
podatku VAT, wartość zakupu z liczby zakupionych przedmiotów i ich cen.
opr. Lech Banachowski, Krzysztof Matejewski
7
Składniki diagramu związków encji
Składniki diagramu związków encji
Klucz
Klucz
Klucz
Klucz
(
(
jednoznaczny identyfikator
jednoznaczny identyfikator
)
)
jest to zbiór (może być
jest to zbiór (może być
jednoelementowy)
atrybutów
danej
encji,
których
wartości
jednoelementowy)
atrybutów
danej
encji,
których
wartości
jednoznacznie identyfikują każdą instancję tej encji. Jeden klucz jest
jednoznacznie identyfikują każdą instancję tej encji. Jeden klucz jest
główny
główny
, pozostałe
, pozostałe
alternatywne
alternatywne
. Jedna encja może mieć wiele kluczy.
. Jedna encja może mieć wiele kluczy.
Atrybuty klucza głównego wyróżnia się etykietą PK i/lub podkreśleniem.
Atrybuty klucza głównego wyróżnia się etykietą PK i/lub podkreśleniem.
Niektóre encje, w celu jednoznacznego ich zidentyfikowania, wymagają
Niektóre encje, w celu jednoznacznego ich zidentyfikowania, wymagają
powiązania z innymi encjami, czego efektem jest umieszczenie klucza
powiązania z innymi encjami, czego efektem jest umieszczenie klucza
obcego wśród atrybutów klucza głównego. Encje takie nazywają się
obcego wśród atrybutów klucza głównego. Encje takie nazywają się
słabe
słabe
albo
albo
zależne
zależne
. Pozostałe
. Pozostałe
encje to encje
encje to encje
niezależne
niezależne
.
.
Analizę
Analizę
zaczynamy od zidentyfikowania encji niezależnych.
zaczynamy od zidentyfikowania encji niezależnych.
opr. Lech Banachowski, Krzysztof Matejewski
8
Składniki diagramu związków encji
Składniki diagramu związków encji
Typy danych
Typy danych
Typy zmiennych
Typy zmiennych
, czyli
, czyli
dziedziny atrybutów
dziedziny atrybutów
, to zbiory wartości, które
, to zbiory wartości, które
mogą być przyjmowane przez zmienne zapisywane w kolumnach tabel.
mogą być przyjmowane przez zmienne zapisywane w kolumnach tabel.
W MS Visio atrybuty encji określa się w zakładce "Columns".
W MS Visio atrybuty encji określa się w zakładce "Columns".
Odróżnia się dwie specyfikacje typów danych: niezależną od systemu
Odróżnia się dwie specyfikacje typów danych: niezależną od systemu
baz danych (
baz danych (
Portable Data Type
Portable Data Type
), oraz zorientowaną na generowanie
), oraz zorientowaną na generowanie
bazy danych do konkretnego systemu baz danych (
bazy danych do konkretnego systemu baz danych (
Physical Data Type
Physical Data Type
).
).
opr. Lech Banachowski, Krzysztof Matejewski
9
Składniki diagramu związków encji
Składniki diagramu związków encji
Więzy spójności
Więzy spójności
Więzy spójności
Więzy spójności
dla encji w MS Visio określa się zakładce
dla encji w MS Visio określa się zakładce
Check
Check
.
.
Definiowane są przez wyrażenia.
Definiowane są przez wyrażenia.
opr. Lech Banachowski, Krzysztof Matejewski
10
Indeksy
Indeksy
Wśród atrybutów encji wyróżniamy atrybuty bądź grupy atrybutów,
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
względem wartości których są wyszukiwane egzemplarze encji. Dla
takich atrybutów specyfikujemy
takich atrybutów specyfikujemy
indeksy
indeksy
. Indeks na kluczu głównym
. Indeks na kluczu głównym
jest zakładany automatycznie i nie trzeba dodatkowo go
jest zakładany automatycznie i nie trzeba dodatkowo go
specyfikować. Na diagramie atrybuty posiadające indeksy są
specyfikować. Na diagramie atrybuty posiadające indeksy są
etykietowane literą
etykietowane literą
I
I
ze wskaźnikiem. W MS Visio indeksy specyfikuje
ze wskaźnikiem. W MS Visio indeksy specyfikuje
się w zakładce "Indexes". Przykład pokazany na slajdzie to
się w zakładce "Indexes". Przykład pokazany na slajdzie to
specyfikacja indeksu do wyszukiwania osób według ich nazwisk.
specyfikacja indeksu do wyszukiwania osób według ich nazwisk.
opr. Lech Banachowski, Krzysztof Matejewski
11
Związek
Związek
Związek
Związek
to uporządkowana lista encji, poszczególne encje
to uporządkowana lista encji, poszczególne encje
mogą występować wielokrotnie. Każdy związek określa
mogą występować wielokrotnie. Każdy związek określa
pewną zależność między zbiorami egzemplarzy (instancji)
pewną zależność między zbiorami egzemplarzy (instancji)
encji wchodzącymi w skład związku - instancję związku.
encji wchodzącymi w skład związku - instancję związku.
Związek można formalnie zapisać przy użyciu notacji relacyjnej:
Związek można formalnie zapisać przy użyciu notacji relacyjnej:
Z(E1 ,...,En)
Z(E1 ,...,En)
co oznacza:
co oznacza:
encje E1 ,...,En wchodzą w skład związku Z
encje E1 ,...,En wchodzą w skład związku Z
Można także opisać związek werbalnie, np.:
Można także opisać związek werbalnie, np.:
Pracownik pracuje w dziale
Pracownik pracuje w dziale
(związek pomiędzy encjami
(związek pomiędzy encjami
Dział
Dział
i
i
Pracownik
Pracownik
)
)
Pracownik w projekcie pełni rolę
Pracownik w projekcie pełni rolę
(związek pomiędzy encjami
(związek pomiędzy encjami
Pracownik
Pracownik
i
i
Projekt
Projekt
)
)
Firma produkuje towar
Firma produkuje towar
(związek pomiędzy encjami
(związek pomiędzy encjami
Firma
Firma
i
i
Towar
Towar
)
)
opr. Lech Banachowski, Krzysztof Matejewski
12
Związek binarny - dwuargumentowy
Związek binarny - dwuargumentowy
Związek binarny
Związek binarny
jest reprezentowany graficznie jako linia łącząca
jest reprezentowany graficznie jako linia łącząca
dwie ramki (encje). MS Visio automatycznie tworzy w encji
dwie ramki (encje). MS Visio automatycznie tworzy w encji
Student
Student
atrybut
atrybut
Nr_Grupy
Nr_Grupy
(z etykietą FK1 - klucz obcy ) - określający
(z etykietą FK1 - klucz obcy ) - określający
powiązania instancji encji
powiązania instancji encji
Student
Student
z instancjami encji
z instancjami encji
Grupa
Grupa
.
.
Instancja
Instancja
związku binarnego jest dwuargumentową relacją na
związku binarnego jest dwuargumentową relacją na
iloczynie kartezjańskim zbiorów instancji encji. W naszym
iloczynie kartezjańskim zbiorów instancji encji. W naszym
przykładzie - zbioru studentów, ze zbiorem grup studenckich.
przykładzie - zbioru studentów, ze zbiorem grup studenckich.
opr. Lech Banachowski, Krzysztof Matejewski
13
Związek jednoznaczny i jego implementacja
Związek jednoznaczny i jego implementacja
Związek jednoznaczny
Związek jednoznaczny
Gdy instancja związku binarnego jest funkcją częściową związek
Gdy instancja związku binarnego jest funkcją częściową związek
nazywa się jednoznaczny.
nazywa się jednoznaczny.
Instancja związku jednoznacznego między encjami
Instancja związku jednoznacznego między encjami
Grupa
Grupa
i
i
Student
Student
jest funkcją ze zbioru studentów w zbiór grup studenckich.
jest funkcją ze zbioru studentów w zbiór grup studenckich.
Część związku odpowiadająca dziedzinie funkcji jest nazywana
Część związku odpowiadająca dziedzinie funkcji jest nazywana
stroną
stroną
wiele
wiele
związku (lub
związku (lub
encją podrzędną
encją podrzędną
), a część odpowiadająca
), a część odpowiadająca
przeciwdziedzinie funkcji
przeciwdziedzinie funkcji
stroną jeden
stroną jeden
związku (lub
związku (lub
encją nadrzędną
encją nadrzędną
)
)
– i jest oznaczana strzałką.
– i jest oznaczana strzałką.
Grupa
Grupa
jest encją po stronie jeden (nadrzędną) a
jest encją po stronie jeden (nadrzędną) a
Student
Student
encją po
encją po
stronie wiele (podrzędną).
stronie wiele (podrzędną).
Implementacja związku jednoznacznego
Implementacja związku jednoznacznego
Dwie encje połączone związkiem jednoznacznym są implementowane
Dwie encje połączone związkiem jednoznacznym są implementowane
odpowiednio przez dwie tabele. W encji po stronie wiele jest dodany
odpowiednio przez dwie tabele. W encji po stronie wiele jest dodany
klucz obcy określający powiązanie z instancją encji po stronie jeden.
klucz obcy określający powiązanie z instancją encji po stronie jeden.
W naszym przykładzie do encji
W naszym przykładzie do encji
Student
Student
jest dodany klucz obcy
jest dodany klucz obcy
Nr_grupy
Nr_grupy
etykietowany przez FK1, określający powiązanie z
etykietowany przez FK1, określający powiązanie z
instancją encji
instancją encji
Grupa
Grupa
- przez wartość klucza głównego
- przez wartość klucza głównego
Nr_grupy
Nr_grupy
.
.
opr. Lech Banachowski, Krzysztof Matejewski
14
Okienko właściwości związku ("Database
Okienko właściwości związku ("Database
properties")
properties")
Zakładka "Definition"
Zakładka "Definition"
W zakładce
W zakładce
Definition
Definition
związek definiowany jest jako powiązanie
związek definiowany jest jako powiązanie
dwóch zbiorów atrybutów: tworzonego automatycznie klucza
dwóch zbiorów atrybutów: tworzonego automatycznie klucza
obcego w encji po stronie "wiele" i klucza głównego w encji po
obcego w encji po stronie "wiele" i klucza głównego w encji po
stronie "jeden". Pole „Foreign key rrole name” jest miejsscem gdzie
stronie "jeden". Pole „Foreign key rrole name” jest miejsscem gdzie
można opisać rolę, jaką w encji podrzędnej pełni klucz obcy (może
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).
być to przekształcone w etykietę kolumny przyszłej tabeli).
W przykładzie
W przykładzie
Student
Student
jest encją po stronie "wiele", a
jest encją po stronie "wiele", a
Grupa
Grupa
jest encją
jest encją
po stronie "jeden".
po stronie "jeden".
opr. Lech Banachowski, Krzysztof Matejewski
15
Okienko właściwości związku ("Database
Okienko właściwości związku ("Database
properties")
properties")
Zakładka „Name"
Zakładka „Name"
Zakładka
Zakładka
Name
Name
określa sposób odczytywania zawartości związku oraz
określa sposób odczytywania zawartości związku oraz
nazwę dla więzów klucza obcego:
nazwę dla więzów klucza obcego:
Grupa_Student_FK1
Grupa_Student_FK1
.
.
Pola
Pola
Verb phrase
Verb phrase
i
i
Inverse phrase
Inverse phrase
pozwalają opisać verbalnie
pozwalają opisać verbalnie
związek, ułatwiając zrozumienie jego roli. Opis może zostać
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.
wykonany w ujęciu „od strony wiele do strony jeden” i/lub odwrotnie.
MS Visio pozwala wyświetlić opisy związków na diagramie.
MS Visio pozwala wyświetlić opisy związków na diagramie.
opr. Lech Banachowski, Krzysztof Matejewski
16
Okienko właściwości związku ("Database
Okienko właściwości związku ("Database
properties")
properties")
Zakładka "Miscelaneous"
Zakładka "Miscelaneous"
Zakładka
Zakładka
Miscelaneous
Miscelaneous
określa podstawowe własności związku:
określa podstawowe własności związku:
1.
1.
Liczebność
Liczebność
(
(
Cardinality
Cardinality
) - ile egzemplarzy encji po stronie wiele
) - ile egzemplarzy encji po stronie wiele
może być połączone z jednym egzemplarzem encji po stronie
może być połączone z jednym egzemplarzem encji po stronie
jeden. Może to być konkretna liczba np. 2 albo określenie typu
jeden. Może to być konkretna liczba np. 2 albo określenie typu
"zero lub więcej", "jeden lub więcej", "zero lub jeden".
"zero lub więcej", "jeden lub więcej", "zero lub jeden".
opr. Lech Banachowski, Krzysztof Matejewski
17
Okienko właściwości związku ("Database
Okienko właściwości związku ("Database
properties")
properties")
Zakładka "Miscelaneous"
Zakładka "Miscelaneous"
2.
2.
Typ związku
Typ związku
(
(
Relationship type
Relationship type
), który może być:
), który może być:
identyfikujący
identyfikujący
– do identyfikacji egzemplarza encji po stronie
– do identyfikacji egzemplarza encji po stronie
wiele jest potrzebny odpowiadający mu egzemplarz encji po
wiele jest potrzebny odpowiadający mu egzemplarz encji po
stronie jeden i wtedy encja po stronie wiele nazywa się encją słabą
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
(zależną) - inaczej mówiąc wartość klucza obcego wchodzi w skład
klucza głównego encji po stronie wiele
klucza głównego encji po stronie wiele
nieidentyfikujący
nieidentyfikujący
- wartość klucza obcego nie wchodzi w skład
- wartość klucza obcego nie wchodzi w skład
klucza głównego encji po stronie wiele.
klucza głównego encji po stronie wiele.
opr. Lech Banachowski, Krzysztof Matejewski
18
Okienko właściwości związku ("Database
Okienko właściwości związku ("Database
properties")
properties")
Zakładka „Miscelaneous”
Zakładka „Miscelaneous”
3.
3.
Opcję
Opcję
Optional
Optional
– czy wartość klucza obcego jest opcjonalna tzn.
– czy wartość klucza obcego jest opcjonalna tzn.
czy dopuszcza wartość NULL. Związek jest opcjonalny gdy wartość
czy dopuszcza wartość NULL. Związek jest opcjonalny gdy wartość
klucza obcego dopuszcza wartość NULL. Związek jest wymagany
klucza obcego dopuszcza wartość NULL. Związek jest wymagany
gdy wartość klucza obcego musi być określona tzn. nie może być
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
NULL (inaczej mówiąc dla każdego egzemplarza encji po stronie
wiele istnieje odpowiadający mu egzemplarz encji po stronie
wiele istnieje odpowiadający mu egzemplarz encji po stronie
jeden).
jeden).
opr. Lech Banachowski, Krzysztof Matejewski
19
Okienko właściwości związku ("Database
Okienko właściwości związku ("Database
properties")
properties")
Zakładka "Ref. Integrity"
Zakładka "Ref. Integrity"
Zakładka
Zakładka
Ref. Integrity
Ref. Integrity
określa akcje referencyjne, które zostaną
określa akcje referencyjne, które zostaną
podjęte w przypadku naruszenia więzów spójności referencyjnej
podjęte w przypadku naruszenia więzów spójności referencyjnej
przez operacje usuwania i aktualizacji wierszy w tabeli nadrzędnej.
przez operacje usuwania i aktualizacji wierszy w tabeli nadrzędnej.
Dostępne są następujące opcje:
Dostępne są następujące opcje:
1.
1.
Odmawiaj wykonania akcji (
Odmawiaj wykonania akcji (
No action, Restricted
No action, Restricted
) - nie wykonuj
) - nie wykonuj
zmiany, jeśli naruszyłaby ona więzy spójności referencyjnej. System
zmiany, jeśli naruszyłaby ona więzy spójności referencyjnej. System
zarządzania bazą danych „odmówi” wykonania polecenia, informując
zarządzania bazą danych „odmówi” wykonania polecenia, informując
o tym użytkownika i/lub zapisując informację o tym w logu.
o tym użytkownika i/lub zapisując informację o tym w logu.
opr. Lech Banachowski, Krzysztof Matejewski
20
Okienko właściwości związku ("Database
Okienko właściwości związku ("Database
properties")
properties")
Zakładka "Ref. Integrity"
Zakładka "Ref. Integrity"
2.
2.
Propaguj zmiany do encji podrzędnej (
Propaguj zmiany do encji podrzędnej (
Cascade
Cascade
) - przy aktualizacji
) - przy aktualizacji
instancji encji nadrzędnej uaktualnij wartość klucza obcego w
instancji encji nadrzędnej uaktualnij wartość klucza obcego w
encji podrzędnej, a przy usuwaniu, razem z egzemplarzem encji
encji podrzędnej, a przy usuwaniu, razem z egzemplarzem encji
nadrzędnej, usuń wszystkie powiązane przez wartość klucza
nadrzędnej, usuń wszystkie powiązane przez wartość klucza
obcego egzemplarze encji podrzędnej. Ta akcja jest w
obcego egzemplarze encji podrzędnej. Ta akcja jest w
szczególności naturalna dla wszystkich związków identyfikujących.
szczególności naturalna dla wszystkich związków identyfikujących.
3.
3.
Wstaw NULL (
Wstaw NULL (
Set Null
Set Null
) - w przypadku aktualizacji lub usuwania instancji
) - w przypadku aktualizacji lub usuwania instancji
encji nadrzędnej, w miejsce wartość klucza obcego w odpowiadających
encji nadrzędnej, w miejsce wartość klucza obcego w odpowiadających
jej instancjach encji podrzędnej wstaw NULL.
jej instancjach encji podrzędnej wstaw NULL.
opr. Lech Banachowski, Krzysztof Matejewski
21
Okienko właściwości związku ("Database
Okienko właściwości związku ("Database
properties")
properties")
Zakładka "Ref. Integrity"
Zakładka "Ref. Integrity"
4.
4.
Wyłącz więzy spójności referencyjnej i wykonaj operację (
Wyłącz więzy spójności referencyjnej i wykonaj operację (
Do
Do
not enforce
not enforce
). System zarządzania bazą danych przestaje
). System zarządzania bazą danych przestaje
odpowiadać za spójność danych.
odpowiadać za spójność danych.
Niektóre systemy dopuszczają jeszcze jedną opcję:
Niektóre systemy dopuszczają jeszcze jedną opcję:
5.
5.
Wstaw wartość domyślną (
Wstaw wartość domyślną (
Set Default
Set Default
) - w przypadku
) - w przypadku
aktualizacji lub usuwania instancji encji nadrzędnej, zamiast
aktualizacji lub usuwania instancji encji nadrzędnej, zamiast
wartości klucza obcego w odpowiadających jej instancjach encji
wartości klucza obcego w odpowiadających jej instancjach encji
podrzędnej wstaw wartość domyślną.
podrzędnej wstaw wartość domyślną.
opr. Lech Banachowski, Krzysztof Matejewski
22
Transformacja związku niejednoznacznego
Transformacja związku niejednoznacznego
Każdy związek niejednoznaczny (czyli taki związek, który nie jest
Każdy związek niejednoznaczny (czyli taki związek, który nie jest
jednoznaczny) trzeba sprowadzić do związków jednoznacznych.
jednoznaczny) trzeba sprowadzić do związków jednoznacznych.
Dla związku o liczbie argumentów większej niż dwa
Dla związku o liczbie argumentów większej niż dwa
Z(E1
Z(E1
,...,En),
,...,En),
n>2
n>2
wprowadzamy nową encję
wprowadzamy nową encję
E0
E0
i n jednoznacznych
i n jednoznacznych
związków binarnych
związków binarnych
Zi(E0,Ei)
Zi(E0,Ei)
łączących nową encję z encjami
łączących nową encję z encjami
już istniejącymi. Klucz encji
już istniejącymi. Klucz encji
E0
E0
jest sumą kluczy encji
jest sumą kluczy encji
E1,...,En
E1,...,En
.
.
Dla
niejednoznacznego
związku
binarnego
Dla
niejednoznacznego
związku
binarnego
Z(E1,E2)
Z(E1,E2)
wprowadzamy nową encję
wprowadzamy nową encję
E0
E0
i dwa związki jednoznaczne
i dwa związki jednoznaczne
Z1(E0,E1)
Z1(E0,E1)
oraz
oraz
Z2(E0,E2)
Z2(E0,E2)
łączące nowy zbiór encji ze starymi.
łączące nowy zbiór encji ze starymi.
Klucz encji
Klucz encji
E0
E0
jest sumą kluczy encji
jest sumą kluczy encji
E1
E1
i
i
E2
E2
.
.
Wprowadzana encja reprezentująca związek nazywa się
Wprowadzana encja reprezentująca związek nazywa się
encją
encją
asocjacyjną
asocjacyjną
. Jest ona zawsze encją słabą (zależną), bo związki
. Jest ona zawsze encją słabą (zależną), bo związki
łączące
ją
z
encjami
-
argumentami
związku
łączące
ją
z
encjami
-
argumentami
związku
niejednoznacznego są związkami identyfikującymi.
niejednoznacznego są związkami identyfikującymi.
opr. Lech Banachowski, Krzysztof Matejewski
23
Transformacja związku niejednoznacznego -
Transformacja związku niejednoznacznego -
przykład
przykład
Powyżej przedtawiony jest przykład opisanej transformacji dla związku
Powyżej przedtawiony jest przykład opisanej transformacji dla związku
trójargumentowego: wykładowca prowadzi zajęcia dla grupy studenckiej
trójargumentowego: wykładowca prowadzi zajęcia dla grupy studenckiej
z przedmiotu nauczania. Stosując opisaną metodę wprowadzimy nową
z przedmiotu nauczania. Stosując opisaną metodę wprowadzimy nową
encję asocjacyjną
encję asocjacyjną
, której zadaniem będzie opisanie związku, jaki
, której zadaniem będzie opisanie związku, jaki
zachodzi pomiędzy
zachodzi pomiędzy
wykładowcami
wykładowcami
,
,
przedmiotami nauczania
przedmiotami nauczania
i
i
grupami
grupami
.
.
opr. Lech Banachowski, Krzysztof Matejewski
24
Transformacja związku niejednoznacznego -
Transformacja związku niejednoznacznego -
przykład
przykład
Jednoznaczny identyfikator nowej encji tworzą trzy wprowadzone
Jednoznaczny identyfikator nowej encji tworzą trzy wprowadzone
związki tj. klucze obce do encji
związki tj. klucze obce do encji
Grupa
Grupa
,
,
Wykladowca
Wykladowca
i
i
Przedmiot
Przedmiot
.
.
Istotne jest ustawienie typu tych związków jako identyfikujących. To
Istotne jest ustawienie typu tych związków jako identyfikujących. To
właśnie spowoduje umieszczenie kluczy obcych z encji
właśnie spowoduje umieszczenie kluczy obcych z encji
Grupa
Grupa
,
,
Wykladowca
Wykladowca
i
i
Przedmiot
Przedmiot
w części identyfikującej (czzyli wśród
w części identyfikującej (czzyli wśród
atrybutów klucza głównego) encji asocjacyjnej
atrybutów klucza głównego) encji asocjacyjnej
Zajęcia
Zajęcia
.
.
W encji asocjacyjnej można umieszczać atrybuty charakteryzujące
W encji asocjacyjnej można umieszczać atrybuty charakteryzujące
związek np. między osobami, projektami i rolami - atrybut
związek np. między osobami, projektami i rolami - atrybut
G
G
odz_rozp
odz_rozp
,
,
Czas_trwania
Czas_trwania
,
,
Sala
Sala
.
.
opr. Lech Banachowski, Krzysztof Matejewski
25
Związek rekurencyjny
Związek rekurencyjny
Związek rekurencyjny jest to związek zachodzący pomiędzy tą samą
Związek rekurencyjny jest to związek zachodzący pomiędzy tą samą
encją, np. „Jedna
encją, np. „Jedna
Osoba
Osoba
jest kierownikiem drugiej
jest kierownikiem drugiej
osoby
osoby
”
”
. W
. W
pokazanym przykładzie na kluczach obcych zostały utworzone
pokazanym przykładzie na kluczach obcych zostały utworzone
(przez projektanta bazy) indeksy, co jest często stosowaną
(przez projektanta bazy) indeksy, co jest często stosowaną
praktyką.
praktyką.
opr. Lech Banachowski, Krzysztof Matejewski
26
Związek jedno-jednoznaczny, jeden-do-jeden
Związek jedno-jednoznaczny, jeden-do-jeden
Zwiazek jedno-jednoznaczny to związek jednoznaczny, kórego
Zwiazek jedno-jednoznaczny to związek jednoznaczny, kórego
instancja jest różnowartościową funkcją częściową . Inaczej
instancja jest różnowartościową funkcją częściową . Inaczej
mówiąc, każdej instancji encji po stronie „wiele” odpowiada co
mówiąc, każdej instancji encji po stronie „wiele” odpowiada co
najwyżej jedna instancja encji po stronie „jeden” - na przykład
najwyżej jedna instancja encji po stronie „jeden” - na przykład
związek "Każdy student jest osobą" (Osoba może być studentem,
związek "Każdy student jest osobą" (Osoba może być studentem,
ale nie musi nim być).
ale nie musi nim być).
opr. Lech Banachowski, Krzysztof Matejewski
27
Metody odwzorowania związku jedno-
Metody odwzorowania związku jedno-
jednoznacznego
jednoznacznego
Związek jedno-jednoznaczny może zostać odwzorowany w tabele bazy
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
danych na jeden z trzech sposobów (na przykładzie związku między
encjami
encjami
Osoba
Osoba
i
i
Student
Student
):
):
1.
1.
(Stosowana przez MS Visio) Używamy dwóch tabel:
(Stosowana przez MS Visio) Używamy dwóch tabel:
Student
Student
i
i
Osoba
Osoba
.
.
W tabeli
W tabeli
Osoba
Osoba
zapisujemy atrybuty wspólne dla wszystkich osób. W
zapisujemy atrybuty wspólne dla wszystkich osób. W
tabeli
tabeli
Student
Student
zapisujemy klucz główny z tabeli
zapisujemy klucz główny z tabeli
Osoba
Osoba
(identyfikujący
(identyfikujący
studenta jako osobę) oraz atrybuty charakterystyczne tylko dla
studenta jako osobę) oraz atrybuty charakterystyczne tylko dla
studentów.
studentów.
Wadą tego rozwiązania jest konieczność częstego używania złączenia
Wadą tego rozwiązania jest konieczność częstego używania złączenia
dwóch tabel, zaletą jest elegancja schematu.
dwóch tabel, zaletą jest elegancja schematu.
2.
2.
Używamy tylko jednej tabeli, w której są przechowywane wszystkie
Używamy tylko jednej tabeli, w której są przechowywane wszystkie
możliwe atrybuty dotyczące osób. Jeśli osoba nie jest studentem,
możliwe atrybuty dotyczące osób. Jeśli osoba nie jest studentem,
wartości atrybutów charakterystycznych tylko dla studentów
wartości atrybutów charakterystycznych tylko dla studentów
pozostają NULL.
pozostają NULL.
Wadą tego rozwiązania jest potencjalnie duża liczba wartości NULL w
Wadą tego rozwiązania jest potencjalnie duża liczba wartości NULL w
tabeli.
tabeli.
3.
3.
Używamy tylko jednej tabeli
Używamy tylko jednej tabeli
Student
Student
. W przypadku, gdy zajdzie
. W przypadku, gdy zajdzie
potrzeba reprezentowania jeszcze innego typu osób jak np.
potrzeba reprezentowania jeszcze innego typu osób jak np.
Pracownik – dla tej kategorii osób definiujemy osobną tabelę. Gdy
Pracownik – dla tej kategorii osób definiujemy osobną tabelę. Gdy
jest potrzebna informacja obejmująca wszystkie osoby, trzeba wtedy
jest potrzebna informacja obejmująca wszystkie osoby, trzeba wtedy
stosować sumowanie zawartości tabel.
stosować sumowanie zawartości tabel.
Metoda ta jest dobra, gdy podział na kategorie osób jest rozłączny. Gdy
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.
podział nie jest rozłączny, ta sama informacja będzie powtarzana, np.
informacja o pracownikach będących jednocześnie studentami.
informacja o pracownikach będących jednocześnie studentami.
opr. Lech Banachowski, Krzysztof Matejewski
28
Generowanie bazy danych z modelu
Generowanie bazy danych z modelu
Po wybraniu docelowego systemu bazodanowego (w naszym przypadku MS Access)
Po wybraniu docelowego systemu bazodanowego (w naszym przypadku MS Access)
możemy wygenerować z programu MS Visio tabele w bazie danych:
możemy wygenerować z programu MS Visio tabele w bazie danych:
1.
1.
Tworzymy pustą bazę danych MS Access.
Tworzymy pustą bazę danych MS Access.
2.
2.
Z menu Visio wybieramy opcję "Database -> Generate" wywołując kreator
Z menu Visio wybieramy opcję "Database -> Generate" wywołując kreator
generacji.
generacji.
3.
3.
W pierwszym okienku dialogowym kreatora wybieramy opcję "Generate new
W pierwszym okienku dialogowym kreatora wybieramy opcję "Generate new
database".
database".
4a
4a
. Przy pierwszym użyciu:
. Przy pierwszym użyciu:
Wybieramy opcję: "Create MDB file" i "New" (data source name - DSN).
Wybieramy opcję: "Create MDB file" i "New" (data source name - DSN).
W kolejnych okienkach wybieramy opcje "System data source", "Microsoft Access
W kolejnych okienkach wybieramy opcje "System data source", "Microsoft Access
driver".
driver".
Po utworzeniu DSN podajemy ścieżkę do utworzonej wcześniej bazy danych MS
Po utworzeniu DSN podajemy ścieżkę do utworzonej wcześniej bazy danych MS
Access.
Access.
4b
4b
. Przy kolejnym użyciu:
. Przy kolejnym użyciu:
Wybieramy opcję: "MDB file already exists".
Wybieramy opcję: "MDB file already exists".
W kolejnych okienkach wybieramy DSN z listy rozwijanej i ścieżkę do utworzonej
W kolejnych okienkach wybieramy DSN z listy rozwijanej i ścieżkę do utworzonej
wcześniej bazy danych Access.
wcześniej bazy danych Access.
UWAGA
UWAGA
:
:
Opcja generowania bazy danych z modelu wykonanego w MS Visio
Opcja generowania bazy danych z modelu wykonanego w MS Visio
dostępna jest w wersjach 2002 i 2003 tylko w wydaniach „Enterprise”. W
dostępna jest w wersjach 2002 i 2003 tylko w wydaniach „Enterprise”. W
powszechnie dostępnych wydaniach „Proffesional” możliwe jest tylko wykonanie
powszechnie dostępnych wydaniach „Proffesional” możliwe jest tylko wykonanie
diagramu związków edncji.
diagramu związków edncji.
opr. Lech Banachowski, Krzysztof Matejewski
29
Słownik
Słownik
encja
encja
(obiekt) coś co istnieje, co jest odróżnialne od innych, o czym
(obiekt) coś co istnieje, co jest odróżnialne od innych, o czym
informację trzeba znać lub przechowywać. Encje o tych samych
informację trzeba znać lub przechowywać. Encje o tych samych
własnościach tworzą typy (zbiory) encji. Reprezentacją graficzną encji
własnościach tworzą typy (zbiory) encji. Reprezentacją graficzną encji
jest ramka (prostokąt). Encja może być niezależna lub zależna (od
jest ramka (prostokąt). Encja może być niezależna lub zależna (od
innych encji przez związek lub związki z nimi).
innych encji przez związek lub związki z nimi).
atrybut
atrybut
jest to właściwość encji danego typu, reprezentowana pewną
jest to właściwość encji danego typu, reprezentowana pewną
wartością np. liczbą całkowitą, liczbą rzeczywistą, napisem.
wartością np. liczbą całkowitą, liczbą rzeczywistą, napisem.
klucz
klucz
(jednoznaczny identyfikator) jest to zbiór (może być
(jednoznaczny identyfikator) jest to zbiór (może być
jednoelementowy)
atrybutów
danej
encji,
których
wartości
jednoelementowy)
atrybutów
danej
encji,
których
wartości
jednoznacznie identyfikują każdą instancję tej encji. Jeden klucz -
jednoznacznie identyfikują każdą instancję tej encji. Jeden klucz -
główny, pozostałe nazywają się alternatywnymi.
główny, pozostałe nazywają się alternatywnymi.
związek
związek
- uporządkowana lista encji, poszczególne encje mogą
- uporządkowana lista encji, poszczególne encje mogą
występować wielokrotnie.
występować wielokrotnie.
instancja
instancja
zwązku
zwązku
- relacja określona między zbiorami egzemplarzy
- relacja określona między zbiorami egzemplarzy
encji wchodzącymi w skład związku. Relacja ta zwykle jest zmienna w
encji wchodzącymi w skład związku. Relacja ta zwykle jest zmienna w
czasie.
czasie.
związek
związek
binarny
binarny
- związek dwuargumentowy (między dwiema
- związek dwuargumentowy (między dwiema
encjami).
encjami).
związek
związek
jednoznaczny
jednoznaczny
(jeden-do-wiele) - związek binarny, którego
(jeden-do-wiele) - związek binarny, którego
instancja jest dwuargumentową funkcją częściową.
instancja jest dwuargumentową funkcją częściową.
opr. Lech Banachowski, Krzysztof Matejewski
30
Słownik
Słownik
liczebność
liczebność
związku
związku
- ile egzemplarzy encji po stronie wiele może
- ile egzemplarzy encji po stronie wiele może
być połączone z jednym egzemplarzem encji po stronie jeden.
być połączone z jednym egzemplarzem encji po stronie jeden.
Może to być konkretna liczba np. 2 albo określenie typu "zero lub
Może to być konkretna liczba np. 2 albo określenie typu "zero lub
więcej", "jeden lub więcej", "zero lub jeden".
więcej", "jeden lub więcej", "zero lub jeden".
związek
związek
identyfikujący
identyfikujący
- klucz obcy wchodzi w skład klucza
- klucz obcy wchodzi w skład klucza
głównego encji po stronie wiele.
głównego encji po stronie wiele.
związek
związek
nieidentyfikujący
nieidentyfikujący
- klucz obcy nie wchodzi w skład
- klucz obcy nie wchodzi w skład
klucza głównego encji po stronie wiele.
klucza głównego encji po stronie wiele.
związek
związek
opcjonalny
opcjonalny
- wartość klucza obcego jest opcjonalna,
- wartość klucza obcego jest opcjonalna,
tzn. dopuszcza wartość NULL.
tzn. dopuszcza wartość NULL.
związek
związek
wymagany
wymagany
- wartość klucza obcego jest wymagana tzn.
- wartość klucza obcego jest wymagana tzn.
nie dopuszcza wartości NULL.
nie dopuszcza wartości NULL.
związek
związek
rekurencyjny
rekurencyjny
- związek binarny, który zachodzi między
- związek binarny, który zachodzi między
tą samą encją w dwóch rolach, np. "Jedna osoba jest kierownikiem
tą samą encją w dwóch rolach, np. "Jedna osoba jest kierownikiem
drugiej osoby".
drugiej osoby".
związek
związek
jedno-jednoznaczny
jedno-jednoznaczny
(jeden-do-jeden) - związek
(jeden-do-jeden) - związek
jednoznaczny którego instancja jest różnowartościową funkcją
jednoznaczny którego instancja jest różnowartościową funkcją
częściową np. związek "Każdy student jest osobą" ("Osoba może
częściową np. związek "Każdy student jest osobą" ("Osoba może
być studentem, ale nie musi nim być").
być studentem, ale nie musi nim być").
opr. Lech Banachowski, Krzysztof Matejews
opr. Lech Banachowski, Krzysztof Matejews
ki
ki
31
31
Koniec wykładu II
Koniec wykładu II
Do zobaczenia na wykładzie III
Do zobaczenia na wykładzie III