Wprowadzenie do baz danych
Literatura
M. Muraszkiewicz, H. Rybi艅ski: Bazy danych. Warszawa, 1993. J. D. Ullman: Systemy baz danych. WNT, Warszawa 1988.
Poj臋cie bazy danych
Czym jest baza danych
pami臋膰 trwa艂a danych (persistant data)
okre艣lona struktura i regu艂y integralno艣ci
Cele u偶ytkowania b.d.
niezawodno艣膰 zapisu
integralno艣膰 danych
sprawno艣膰 zapyta艅
wygodne interfejsy
wielodost臋p
zabezpieczenia dost臋pu
System zarz膮dzania baz膮 danych (DBMS)
izoluje programy od reprezentacji fizycznej
s艂ownik danych
j臋zyk opisu danych
extended dictionary
mechanizmy dost臋pu:
j臋zyk zapyta艅 i manipulacji danymi
optymalizacja dost臋pu
mechanizmy ochrony:
autoryzacja dost臋pu
ochrona sp贸jno艣ci
mechanizmy do odtwarzania po awarii
wielodost臋p i dost臋p przez sie膰
zarz膮dzanie transakcjami
klient-serwer
mechanizmy dla rozproszonych b.d.
narz臋dzia do budowy interfejs贸w:
narz臋dzia do zapyta艅 interakcyjnych
dost臋p z j臋zyk贸w 3GL
specjalizowane narz臋dzia 4GL
Przyk艂adowe zastosowania baz danych
systemy finansowo-ksi臋gowe
systemy rezerwacji (np. lotniczej)
systemy wspomagaj膮ce zarz膮dzanie
CAD (Computer Aided Design)
GIS (Geographical Information Systems)
Sk艂adniki dzia艂aj膮cego systemu b.d.
struktura danych
regu艂y integralno艣ci
dane
aplikacja:
formularze
raporty
programy przetwarzaj膮ce
zapytania ad-hoc
J臋zyki dost臋pu
budowa:
proceduralne
nieproceduralne
typ dost臋pu:
nawigacyjne (rekord bie偶膮cy)
zwracaj膮ce struktury (np. tabele)
Alternatywy dla b.d.
systemy plikowe (flat files):
sekwencyjne (SAM)
indeksowo-sekwencyjne (ISAM)
z dost臋pem bezpo艣rednim
j臋zyk Cobol
Modele baz danych
Podzia艂 zada艅 w projektowaniu b.d.
u偶ytkownik -- odbiorca systemu
analityk
projektant
programista
administrator b.d. (DBA)
Model zewn臋trzny
opisuje 露wiat z punktu widzenia u偶ytkownik贸w b.d.
mo偶e istnie膰 wiele modeli zewn臋trznych tej samej rzeczywisto艣ci
nie musi by膰 zwi膮zany z konkretnym modelem danych
Model poj臋ciowy (konceptualny)
tworzony przez analityk贸w
opisuje 艣wiat w kategoriach konkretnego modelu danych
abstrahuje od szczeg贸艂贸w implementacji
odpowiada na pytanie "co?" a nie "jak?"
Model logiczny
tworzony przez projektant贸w b.d.
opisuje projekt struktury w kontek艣cie konkretnej implementacji
model struktury zgodny z modelem danych, a nie z ich fizyczn膮 reprezentacj膮
mo偶e zawiera膰 parametry dotycz膮ce reprezentacji fizycznej, np.:
partycjonowania danych
alokacji pami臋ci
Reprezentacja fizyczna
tworzona przez SZBD
izolowana od aplikacji przez SZBD
zarz膮dzana przez administratora
Modele danych
Model hierarchiczny
Cechy podstawowe
struktura danych ma posta膰 drzewa
w臋z艂y -- typy opisywanych obiekt贸w
艂uki -- zwi膮zki typu ojciec-syn
drzewo jest uporz膮dkowane, tj. na ka偶dym poziomie kolejno艣膰 w臋z艂贸w jest okre艣lona
opis obiektu (rekord) zbudowany z p贸l zawieraj膮cych dane opisuj膮ce obiekt
zwi膮zki zrealizowane jako wska藕niki
Przyk艂ad
Hierarchiczna struktura danych
J臋zyki obs艂ugi
o charakterze nawigacyjnym
operacje typu:
GET LEFTMOST typ WHERE warunek
GET NEXT typ
Ograniczenia
nie ma zwi膮zk贸w typu n-m (np. oddzia艂y pomieszane w kilku budynkach)
tylko jeden rodzaj zwi膮zku mi臋dzy dwoma typami obiekt贸w
dodatkowe zwi膮zki
(np. pracownik-budynek):
dodatkowe drzewa hierarchii
odsy艂acze do rekord贸w "orygina艂u"
Znaczenie praktyczne
system IBM IMS (1978)
bardzo wielkie dane zgromadzone
poprzednik u偶yty w programie Apollo
nowych projekt贸w nie robi si臋
Model sieciowy
Cechy podstawowe
struktura danych ma posta膰 grafu (sieci)
wierzcho艂ki grafu -- typy obiekt贸w
艂uki w grafie -- wi膮zania mi臋dzy typami
opis obiektu (rekord) zbudowany z p贸l zawieraj膮cych dane opisuj膮ce obiekt
reprezentacja wi膮za艅 (wska慕niki):
odes艂anie bezpo露rednie (jednowart.)
odes艂anie inwersyjne (wielowart.)
wi膮zanie codasylowe
Realizacja wi膮za艅 -- model DBTG CODASYL
rekordy powi膮zane stanowi膮 kolekcj臋 (set)
jeden rekord nadrz臋dny
wiele rekord贸w podrz臋dnych
kolekcja realizowana jako lista zamkni臋ta
brak bezpo露redniej reprezentacji
wi膮za艅 n-m
J臋zyki obs艂ugi
j臋zyki manipulowania -- nawigacyjne
CODASYL: j臋zyk definiowania danych pozwala okre艣li膰 spos贸b automatycznego w艂膮czania rekord贸w do kolekcji
Przyk艂ady
Wi臋zy i ich realizacja w CODASYL
Spos贸b realizacji wi膮zania m-n
Znaczenie praktyczne
system IDS (General Electric)
obecnie raczej nie u偶ywany
Model relacyjny
Cechy podstawowe
dane zawarte w tabelach
tabele sk艂adaj膮 si臋 z kolumn
liczba kolumn i typy -- sta艂e
liczba wierszy zmienna
wiersze nie maj膮 to偶samo艣ci innej ni偶 wynikaj膮ca z zawarto艣ci kolumn
zwi膮zki pomi臋dzy wierszami tabel -- zdefiniowane poprzez zale偶no艣ci mi臋dzy warto艣ciami wybranych kolumn, tzw. kluczy (nie ma wska藕nik贸w)
z punktu widzenia teorii model mo偶na opisa膰 algebr膮 relacji mi臋dzy zbiorami atrybut贸w
J臋zyki obs艂ugi
nieproceduralne: SQL, Sequel, QUEL, QBE
proceduralne: xBase
Znaczenie praktyczne
model dominuj膮cy w zastosowaniach komercyjnych
przyk艂ady SZBD: Oracle, Informix, Sybase, Ingres, DB2, Progress, Gupta, Access, dBase, Paradox
Przyk艂ad
Przyk艂adowy schemat danych -- zwi膮zek 1-n
# Id * Nazwa * Id
departamentu oddzia艂u
... ... ...
# Id * Nazwisko * o Stanowisko * Id
pracownika Imi臋 departamentu
... ... ... ... ...
Realizacja relacyjna
Ograniczenia
brak bezpo艣redniej reprezentacji
zwi膮zk贸w n-m
dla trudniejszych problem贸w
-- bardzo wiele tabel
ma艂o naturalna reprezentacja danych
ograniczona podatno艣膰 na zmiany
trudne operowanie na z艂o偶onych obiektach -- dane rozproszone w wielu tabelach
brak z艂o偶onych typ贸w danych
model ma艂o wygodny dla zastosowa艅
CAD, GIS itp.
Model obiektowy (object-oriented)
Cechy podstawowe
obiekt w bazie reprezentuje obiekt w 艣wiecie zewn臋trznym
typ obiektowy (klasa):
definicja z艂o偶onego typu danych (mo偶e zawiera膰 inne typy obiektowe lub ich kolekcje)
procedury (metody) i operatory do manipulowania tymi danymi
to偶samo艣膰 obiektu jest niezale偶na od zawarto艣ci danych
dziedziczenie (inheritance):
strukturalne: potomek dziedziczy struktur臋 danych
behawioralne: potomek dziedziczy metody i operatory
Cechy dodatkowe
enkapsulacja: wn臋trze obiektu dost臋pne jedynie w spos贸b w nim zdefiniowany
polimorfizm: tak samo nazwane metody i operatory dzia艂aj膮 swoi艣cie w zale偶no艣ci od klasy obiektu
Przyk艂ad
Model obiektowy -- zawieranie i dziedziczenie
Zalety modelu
do艣膰 naturalna reprezentacja 艣wiata
艂atwo艣膰 dzia艂ania na z艂o偶onych obiektach
du偶a podatno露膰 na zmiany
Znaczenie praktyczne
w zastosowaniach naukowych lub eksperymentalnych
przyk艂ady system贸w: GemStone, O2
przewidywana ewolucja baz relacyjnych w kierunku obiektowo-relacyjnych
Relacyjne bazy danych
Literatura
C. Delobel, M Adiba: Relacyjne bazy danych. WNT, Warszawa 1989. M. Muraszkiewicz, H. Rybi艅ski: Bazy danych. AOW, 1993. W. Harris: Bazy danych nie tylko dla ludzi biznesu. WNT, 1994. K. Subieta: Ingres. AOW PLJ, 1994. Wellesley Software: SQL. J臋zyk relacyjnych baz danych. WNT. M. Gruber: SQL. Helion, 1996. Ulka Rodgers: Oracle. Przewodnik projektanta baz danych. WNT, 1995. J. Gnybek: Oracle 艂atwiejszy ni偶 przypuszczasz. Helion, 1996. R. Barker: CASE*Method. Modelowanie zwi膮zk贸w encji. WNT, 1996.
Podstawy teoretyczne modelu relacyjnego
Poj臋cie relacji
rozwa偶amy model poj臋ciowy
cechy rzeczywisto艣ci opisane s膮 w atrybutach
schemat relacji to zbi贸r nazw atrybut贸w:
warto露ci atrybut贸w nale偶膮 do dziedzin:
relacja na schemacie S to podzbi贸r iloczynu kartezja艅skiego dziedzin atrybut贸w:
relacja jest zbiorem krotek:
zbi贸r krotek mo偶e by膰 reprezentowany jako tabela:
kolumny odpowiadaj膮 nazwom atrybut贸w
wiersze odpowiadaj膮 krotkom
Relacyjna baza danych
schemat relacyjnej bazy danych jest zbiorem schemat贸w relacji
relacyjna baza danych jest zbiorem relacji spe艂niaj膮cych warunki integralno艣ci dla ka偶dej relacji i mi臋dzy relacjami
Klucze
klucz relacji K = zbi贸r atrybut贸w, kt贸re jednoznacznie wyznaczaj膮 krotk臋:
gdzie ki[K] oznacza podkrotk臋 zawieraj膮c膮 tylko atrybuty z klucza K
klasyfikacja kluczy:
klucze w艂a露ciwe: 偶aden podzbi贸r w艂a露ciwy klucza w艂a露ciwego nie jest kluczem
klucz g艂贸wny: jeden z kluczy w艂a露ciwych relacji, wybrany do identyfikowania krotek
klucze wykrywa si臋 analizuj膮c opisywany 露wiat, a nie dost臋pne dane!
przyk艂ad:
id pracownika jest kluczem
nazwisko nie jest kluczem
nazwisko + imi臋 + data urodzenia + imi臋 ojca -- jest kluczem
Operacje na relacjach
Selekcja
selekcja = wyb贸r krotek (wierszy):
gdzie w jest warunkiem selekcji
selekcja jest komutatywna:
Projekcja (rzut)
projekcja = wyb贸r atrybut贸w (kolumn):
gdzie S' jest podzbiorem schematu S
projekcja jest wzajemnie komutatywna z selekcj膮:
o ile warunek selekcji ma sens po projekcji, tj. dotyczy tylko atrybut贸w wybranych w projekcji
Operacje teoriomnogo露ciowe
dotycz膮 relacji opartych na identycznych schematach:
suma
iloczyn
r贸偶nica
Z艂膮czenie
operacja na dw贸ch relacjach -- podzbi贸r iloczynu kartezja艅skiego dw贸ch relacji:
gdzie w jest warunkiem z艂膮czenia
krotki z艂膮czenia stanowi膮 sklejenie (konkatenacj臋) krotek relacji z艂膮czanych
rodzaje z艂膮cze艅:
r贸wno露ciowe -- warunek r贸wno露ciowy
naturalne -- r贸wno露ciowe i nazwy atrybut贸w zgodne
Rachunki relacji
algebra relacji -- oparta na w/w operacjach
rachunek predykat贸w -- okre露la si臋 schemat relacji wynikowej i kwalifikatory (predykaty) okre露laj膮ce warunki
rachunek krotek
rachunek dziedzin
algebra relacji prowadzi do j臋zyk贸w proceduralnych
rachunek predykat贸w prowadzi do j臋zyk贸w deklaratywnych
Zale偶no露ci semantyczne w relacyjnej bazie danych
Ograniczenia integralno露ci
露wiat rzeczywisty opisuj膮 tylko te z mo偶liwych relacji, kt贸re spe艂niaj膮 zale偶no露ci semantyczne istniej膮ce w modelowanym 露wiecie
zale偶no露ci w b.d. modeluje si臋 jako tzw. ograniczenia integralno露ci (integrity constraints)
zale偶no露ci semantyczne wykrywa si臋 analizuj膮c opisywany 露wiat, a nie dost臋pne dane!
Rodzaje zale偶no露ci
ograniczenia dotycz膮ce atrybutu
obowi膮zkowo露膰
ograniczenia warto露ci
ograniczenia dotycz膮ce jednej relacji
funkcyjne (functional dependency)
wielowarto露ciowe (multivalued )
zale偶no露ci mi臋dzy relacjami
referencyjne -- zgodno露膰 warto露ci wybranych atrybut贸w
Zale偶no露ci funkcyjne
zbi贸r atrybut贸w Y jest zale偶ny funkcyjnie od zbioru X gdy z ka偶d膮 konfiguracj膮 warto露ci atrybut贸w z X jest zwi膮zana co najwy偶ej jedna konfiguracja warto露ci z Y:
przyk艂ad:
imi臋 zale偶y funkcyjnie od id pracownika
id nie zale偶y funkcyjnie od imienia
imi臋 nie zale偶y funkcyjnie od nazwiska
aksjomaty Armstronga -- pozwalaj膮 znale慕膰 nowe zale偶no露ci funkcyjne na podst. ju偶 znalezionych:
-- zwrotno露膰
-- rozszerzenie
-- przechodnio露膰
ka偶dy atrybut i ca艂y schemat zale偶膮 funkcyjnie od klucza
zale偶no露膰 tranzytywna A od X:
Zale偶no露ci wielowarto露ciowe
zbi贸r atrybut贸w Y jest zale偶ny wielowarto露ciowo od zbioru X gdy z ka偶d膮 konfiguracj膮 warto露ci atrybut贸w z X jest zwi膮zany zbi贸r konfiguracji warto露ci z Y niezale偶nie od warto露ci pozosta艂ych atrybut贸w:
gdzie
(znaczy to, 偶e mo偶na wymieni膰 cz臋露ci krotek: X i Y z k1 i reszt臋 z k2)
najwa偶niejsze w艂asno露ci:
relacja RS daje si臋 roz艂o偶y膰 w spos贸b odwracalny na dwie: RXY i RXZ
istnieje odpowiednik aksjomat贸w Armstronga dla zale偶no露ci wielowarto露ciowych
przyk艂ad:
podr臋czniki nie zale偶膮 od wyk艂adowc贸w
nie ma zale偶no露ci funkcyjnych
zachodz膮 zale偶no露ci
i
(zawsze para!)
mo偶na zamieni膰 cz臋露ci krotek ZP i W
mo偶na roz艂o偶y膰 na: ZW, ZP
Zaj臋cia Wyk艂adowca Podr臋cznik
Normalizacja
Redundancja
redundancja polega na powtarzaniu
wady redundancji:
anomalie
konieczno露膰 utrzymania sp贸jno露ci kopii
marnowanie miejsca
Anomalie
rodzaje:
istnienia
wstawiania
usuwania
modyfikacji
przyk艂ad:
Imi臋 Nazwisko Nr depart. Nazwa
depart.
Rozk艂ad relacji i normalizacja
redundancj臋 usuwa si臋 przez rozk艂ad relacji
rozk艂ad odwracalny: mo偶na odwr贸ci膰 przez naturalne z艂膮czenie
rozk艂ad relacji powinien doprowadzi膰 do tzw. postaci normalnej
rozk艂ad relacji nie powinien powodowa膰 utraty zale偶no露ci istniej膮cych w relacji pierwotnej
Pierwsza posta膰 normalna
relacja jest w 1NF gdy wszystkie atrybuty s膮 atomowe -- prostych typ贸w
1NF jest wymogiem dla rachunku relacyjnego, a wi臋c i j臋zyk贸w zapyta艅
kontrprzyk艂ady:
atrybut tablicowy
zbi贸r
Uwaga: Dalej b臋dzie mowa jedynie o relacjach spe艂niaj膮cych 1NF
Druga posta膰 normalna
relacja jest w 2NF gdy ka偶dy atrybut niekluczowy (nie nale偶膮cy do klucza w艂a露ciwego) jest zale偶ny funkcyjnie od ca艂ego klucza w艂a露ciwego
przyczyn膮 braku 2NF jest zwykle b艂臋dne po艂膮czenie danych
kontrprzyk艂ad: spis przepustek
nazwisko zale偶y funkcyjnie od id prac., czyli od fragmentu klucza
rozk艂ad IB, IN doprowadza do 2NF
# Id prac. # Budynek Nazwisko
Trzecia posta膰 normalna
relacja jest w 3NF gdy
jest w 1 NF i
ka偶dy atrybut niekluczowy jest bezpo露rednio zale偶ny funkcyjnie od ca艂ego klucza w艂a露ciwego
mo偶liwe przypadki naruszenia 3NF:
naruszenie 2NF
istnienie zale偶no露ci tranzytywnej (a wi臋c niebezpo露redniej) od klucza w艂a露ciwego
przyczyn膮 braku 3NF jest zwykle b艂臋dne po艂膮czenie danych
3NF jest zazwyczaj wystarczaj膮ca dla usuni臋cia praktycznie wa偶nych anomalii
ka偶dy schemat mo偶na doprowadzi膰 do 3NF zachowuj膮c:
zale偶no露ci
odwracalno露膰 rozk艂adu
kontrprzyk艂ad
jest 2NF, bo klucz jest jednoatrybutowy
zale偶no露膰 tranzytywna: I S P
(pensja zale偶y funkcyjnie od stanowiska)
rozk艂ad INS, IP doprowadza do 3NF
# Id Nazwisko Stanowisko Pensja
prac.
Posta膰 normalna Boyce-Codda
relacja jest w BCNF gdy ka偶da nietrywialna zale偶no露膰 funkcyjna jest zale偶no露ci膮 od klucza (niekoniecznie w艂a露ciwego)
w BCNF zale偶no露ci tranzytywne nie istniej膮 w og贸le
nie ka偶dy schemat mo偶na doprowadzi膰 do BCNF z zachowaniem zale偶no露ci
kontrprzyk艂ad: relacja w 3NF z anomaliami:
istniej膮 tu klucze: MU, UK
(nazwy ulic mog膮 si臋 powtarza膰 w r贸偶nych miastach, zak艂adamy 偶e nazwy miast si臋 nie powtarzaj膮)
wyst臋puj膮 zale偶no露ci:
anomalie: usuwaj膮c ulic臋 mo偶emy utraci膰 informacj臋 o mie露cie
schemat jest w 3NF: brak atrybut贸w niekluczowych
schemat nie jest w BCNF: K nie jest kluczem
schemat jest nierozk艂adalny do BCNF bez utraty zale偶no露ci
Miasto Ulica Kod
najcz臋露ciej zale偶no露ci prowadz膮ce do braku BCNF nie s膮 istotne z punktu widzenia projektu
Czwarta posta膰 normalna
relacja jest w 4NF gdy je露li ka偶da nietrywialna zale偶no露膰 wielowarto露ciowa jest zale偶no露ci膮 od klucza (niekoniecznie w艂a露ciwego)
schemat doprowadza si臋 do 4NF przez rozk艂ad
kontrprzyk艂ad:
istniej膮 zale偶no露ci
i
nie ma zale偶no露ci funkcyjnych
jest wi臋c BCNF
wyst臋puje nadmiar informacji: powt贸rzone dane podr臋cznik贸w i wyk艂adowc贸w
rozk艂ad ZW, ZP doprowadza do 4NF
Zaj臋cia Wyk艂adowca Podr臋cznik
Zwi膮zki mi臋dzy postaciami normalnymi
4NF => BCNF => 3NF => 2NF => 1NF
Projektowanie schemat贸w relacyjnych
Model poj臋ciowy
Cele modelowania poj臋ciowego
precyzyjne okre露lenie zakresu projektu
modelowanie informacji:
niezb臋dnej dla dzia艂ania organizacji
niezale偶nie od implementacji
wg okre露lonego modelu danych
Diagramy zwi膮zk贸w encji (ERD)
elementy:
encje
atrybuty encji
zwi膮zki
unikalne identyfikatory
wa偶ne s膮 konwencje!
Przyk艂ad diagramu ERD
Encje
model rzeczy, os贸b itp.:
o kt贸rych chcemy przechowywa膰 informacje
kt贸re maj膮 to偶samo露膰
nazwa: rzeczownik w l.poj., wielkie litery
Przyk艂ady:
produkt (towar), przedmiot
osoba, pracownik, klient
dokument, pozycja dokumentu
Atrybuty
okre露laj膮 cechy rzeczy, os贸b itp.:
identyfikuj膮
opisuj膮
podaj膮 ilo露ci
klasyfikuj膮
s膮 prostego (atomowego) typu
musz膮 mie膰 precyzyjne nazwy
Przyk艂ady:
kod towaru, nazwa
nr identyfikacyjny, imi臋, nazwisko, adres
cena, warto露膰, rodzaj p艂atno露ci
Rodzaje atrybut贸w
obowi膮zkowe (*)
opcjonalne (o)
Zwi膮zki
pokazuj膮 zale偶no艣ci mi臋dzy encjami
powinny by膰 obustronnie nazwane
nie zapisuje si臋 sposobu realizacji
Cechy zwi膮zk贸w
opcjonalno艣膰:
obowi膮zkowy
opcjonalny
stopie艅:
jeden (1)
wiele (n)
transferowalno露膰
zwi膮zki rekurencyjne
Poprawno艣膰 zwi膮zk贸w
zwi膮zki 1-1 s膮 podejrzane
zwi膮zki obustronnie obowi膮zkowe s膮 podejrzane
zwi膮zki rekurencyjne musz膮 by膰 obustronnie opcjonalne
zwi膮zki n-m powinny zosta膰 rozbite:
Zwi膮zek n-m i jego rozbicie
Identyfikacja encji
Unikalne identyfikatory
ka偶da encja powinna posiada膰 przynajmniej jeden unikalny identyfikator
mo偶liwe sk艂adniki:
atrybuty
zwi膮zki
atrybuty i zwi膮zki
pierwotny UID:
identyfikuje wszystkie wyst膮pienia encji
wszystkie sk艂adniki obowi膮zkowe
przyk艂ad: numer id pracownika
wt贸rne UID:
do cel贸w kontrolnych
sk艂adniki mog膮 by膰 opcjonalne
przyk艂ady: PESEL, nazwisko+imi臋+data urodzenia+imi臋 ojca
Po偶膮dane cechy pierwotnego UID
niezmienno露膰
艂atwo露膰 wyznaczenia warto露ci
czytelno露膰
niewielka z艂o偶ono露膰
Przyk艂ady
UID faktury: atrybuty
UID pozycji: zwi膮zek + atrybut (sequence in parent)
UID lokalizacji: tylko zwi膮zki
Typowe konstrukcje
Master - detail
typowa struktura dokumentu:
nag艂贸wek
pozycje
zwi膮zek obowi膮zkowy po stronie detail
UID detalu: zwi膮zek + atrybut (najcz臋露ciej sequence in parent)
Struktura master - detail: faktura-pozycja
Klasyfikacja: faktura-p艂atno露膰
S艂ownik: pozycja-towar
S艂owniki
stosuje si臋 by unikn膮膰 powtarzania danych
przyk艂ady: spis klient贸w, spis towar贸w
Klasyfikacja
encj臋 dla klasyfikacji stosuje si臋, gdy:
klasyfikacja ma by膰 ograniczona
s艂ownik klasyfikacji ma by膰 zmienny
przyk艂ady: rodzaje p艂atno露ci, grupy towar贸w, kolory
kontrprzyk艂ady: dni tygodnia, p艂e膰
娄ledzenie zmienno露ci
do 露ledzenia zmienno露ci atrybutu tworzy si臋 dodatkow膮 encj臋
nie nale偶y u偶ywa膰 konstrukcji z atrybutami: warto露膰1, warto露膰2, warto露膰3,...
Zapis zmian stanowiska pracownika
Zwi膮zki wykluczaj膮ce si臋
zapisuje si臋 za pomoc膮 konwencji "艂uku"
艂uk mo偶e by膰:
obowi膮zkowy: jeden zwi膮zek zachodzi
opcjonalny: zachodzi jeden lub 偶aden
Zwi膮zki wykluczaj膮ce si臋 (艂uk obowi膮zkowy)
Drzewo
stosowane np. do opisu hierarchii
modelowane jako zwi膮zek rekurencyjny obustronnie opcjonalny
Zwi膮zek rekurencyjny -- hierarchia
Graf
stosowany np. do opisu struktur materia艂owych: sk艂adnik--produkt
mo偶e by膰 reprezentowany przez zwi膮zek rekurencyjny n-m
reprezentacja ostateczna:
w臋z艂y -- encja "pierwotna"
艂uki -- dodatkowa encja
dwa zwi膮zki 1-n
Reprezentacje grafu materia艂贸w:
w postaci zwi膮zku rekurencyjnego n-m
i w postaci dw贸ch encji
Lista
nie stosuje si臋 wska慕nik贸w
pozycje listy oznacza si臋 numerami kolejnymi
Projekt logiczny
Cele projektowania logicznego
zaprojektowanie:
struktur danych
ogranicze艅 integralno露ci
obudowy proceduralnej (wyzwalacze)
perspektyw
rozwi膮za艅 dla przetwarzania rozproszonego
bierze si臋 pod uwag臋 konkretny SZRBD
Przekszta艂cenie modeli poj臋ciowy logiczny
encje tabele
nazwy tabel -- w liczbie mnogiej
usuwamy znaki narodowe z nazw obiekt贸w b.d.
atrybuty kolumny
typy z SZRBD
obowi膮zkowo露膰 wi臋zy not null
pierwotne UID klucze g艂贸wne
wt贸rne UID ograniczenia unikalno露ci
zwi膮zki klucze obce:
kolumny
ograniczenia
obowi膮zkowo露膰 klucz not null
nietransferowalno露膰 klucz niezmienny
Ograniczenia integralno露ci
Ograniczenia deklaratywne i proceduralne
deklaratywne:
wykonywane przez serwer b.d.
dotycz膮 wszystkich operacji
dotycz膮 wszystkich wierszy (statyczne)
wykonanie bezb艂臋dne i zoptymalizowane
proceduralne:
wykonywane przez serwer (dotycz膮 wszystkich operacji) lub aplikacj臋 (dotycz膮 tylko operacji tej aplikacji)
dotycz膮 tylko zmienianych danych (dynamiczne)
kod mo偶e zawiera膰 b艂臋dy
nale偶y d膮偶y膰 do ogranicze艅:
deklaratywnych
po stronie serwera b.d.
Rodzaje ogranicze艅 deklaratywnych
kolumny: not null, check (in-line)
wiersza: check
tabeli: primary key, unique
referencyjne: foreign key
Wyzwalacze (triggers)
procedury rezyduj膮ce w serwerze b.d.
automatycznie wyzwalane przez:
wstawienie wiersza
usuni臋cie wiersza
modyfikacj臋 okre露lonych kolumn
s艂u偶膮 do:
wymuszania nietypowych regu艂 integralno露ci (bussiness rules)
nietypowych zabezpiecze艅 dost臋pu
露ledzenia zmian w b.d. (audit)
wymuszania integralno露ci referencyjnej w rozproszonych b.d.
nietypowej replikacji danych
Klucze
Klucz g艂贸wny (primary key)
funkcja: jednoznaczne identyfikowanie wiersza tabeli
budowa:
ogr. deklaratywne primary key
dla UID z atrybut贸w -- odpowiednie kolumny
dla UID zawieraj膮cego zwi膮zki -- kolumny odpowiednich kluczy obcych
wszystkie kolumny klucza g艂贸wnego musz膮 by膰 obowi膮zkowe (not null)
po偶膮dane cechy:
niezmienno露膰
ma艂a d艂ugo露膰 (wydajno露膰!)
sztuczne klucze g艂贸wne:
klucz numeryczny
mechanizm do generowania unikalnych numer贸w (tzw. sekwencja)
z kluczem g艂贸wnym jest z regu艂y zwi膮zany indeks unikalny
Klucze obce
funkcja: realizuj膮 zwi膮zki
budowa:
dodatkowe kolumny klucza obcego odpowiadaj膮ce kolumnom wskazywanego klucza g艂贸wnego
ogr. deklaratywne foreign key
spos贸b obs艂ugi kasowania/modyfikacji wskazywanego klucza g艂贸wnego:
restrykcja
kaskada
reprezentacja 艂uku:
dwa osobne klucze obce opcjonalne
dodatkowy warunek wykluczania (ograniczenia check lub wyzwalacz)
nale偶y rozwa偶y膰 zdefiniowanie indeksu dla klucza obcego
Realizacja wi臋z贸w: klucz obcy
Etapy projektowania logicznego
Kolejno露膰 czynno露ci
przekszta艂cenie modelu poj臋ciowego
poprawki (np. usuni臋cie znak贸w narodowych i spacji z nazw)
denormalizacja
uzupe艂nianie modelu logicznego:
indeksy
wyzwalacze
perspektywy
projektowanie rozproszone
projektowanie fizyczne (przestrzenie tabel, parametry alokacji, klastry itp.)
implementacja (kod DDL)
czynno露膰i pomocnicze
szacowanie rozmiaru b.d.
opracowanie strategii administrowania
(np. kopie zapasowe)
Perspektywy
zapami臋tane w b.d. definicje zapyta艅
stanowi膮 "widok" na tabele
mo偶na ich u偶ywa膰 tak jak tabel
(niekt贸re s膮 tylko read-only!)
zastosowanie:
u艂atwienie powtarzaj膮cych si臋 zapyta艅
zabezpieczenie dost臋pu
Indeksy
s艂u偶膮 do szybkiego wyszukiwania i sortowania danych
budowa:
oparte na kolumnie lub z艂o偶eniu kolumn (tzw. kluczu indeksowania)
wewn膮trz zwykle B-drzewo
(drzewo zr贸wnowa偶one)
wykorzystanie:
indeks pozwala wyszukiwa膰 wed艂ug pocz膮tku klucza indeksowania
indeks unikalny (unique) zapewnia niepowtarzalno露膰 klucza indeksowania
przyk艂ad:
CREATE INDEX prc_i ON pracownicy (nazwisko,imie,data_urodzenia);
przyspiesza wyszukanie wg: nazwiska, nazwiska+imienia, nazwiska+imienia_daty
nie przyspiesza wyszukiwania wg: imienia+nazwiska, imienia, daty itp.
okoliczno露ci stosowania:
dane u偶ywane cz臋sto do wyszuka艅 i z艂膮cze艅, o dobrej selektywno露ci
klucze obce
klucze unikalne
Denormalizacja
stosuje si臋 dla znacz膮cego poprawienia wydajno露ci
elementy:
wprowadzenie redundantnych danych
wprowadzenie kodu zapewniaj膮cego sp贸jno露膰
Typowe przypadki denormalizacji:
przechowywanie agregat贸w (sumy, 露rednie):
Przechowywanie agregat贸w: ostatni stan
pre-join:
Pre-join: kopia nazwy klienta
po露redni klucz obcy:
Po露redni klucz obcy: pracownicy-oddzia艂y
nie ka偶dy przypadek przechowywania wynik贸w oblicze艅 jest denormalizacj膮!
Implementacja modelu logicznego
instalacja SZRBD i utworzenie bazy danych
tworzenie struktur danych:
elementy projektu przekszta艂ca si臋 w odpowiednie zdania DDL (Data Definition Language), umieszczane w skryptach
tworzy si臋 schemat u偶ytkownika-w艂a露ciciela obiekt贸w struktury
uruchamia si臋 skrypty tworz膮ce struktur臋
tworzy si臋 konta u偶ytkownik贸w i nadaje si臋 im uprawnienia dost臋pu
tworzy si臋 synonimy
wykonuje si臋 kopi臋 rezerwow膮 (backup)
wprowadza si臋 dane (np. przez import)
opracowanie i wdro偶enie strategii wykonywania kopii rezerwowych
opracowanie i uruchomienie aplikacji
strojenie:
aplikacji
bazy danych