Projektowanie struktury danych

advertisement
Jarosł
Jarosław Kuchta
Projektowanie Aplikacji Rozproszonych
Projektowanie
struktury danych
[email protected]
[email protected]
Zagadnienia
Sposoby zapisu danych zewnę
zewnętrznych
Odwzorowanie dziedziny problemu w dziedzinę
dziedzinę
danych
Normalizacja relacyjnej bazy danych
Optymalizacja relacyjnej bazy danych dla
przechowywania obiektó
obiektów
Wykorzystanie indeksó
indeksów w relacyjnej bazie danych
Szacowanie rozmiaru relacyjnej bazy danych
Problemy synchronizacji w rozproszonej bazie danych
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
2/30
Sposoby zapisu danych
Pliki
Pliki sekwencyjne
Nieuporzą
Nieuporządkowane
Uporzą
Uporządkowane
Pliki swobodnego dostę
dostępu
Bazy danych
Relacyjne
RelacyjnoRelacyjno-Obiektowe
Obiektowe
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
3/30
1
Zalety i wady zapisu w plikach
Zalety
Elastyczność
Elastyczność zwią
związana z
zastosowaniem obiektowego
języka programowania
Dowolność
Dowolność typó
typów i
formató
formatów danych
DuŜ
DuŜa wydajność
wydajność
odczytu/zapisu
Brak koniecznoś
konieczności zakupu
systemu bazy danych
Projektowanie Aplikacji
Rozproszonych
Wady
Redundancja danych
Brak zewnę
zewnętrznego
mechanizmu modyfikacji
struktury danych
(konieczność
(konieczność pisania
specjalnych programó
programów)
Brak mechanizmu kontroli
dostę
dostępu do danych
Projektowanie struktury danych
4/30
Zastosowanie plikó
plików
Pliki gł
główne (master
(master files)
files)
Pliki przeglą
przeglądowe (look
(look--up files)
files)
Pliki transakcyjne
Pliki kontrolne (audit
(audit files)
files)
Pliki archiwalne (history
(history files,
files, archive files)
files)
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
5/30
Zastosowanie systemu bazy
danych (DBMS)
Systemy transakcyjne
Systemy wspierania decyzji
Systemy informowania kierownictwa
Systemy eksperckie
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
6/30
2
Rodzaje systemó
systemów baz danych
RDBMS - Relational Database Management
System
ORDBMS - ObjectObject-relational Database
Management System
OODBMS - Object Oriented Database
Managemend System
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
7/30
Zalety i wady RDBMS
Zalety
Szybkie wyszukiwanie danych
Standardowy ję
język dostę
dostępu
do danych (SQL)
Kontrola spó
spójnoś
jności danych
Łatwość
atwość modyfikacji
struktury danych
Dobrze sprawdzone systemy
na rynku
Kontrola dostę
dostępu do danych
Łatwość
atwość wspó
współdzielenia
struktury danych
Projektowanie Aplikacji
Rozproszonych
Wady
Brak moŜ
moŜliwoś
liwości obsł
obsługi
złoŜonych typó
typów danych
(dodawane w niektó
niektórych
RDBMS)
Niecał
Niecałkowita zgodność
zgodność
podstawowych typó
typów danych
z OOPL
Brak wsparcia dla zapisu
danych obiektowych
Projektowanie struktury danych
8/30
Zalety i wady ORDBMS
Zalety
MoŜ
MoŜliwoś
liwości obsł
obsługi
złoŜonych typó
typów danych
Zbudowane na SQL
Kontrola spó
spójnoś
jności danych
Łatwość
atwość modyfikacji
struktury danych
Kontrola dostę
dostępu do danych
Łatwość
atwość wspó
współdzielenia
struktury danych
Projektowanie Aplikacji
Rozproszonych
Wady
Niecał
Niecałkowita zgodność
zgodność
podstawowych typó
typów danych
z OOPL
Ograniczone wsparcie dla
zapisu danych obiektowych
Projektowanie struktury danych
9/30
3
Zalety i wady OODBMS
Zalety
MoŜ
MoŜliwoś
liwości obsł
obsługi
złoŜonych typó
typów danych
Bezpoś
Bezpośrednie wsparcie dla
zapisu danych obiektowych
Kontrola spó
spójnoś
jności danych
Łatwość
atwość modyfikacji
struktury danych
Kontrola dostę
dostępu do danych
Łatwość
atwość wspó
współdzielenia
struktury danych
Projektowanie Aplikacji
Rozproszonych
Wady
Brak uznanego standardu
Konieczność
Konieczność dopasowania
OODBMS do OOPL
Niedojrzał
Niedojrzałość narzę
narzędzi
Projektowanie struktury danych
10/30
Odwzorowanie klas PD w DM
w OODBMS
Warstwa PD
Klient
Zamówienie
DMKlient
DMZamówienie
Warstwa DM
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
11/30
Problem dziedziczenia
wielokrotnego
NadklasaA
-atrybutA1
-atrybutA2
NadklasaB
-atrybutB1
-atrybutB2
KlasaC
-atrybutC1
-atrybutC2
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
12/30
4
Rozwią
Rozwiązanie a)
NadklasaA
-atrybutA1
-atrybutA2
KlasaC
-atrybutC1
-atrybutC2
-NadklasaB
Utworzyć
Utworzyć instancję
instancję
dodatkowej nadklasy w
warstwie DM i dodać
dodać
atrybut, któ
czy
który połą
połączy
instancję
instancję nadklasy z instancją
instancją
podklasy.
1
Projektowanie Aplikacji
Rozproszonych
NadklasaB
1 -atrybutB1
-atrybutB2
Projektowanie struktury danych
13/30
Rozwią
Rozwiązanie b)
NadklasaA
-atrybutA1
-atrybutA2
Spł
Spłaszczyć
aszczyć hierarchię
hierarchię dziedziczenia w
warstwie DM przez skopiowanie atrybutó
atrybutów
i metod nadklas do podklas.
KlasaC
-atrybutB1
-atrybutB2
-atrybutC1
-atrybutC2
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
14/30
Odwzorowanie klas PD w DM
w ORDBMS (zał
(załoŜenia)
ORDBMS obsł
obsługuje:
identyfikator obiektu (OID)
kolumny wielowartoś
wielowartościowe (np. tel[*]:
tel[*]: string)
string)
procedury przechowywane
ORDBMS nie obsł
obsługuje:
Ŝadnego rodzaju dziedziczenia
kolumn zł
złoŜonych
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
15/30
5
Odwzorowanie klas PD w DM
w ORDBMS
PD
DM
ORDBMS
klasa
klasa
tabela
atrybut jednowartoś
jednowartościowy
metody dostę
dostępu
kolumna
procedura przechowywana
atrybut pochodny
metoda dostę
dostępu
asocjacja pojedyncza
metody dostę
dostępu
kolumna typu OID
atrybut wielowartoś
wielowartościowy
metody dostę
dostępu
kolumna wielowartoś
wielowartościowa
atrybut zł
złoŜony
metody dostę
dostępu
nowa tabela + relacja jedenjedenwiele
asocjacja jedenjeden-wiele
metody dostę
dostępu
kolumna wielowartoś
wielowartościowa
typu OID
asocjacja wielostronna
metody dostę
dostępu
kolumna wielowartoś
wielowartościowa
typu OID po kaŜ
kaŜdej ze stron
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
16/30
Rozwią
Rozwiązanie problemu
dziedziczenia
w ORDBMS
Kolumna zawierają
zawierająca OID instancji
przechowywanej w tablicy reprezentują
reprezentującej
nadklasę
nadklasę.
Spł
Spłaszczenie hierarchii dziedziczenia
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
17/30
Odwzorowanie klas PD w DM
w ORDBMS przykł
przykład
Warstwa PD
Osoba
Imię: string
Nazwisko: string
Klient
Adres: (Kod, Miejscowość, Ulica)
Tel[*]: string
NIP: string
Warstwa DM
DMOsoba
DMKlient
«table»
DTOsoba
«table»
DTKlient
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
«table»
DTAdres
18/30
6
Struktura klas DM
w ORDBMS - przykł
przykład
DMOsoba
DMKlient
Get Osoba()
Set Osoba()
Get Klient()
Set Klient()
Osoba
«table»
DTOsoba
«table»
DTKlient
Adres: OID
Tel[*]: string
NIP: string
Osoba: OID
Imię: string
Nazwisko: string
Projektowanie Aplikacji
Rozproszonych
Adres
*
«table»
DTAdres
Kod: string
Miejscowość: string
Ulica: string
Projektowanie struktury danych
19/30
Odwzorowanie klas PD w DM
w RDBMS (zał
(załoŜenia)
RDBMS obsł
obsługuje:
RDBMS nie obsł
obsługuje:
automatyczny identyfikator rekordu (ID)
procedury przechowywane
Ŝadnego rodzaju dziedziczenia
kolumn wielowartoś
wielowartościowych
kolumn zł
złoŜonych
Zał
ZałoŜenia dodatkowe:
kolumny - klucze są
są typu integer (32(32-bitowe)
kolumna automatycznie ustawiana przez RDBMS jest oznaczana
zastrzeŜ
}
zastrzeŜeniem {autoset
{autoset}
kolumna z kluczem wł
własnym jest oznaczana zastrzeŜ
zastrzeŜeniem {PK}
kolumna z kluczem obcym jest oznaczana zastrzeŜ
zastrzeŜeniem {FK}
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
20/30
Odwzorowanie klas PD w DM
w RDBMS
DM
RDBMS
klasa
PD
klasa
tabela + kolumna
ID: integer {autoset,
autoset, PK}
atrybut jednowartoś
jednowartościowy
metody dostę
dostępu
kolumna
atrybut pochodny
metoda dostę
dostępu
procedura przechowywana
asocjacja pojedyncza
metody dostę
dostępu
kolumna typu integer {FK} +
relacja jedenjeden-jeden
atrybut wielowartoś
wielowartościowy
metody dostę
dostępu
nowa tabela + relacja jedenjeden-wiele
nowa tabela + relacja jedenjeden-wiele
atrybut zł
złoŜony
metody dostę
dostępu
asocjacja jedenjeden-wiele
metody dostę
dostępu
kolumna typu integer {FK} +
relacja jedenjeden-wiele
asocjacja wielostronna
metody dostę
dostępu
nowa tabela z kolumnami typu
integer {FK} + relacje jedenjeden-wiele
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
21/30
7
Struktura klas DM
w RDBMS - przykł
przykład
DMOsoba
DMKlient
Get Osoba()
Set Osoba()
«table»
DTOsoba
ID: integer {autoset, PK}
Imię: string
Nazwisko: string
«table»
DTAdres
Get Klient()
Set Klient()
Osoba
«table»
DTKlient
1
ID: integer {autoset, PK}
NIP: string
1 Osoba: integer {FK}
ID: integer {autoset, PK}
Klient: integer {FK}
Kod: string
1 Miejscowość: string
Ulica: string
Klient
1
«table»
DTTel
Klient
1
*
Projektowanie Aplikacji
Rozproszonych
ID: integer {autoset, PK}
Klient: integer {FK}
Tel: string
Projektowanie struktury danych
22/30
Optymalizacja obiektu w RDBMS
Optymalizacja wydajnoś
wydajności (normalizacja)
Optymalizacja szybkoś
szybkości (denormalizacja
(denormalizacja,,
indeksowanie)
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
23/30
Normalizacja
0NF
Czy któraś tablica zawiera powtarzające się pola? Czy pewne
rekordy mają róŜną liczbę kolumn od innych rekordów?
Usuń powtarzające się lub nadmiarowe pola. Stwórz nową tablicę, która będzie
przechowywała usunięte dane. Skopiuj PK nowej tablicy do poprzedniej tablicy jako FK
1NF
Czy PK jest tworzony z więcej niŜ jednego pola? Jeśli tak, to
czy są pola zaleŜne tylko od części PK?
Usuń częściową zaleŜność. Dodaj nową tablicę, która będzie zawierała pola, które były
częściowo zaleŜne. Skopiuj PK nowej tablicy do poprzedniej tablicy jako FK.
2NF
Czy są pola zaleŜne od innego drugoplanowego pola
kluczowego?
Usuń zaleŜnośc przechodnią Dodaj nową tablicę, która będzie zawierała usunięte pola.
Skopiuj PK nowej tablicy do poprzedniej tablicy jako FK
Projektowanie Aplikacji
Rozproszonych
3NF
Projektowanie struktury danych
24/30
8
Denormalizacja
Tablice przeglą
przeglądowe (look
(look--up tables)
tables)
Relacje jedenjeden-jeden
Relacje jedenjeden-wiele
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
25/30
Indeksowanie - zasady
Dla kaŜ
kaŜdej tablicy tworzy się
się indeks unikalny w oparciu o PK.
Dla kaŜ
kaŜdej tablicy tworzy się
się indeksy w oparciu o FK.
Dodatkowe indeksy tworzy się
się dla pó
pól czę
często wykorzystywanych
przy grupowaniu, sortowaniu lub wyszukiwaniu rekordó
rekordów.
W systemie transakcyjnym rzadko stosuje się
się dodatkowe indeksy.
W systemach decyzyjnych tworzy się
się wiele indeksó
indeksów.
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
26/30
Indeksowanie - prezentacja
ZastrzeŜ
ZastrzeŜenia
{index}
index} – indeks nie zapewniają
zapewniający unikatowoś
unikatowości
{unique}
unique} – indeks zapewniają
zapewniający unikatowość
unikatowość
{not null}
null} – kolumna nie dopuszcza wartoś
wartości pustej
Przedział
Przedział indexes
nazwiskonazwisko-i-imię
imię = nazwisko + imię
imię {unique,
unique, not null}
null}
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
27/30
9
Szacowanie rozmiaru bazy
danych
Średni rozmiar rekordu = Suma średniego
rozmiaru pó
pól.
Szacowanie liczby rekordó
rekordów
Narzut DBMS
Przyrost miesię
miesięczny/roczny
Średni rozmiar pó
pól tekstowych - szacowanie
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
28/30
Problemy z rozproszoną
rozproszoną bazą
bazą
danych
Centralna baza danych – lokalne repliki bazy danych
Synchronizacja okresowa
Konflikty synchronizacji:
konflikt blokowania
konflikt klucza unikatowego
konflikt klucza obcego
konflikt poprawnoś
poprawności na poziomie tabeli
konflikt naruszenia wię
więzów integralnoś
integralności
konflikt wielkoś
wielkości liter i porzą
porządkó
dków sortowania
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
29/30
Literatura
Dennis A., Wixom B.H., Tegarden D., Systems
Analysis & Design. An ObjectObject-Oriented Approach
with UML,
UML, John Wiley and Sons,
Sons, USA, 2002
Projektowanie Aplikacji
Rozproszonych
Projektowanie struktury danych
30/30
10
Download