Definicja obiektowego modelu danych: struktura i zachowanie
Transkrypt
Definicja obiektowego modelu danych: struktura i zachowanie
Definicja obiektowego modelu danych: struktura i zachowanie
Podziękowania
•
Dla Grzegorza Enzo Dołęgowskiego za wpisanie moich notatek do komputera.
Relacyjna baza danych (przypomnienie)
Pojęcia pierwotne
A – zbiór nazw atrybutów
D – zbiór wartości atomowych (napisy, liczby, daty, wartości logiczne)
E – zbiór typów atomowych (integer, float, string, boolean, date)
K – zbiór nazw relacji (potem będzie to zbiór klas)
Schemat tabel (relacji)
kol : K → Pfin (A)
typ : K × Α → E
(nazwie relacji przyporządkowujemy skończone zbiory nazw kolumn)
(nazwie relacji i nazwie atrybutu przyporządkowujemy typ elementarny)
Schemat bazy relacyjnej
SCHrel = (K, kol, typ)
Krotka relacji
Jeśli R ∈ K, to krotka o schemacie R jest funkcją przypisującą wartości nazwom kolumn:
t : kol(R) → D
dla A ∈ kol(R), t(A) ∈ Dtyp(R,A)
W – zbiór wszystkich możliwych krotek
Egzemplarz relacji
Jeśli R ∈ K, to relacja o nazwie R jest skończonym zbiorem krotek o schemacie R.
Egzemplarz relacyjnej bazy danych
Funkcja val, która przypisuje nazwom relacji egzemplarze relacji:
INSTrel = (val)
val : K → Pfin (W)
Poprawność relacyjnej bazy danych
SCHrel = (K, kol, typ)
INSTrel = (val)
Dla każdego R ∈ K i dla każdej krotki t ∈ val(R), t ma schemat R.
Obiektowa baza danych
Pojęcia pierwotne
A – zbiór nazw atrybutów
O – zbiór identyfikatorów obiektów (OID)
D – wartości atomowe (napisy, liczby, wartości logiczne)
K – zbiór nazw klas i IsA częściowy porządek na K
E – zbiór typów atomowych (integer, float, string, boolean, date)
Wartości złożone (W)
W to najmniejszy zbiór o następujących właściwościach:
1. D ⊆ W
(skalar)
2. O ⊆ W
(referencja)
3. Jeśli A1, A2, ..., An ∈ A (Ai ≠ Aj dla i ≠ j) oraz w1, w2, ..., wn ∈ W,
to [A1:w1, A2:w2, ..., An:wn] ∈ W
(krotka)
4. Jeśli w1, w2, ...,wm ∈ W (wi ≠ wj dla i ≠ j), to {w1, w2, ...,wm} ∈ W
(zbiór)
Obiekt
Para (o, w) przy czym o ∈ O, w ∈ W.
Typy (T)
T to najmniejszy zbiór o następujących właściwościach:
1. E ⊆ T
(typ elementarny)
2. K ⊆ T
(typ referencyjny)
3. Jeśli T ∈ T, to {T} ∈ T
(typ zbiorowy)
4. Jeśli A1, A2, ..., An ∈ A (Ai ≠ Aj dla i ≠ j) oraz T1, T2, ..., Tn ∈ T, to
[A1:T1, A2:T2, ..., An:Tn] ∈ T
(typ krotkowy)
Hierarchia typów
≤ częściowy porządek na T (podtyp ≤ nadtyp)
≤ jest najmniejszym częściowym porządkiem o następujących właściwościach:
1. Jeśli K IsA L, to K ≤ L
[Pracownik IsA Osoba, więc Pracownik ≤ Osoba]
2. Jeśli T = [A1:T1, A2:T2, ..., An:Tn] ∈ T i U = [B1:U1, B2:U2, ..., Bm:Um] ∈ T oraz n ≤ m i
dla każdego i = 1, 2, ..., n istnieje j takie, że Ai = Bj i Uj ≤ Ti, to U ≤ T.
3. Jeśli T ≤ U, to {T} ≤ {U}.
Schemat struktury
SCHstruct = (K, IsA, typ)
typ : K → T
musi spełniać warunek:
K IsA L ⇒ typ(K) ≤ typ(L)
Rozszerzenie bazowe
Zbiór obiektów klasy
inst : K → Pfin(O)
dla każdego K, L ∈ K, K ≠ L zachodzi inst(K) ∩ inst(L) = ∅
Rozszerzenie
Zbiór obiektów klasy i jej podklas
inst* : K → Pfin(O)
inst*(K) =
∪
inst(L)
L∈K
L IsA K
Dziedzina (typu)
dom : T → P(W)
1. dom(integer) = zbiór liczb całkowitych
2. dom(K) = inst*(K) dla K ∈ K
3. Jeśli T = [A1:T1, A2:T2, ..., An:Tn] ∈ T, to
dom(T) = {[A1:w1, A2:w2, ..., An:wn] : dla i = 1, 2, ..., n wi ∈ dom(Ti)}
4. Jeśli T = {U}, to dom(T) = Pfin(dom(U))
Egzemplarz bazy danych (struktura)
Jeśli SCHstruct = (K, IsA, typ) jest schematem struktury, to
INSTstruct = (inst, val)
jest egzemplarzem schematu SCHstruct o ile spełnione są następujące warunki:
inst : K → Pfin(O)
val : O → W
(1) inst jest bazowym rozszerzeniem
(2) val jest wartościowaniem
(3) o ∈ inst(K), K ∈ K ⇒ val(o) ∈ dom(typ(K))
typy
klasy
K
typ
dom
inst
O
obiekty
T
val
W
wartości
Dziedziczenie struktury
Niech SCHstruct = (K, IsA, typ) będzie schematem struktury.
Jeśli typ(K) jest krotkowy, to typ*(K) zawiera wszystkie składowe typ(K) oraz wszystkie A:T takie,
że A:T jest składową L taką, że K IsA L i nie istnieje M różne od K i L takie, że A jest składową M
i K IsA M i M IsA L.
SCHstruct jest poprawny o ile:
1. przekształcenie typ* istnieje, oraz
2. K IsA L ⇒ typ*(K) ≤ typ*(L)
Wartości domyślne atrybutów
valst : K → Wkrotkowe
Musi być spełniać warunek — jeśli K ∈ K i A:w jest składową valst(K), to typ*(K) zawiera
składową A. Niech T będzie typem A w typ*(K). Wówczas musi być prawdą, że w ∈ dom(T).
Schemat struktury z wartościami domyślnymi
SCHstruct = (K, IsA, typ, valst)
val*: O → W
Wartościowanie z wartościami domyślnymi
val*(o) jest najuboższą wartością krotkową, która zawiera val(o) i spełnia poniższy warunek:
Jeśli
1. typ*(K) jest krotkowy i ma składową A:T,
2. istnieje klasa L taka, że A:w jest składową valst(L) i K IsA L
3. nie istnieje klasa M, taka że valst(M) ma składową A oraz K IsA M i M IsA L [nie istnieje
klasa pośrednia między K i L, która definiowałaby wartość domyślną dla A],
4. val(o) nie ma składowej A,
5. o ∈ inst(K),
to:
6. A:w jest składową val*(o).
Egzemplarz bazy danych z dziedziczeniem i wartościami domyślnymi
INSTstruct = (inst, val) jest egzemplarzem SCHstruct = (K, IsA, typ, valst), o ile spelnione są
następujące warunki:
1. Przekształcenie typ* istnieje.
2. Przekształcenie val* istnieje.
3. o ∈ inst(K), K ∈ K ⇒ val*(o) ∈ dom(typ*(K))
typy
klasy
K
typ*
inst
O
obiekty
T
dom
val*
W
wartości
Brak konfliktów dziedziczenia
SCHstruct = (K, IsA, typ, valst) jest wolny od konfliktów dziedziczenia, wtw. dla każdej trójki K, L,
M ∈ K takich, że M IsA K, M IsA L zachodzi
1. Jeśli typ(K) i typ(L) zawiera składową A, ale typ(M) jej nie zawiera, to istnieje klasa J, taka że
typ(J) zawiera A oraz J IsA K, J IsA L, M IsA J.
2. Dokładnie to samo odnosi się do valst.
K
L
J
M
Model zachowania
M – zbiór nazw metod
Sygnatura
M : K × T1 × ... × Tk → T
M ∈ M; K ∈ K; T1, T2, ..., Tk ∈ T
Schemat zachowania
SCHzach = (K, IsA, S)
S to skończony zbiór sygnatur metod o następującej właściwości
Jeśli (M : K × T1 × ... × Tk → T) ∈ S i M : K × U1 × ... × Um → U),
to k = m, U ≤ T i dla i = 1, 2, ..., k Ti ≤ Ui
Egzemplarz schematu zachowania
SCHzach = (K, IsA, S)
INSTzach = (inst, impl)
impl : S → Implementacje metod
impl(( M : K × T1 × ... × Tk → T)) = I
I : dom(K) × dom(T1) × ... × dom(Tk) → dom(T)
(funkcja częściowa)
Pojedyncza dyspozycja = wybór metody tylko zależy tylko pierwszego argumentu.
Wielokrotna dyspozycja = wybór metody tylko zależy od wszystkich argumentów.
Diagram modelu formalnego
IsA
K
typ
dom
W
inst
T
O
val
sygn
.
S
impl
realizacja
Schemat i egzemplarz obiektowej bazy danych
SCHstruct = (K, IsA, typ, valst)
SCHzach = (K, IsA, S)
SCH = (K, IsA, typ, valst, S)
INSTstruct = (inst, val)
INSTzach = (inst, impl)
INST = (inst, val, impl)
schemat struktury
schemat zachowania
schemat bazy obiektów
egzemplarz schematu struktury
egzemplarz schematu zachowania
egzemplarz bazy obiektów