07 Projektowanie bazy danych - freeshell.demaciek/studia/7/par/wyklady/07...Indeksowanie...
Transcript of 07 Projektowanie bazy danych - freeshell.demaciek/studia/7/par/wyklady/07...Indeksowanie...
1
Projektowanie Projektowanie
struktury danychstruktury danych
JarosJarosłław Kuchtaaw Kuchta
Projektowanie Aplikacji RozproszonychProjektowanie Aplikacji Rozproszonych
Projektowanie Aplikacji Rozproszonych 2/30Projektowanie struktury danych
ZagadnieniaZagadnienia
�� Sposoby zapisu danych zewnSposoby zapisu danych zewnęętrznychtrznych
�� Odwzorowanie dziedziny problemu w dziedzinOdwzorowanie dziedziny problemu w dziedzinęędanychdanych
�� Normalizacja relacyjnej bazy danychNormalizacja relacyjnej bazy danych
�� Optymalizacja relacyjnej bazy danych dla Optymalizacja relacyjnej bazy danych dla przechowywania obiektprzechowywania obiektóóww
�� Wykorzystanie indeksWykorzystanie indeksóów w relacyjnej bazie danychw w relacyjnej bazie danych
�� Szacowanie rozmiaru relacyjnej bazy danychSzacowanie rozmiaru relacyjnej bazy danych
�� Problemy synchronizacji w rozproszonej bazie danychProblemy synchronizacji w rozproszonej bazie danych
Projektowanie Aplikacji Rozproszonych 3/30Projektowanie struktury danych
Sposoby zapisu danychSposoby zapisu danych
�� PlikiPliki�� Pliki sekwencyjnePliki sekwencyjne
�� NieuporzNieuporząądkowanedkowane�� UporzUporząądkowanedkowane
�� Pliki swobodnego dostPliki swobodnego dostęępupu
�� Bazy danychBazy danych�� RelacyjneRelacyjne�� RelacyjnoRelacyjno--ObiektoweObiektowe�� ObiektoweObiektowe
2
Projektowanie Aplikacji Rozproszonych 4/30Projektowanie struktury danych
Zalety i wady zapisu w plikachZalety i wady zapisu w plikach
ZaletyZalety
�� ElastycznoElastycznośćść zwizwiąązana z zana z zastosowaniem obiektowego zastosowaniem obiektowego jjęęzyka programowaniazyka programowania
�� DowolnoDowolnośćść typtypóów i w i formatformatóów danychw danych
�� DuDuŜŜa wydajnoa wydajnośćśćodczytu/zapisuodczytu/zapisu
�� Brak koniecznoBrak koniecznośści zakupu ci zakupu systemu bazy danychsystemu bazy danych
WadyWady
�� Redundancja danychRedundancja danych
�� Brak zewnBrak zewnęętrznego trznego mechanizmu modyfikacji mechanizmu modyfikacji struktury danych struktury danych (konieczno(koniecznośćść pisania pisania specjalnych programspecjalnych programóów)w)
�� Brak mechanizmu kontroli Brak mechanizmu kontroli dostdostęępu do danychpu do danych
Projektowanie Aplikacji Rozproszonych 5/30Projektowanie struktury danych
Zastosowanie plikZastosowanie plikóóww
�� Pliki gPliki głłóówne (wne (master master filesfiles))
�� Pliki przeglPliki przegląądowe (dowe (looklook--upup filesfiles))
�� Pliki transakcyjnePliki transakcyjne
�� Pliki kontrolne (Pliki kontrolne (audit audit filesfiles))
�� Pliki archiwalne (Pliki archiwalne (historyhistory filesfiles, , archivearchive filesfiles))
Projektowanie Aplikacji Rozproszonych 6/30Projektowanie struktury danych
Zastosowanie systemu bazy Zastosowanie systemu bazy
danych (DBMS)danych (DBMS)
�� Systemy transakcyjneSystemy transakcyjne
�� Systemy wspierania decyzjiSystemy wspierania decyzji
�� Systemy informowania kierownictwaSystemy informowania kierownictwa
�� Systemy eksperckieSystemy eksperckie
3
Projektowanie Aplikacji Rozproszonych 7/30Projektowanie struktury danych
Rodzaje systemRodzaje systemóów baz danychw baz danych
�� RDBMS RDBMS -- RelationalRelational DatabaseDatabase ManagementManagementSystemSystem
�� ORDBMS ORDBMS -- ObjectObject--relationalrelational DatabaseDatabaseManagementManagement SystemSystem
�� OODBMS OODBMS -- Object Object OrientedOriented DatabaseDatabaseManagemendManagemend SystemSystem
Projektowanie Aplikacji Rozproszonych 8/30Projektowanie struktury danych
Zalety i wady RDBMSZalety i wady RDBMS
ZaletyZalety
�� Szybkie wyszukiwanie danychSzybkie wyszukiwanie danych�� Standardowy jStandardowy jęęzyk dostzyk dostęępu pu
do danych (SQL)do danych (SQL)�� Kontrola spKontrola spóójnojnośści danychci danych�� ŁŁatwoatwośćść modyfikacji modyfikacji
struktury danychstruktury danych�� Dobrze sprawdzone systemy Dobrze sprawdzone systemy
na rynkuna rynku�� Kontrola dostKontrola dostęępu do danychpu do danych�� ŁŁatwoatwośćść wspwspóółłdzielenia dzielenia
struktury danychstruktury danych
WadyWady
�� Brak moBrak moŜŜliwoliwośści obsci obsłługi ugi zzłłooŜŜonych typonych typóów danych w danych (dodawane w niekt(dodawane w niektóórych rych RDBMS)RDBMS)
�� NiecaNiecałłkowita zgodnokowita zgodnośćśćpodstawowych typpodstawowych typóów danych w danych z OOPLz OOPL
�� Brak wsparcia dla zapisu Brak wsparcia dla zapisu danych obiektowychdanych obiektowych
Projektowanie Aplikacji Rozproszonych 9/30Projektowanie struktury danych
Zalety i wady ORDBMSZalety i wady ORDBMS
ZaletyZalety
�� MoMoŜŜliwoliwośści obsci obsłługi ugi zzłłooŜŜonych typonych typóów danychw danych
�� Zbudowane na SQLZbudowane na SQL
�� Kontrola spKontrola spóójnojnośści danychci danych
�� ŁŁatwoatwośćść modyfikacji modyfikacji struktury danychstruktury danych
�� Kontrola dostKontrola dostęępu do danychpu do danych
�� ŁŁatwoatwośćść wspwspóółłdzielenia dzielenia struktury danychstruktury danych
WadyWady
�� NiecaNiecałłkowita zgodnokowita zgodnośćśćpodstawowych typpodstawowych typóów danych w danych z OOPLz OOPL
�� Ograniczone wsparcie dla Ograniczone wsparcie dla zapisu danych obiektowychzapisu danych obiektowych
4
Projektowanie Aplikacji Rozproszonych 10/30Projektowanie struktury danych
Zalety i wady OODBMSZalety i wady OODBMS
ZaletyZalety
�� MoMoŜŜliwoliwośści obsci obsłługi ugi zzłłooŜŜonych typonych typóów danychw danych
�� BezpoBezpośśrednie wsparcie dla rednie wsparcie dla zapisu danych obiektowychzapisu danych obiektowych
�� Kontrola spKontrola spóójnojnośści danychci danych�� ŁŁatwoatwośćść modyfikacji modyfikacji
struktury danychstruktury danych�� Kontrola dostKontrola dostęępu do danychpu do danych�� ŁŁatwoatwośćść wspwspóółłdzielenia dzielenia
struktury danychstruktury danych
WadyWady
�� Brak uznanego standarduBrak uznanego standardu�� KoniecznoKoniecznośćść dopasowania dopasowania
OODBMS do OOPLOODBMS do OOPL�� NiedojrzaNiedojrzałłoośćść narznarzęędzidzi
Projektowanie Aplikacji Rozproszonych 11/30Projektowanie struktury danych
Odwzorowanie klas PD w DM Odwzorowanie klas PD w DM
w OODBMSw OODBMSWarstwa PD
Warstwa DM
Klient Zamówienie
DMKlient DMZamówienie
Projektowanie Aplikacji Rozproszonych 12/30Projektowanie struktury danych
Problem dziedziczenia Problem dziedziczenia
wielokrotnegowielokrotnegoNadklasaA
-atrybutA1-atrybutA2
NadklasaB
-atrybutB1-atrybutB2
KlasaC
-atrybutC1-atrybutC2
5
Projektowanie Aplikacji Rozproszonych 13/30Projektowanie struktury danych
RozwiRozwiąązanie a)zanie a)NadklasaA
-atrybutA1-atrybutA2
NadklasaB-atrybutB1-atrybutB2
KlasaC-atrybutC1-atrybutC2-NadklasaB
1 1
UtworzyUtworzyćć instancjinstancjęędodatkowej nadklasy w dodatkowej nadklasy w warstwie DM i dodawarstwie DM i dodaććatrybut, ktatrybut, któóry pory połąłączy czy instancjinstancjęę nadklasy z instancjnadklasy z instancjąąpodklasy.podklasy.
Projektowanie Aplikacji Rozproszonych 14/30Projektowanie struktury danych
RozwiRozwiąązanie b)zanie b)
NadklasaA
-atrybutA1-atrybutA2
KlasaC-atrybutB1-atrybutB2-atrybutC1-atrybutC2
SpSpłłaszczyaszczyćć hierarchihierarchięę dziedziczenia w dziedziczenia w warstwie DM przez skopiowanie atrybutwarstwie DM przez skopiowanie atrybutóów w i metod nadklas do podklas.i metod nadklas do podklas.
Projektowanie Aplikacji Rozproszonych 15/30Projektowanie struktury danych
Odwzorowanie klas PD w DM Odwzorowanie klas PD w DM
w ORDBMS (zaw ORDBMS (załłooŜŜenia)enia)
�� ORDBMS obsORDBMS obsłługuje:uguje:�� identyfikator obiektu (OID)identyfikator obiektu (OID)
�� kolumny wielowartokolumny wielowartośściowe (np. ciowe (np. teltel[*]: [*]: stringstring))
�� procedury przechowywaneprocedury przechowywane
�� ORDBMS nie obsORDBMS nie obsłługuje:uguje:�� ŜŜadnego rodzaju dziedziczeniaadnego rodzaju dziedziczenia
�� kolumn zkolumn złłooŜŜonychonych
6
Projektowanie Aplikacji Rozproszonych 16/30Projektowanie struktury danych
Odwzorowanie klas PD w DM Odwzorowanie klas PD w DM
w ORDBMSw ORDBMS
kolumna typu OIDkolumna typu OIDmetody dostmetody dostęępupu��asocjacja pojedynczaasocjacja pojedyncza
kolumna wielowartokolumna wielowartośściowaciowametody dostmetody dostęępupu��atrybut wielowartoatrybut wielowartośściowyciowy
nowa tabela + relacja jedennowa tabela + relacja jeden--wielewiele
metody dostmetody dostęępupu��atrybut zatrybut złłooŜŜonyony
kolumna wielowartokolumna wielowartośściowa ciowa typu OID po katypu OID po kaŜŜdej ze strondej ze stron
metody dostmetody dostęępupu��asocjacja wielostronnaasocjacja wielostronna
kolumna wielowartokolumna wielowartośściowa ciowa typu OIDtypu OID
metody dostmetody dostęępupu��asocjacja jedenasocjacja jeden--wielewiele
procedura przechowywanaprocedura przechowywanametoda dostmetoda dostęępupu��atrybut pochodnyatrybut pochodny
kolumnakolumnametody dostmetody dostęępupu��atrybut jednowartoatrybut jednowartośściowyciowy
tabelatabelaklasaklasa��klasaklasa
ORDBMSORDBMSDMDMPDPD
Projektowanie Aplikacji Rozproszonych 17/30Projektowanie struktury danych
RozwiRozwiąązanie problemu zanie problemu
dziedziczenia dziedziczenia
w ORDBMSw ORDBMS
�� Kolumna zawierajKolumna zawierająąca OID instancji ca OID instancji przechowywanej w tablicy reprezentujprzechowywanej w tablicy reprezentująącej cej nadklasnadklasęę..
�� SpSpłłaszczenie hierarchii dziedziczeniaaszczenie hierarchii dziedziczenia
Projektowanie Aplikacji Rozproszonych 18/30Projektowanie struktury danych
Odwzorowanie klas PD w DM Odwzorowanie klas PD w DM
w ORDBMS przykw ORDBMS przykłładadWarstwa PD
Warstwa DM
KlientAdres: (Kod, Miejscowość, Ulica)Tel[*]: stringNIP: string
«table»DTKlient
«table»DTAdres
DMKlient
OsobaImię: stringNazwisko: string
«table»DTOsoba
DMOsoba
7
Projektowanie Aplikacji Rozproszonych 19/30Projektowanie struktury danych
Struktura klas DM Struktura klas DM
w ORDBMS w ORDBMS -- przykprzykłładad
«table»DTKlient
Adres: OIDTel[*]: stringNIP: stringOsoba: OID
DMKlient
Get Klient()Set Klient()
«table»DTOsoba
Imię: stringNazwisko: string
DMOsoba
Get Osoba()Set Osoba()
«table»DTAdres
Kod: stringMiejscowość: stringUlica: string
Osoba Adres
*
Projektowanie Aplikacji Rozproszonych 20/30Projektowanie struktury danych
Odwzorowanie klas PD w DM Odwzorowanie klas PD w DM
w RDBMS (zaw RDBMS (załłooŜŜenia)enia)�� RDBMS obsRDBMS obsłługuje:uguje:
�� automatyczny identyfikator rekordu (ID) automatyczny identyfikator rekordu (ID) �� procedury przechowywaneprocedury przechowywane
�� RDBMS nie obsRDBMS nie obsłługuje:uguje:�� ŜŜadnego rodzaju dziedziczeniaadnego rodzaju dziedziczenia�� kolumn wielowartokolumn wielowartośściowychciowych�� kolumn zkolumn złłooŜŜonychonych
�� ZaZałłooŜŜenia dodatkowe:enia dodatkowe:�� kolumny kolumny -- klucze sklucze sąą typu typu integerinteger (32(32--bitowe)bitowe)�� kolumna automatycznie ustawiana przez RDBMS jest oznaczana kolumna automatycznie ustawiana przez RDBMS jest oznaczana
zastrzezastrzeŜŜeniem {eniem {autosetautoset}}�� kolumna z kluczem wkolumna z kluczem włłasnym jest oznaczana zastrzeasnym jest oznaczana zastrzeŜŜeniem {PK}eniem {PK}�� kolumna z kluczem obcym jest oznaczana zastrzekolumna z kluczem obcym jest oznaczana zastrzeŜŜeniem {FK}eniem {FK}
Projektowanie Aplikacji Rozproszonych 21/30Projektowanie struktury danych
Odwzorowanie klas PD w DM Odwzorowanie klas PD w DM
w RDBMSw RDBMS
kolumna typu kolumna typu integerinteger {FK} + {FK} + relacja jedenrelacja jeden--jedenjeden
metody dostmetody dostęępupu��asocjacja pojedynczaasocjacja pojedyncza
nowa tabela + relacja jedennowa tabela + relacja jeden--wielewielemetody dostmetody dostęępupu��atrybut wielowartoatrybut wielowartośściowyciowy
nowa tabela + relacja jedennowa tabela + relacja jeden--wielewielemetody dostmetody dostęępupu��atrybut zatrybut złłooŜŜonyony
nowa tabela z kolumnami typu nowa tabela z kolumnami typu integerinteger {FK} + relacje jeden{FK} + relacje jeden--wielewiele
metody dostmetody dostęępupu��asocjacja wielostronnaasocjacja wielostronna
kolumna typu kolumna typu integerinteger {FK} + {FK} + relacja jedenrelacja jeden--wielewiele
metody dostmetody dostęępupu��asocjacja jedenasocjacja jeden--wielewiele
procedura przechowywanaprocedura przechowywanametoda dostmetoda dostęępupu��atrybut pochodnyatrybut pochodny
kolumnakolumnametody dostmetody dostęępupu��atrybut jednowartoatrybut jednowartośściowyciowy
tabela + kolumna tabela + kolumna ID: ID: integerinteger {{autosetautoset, PK}, PK}
klasaklasa��klasaklasa
RDBMSRDBMSDMDMPDPD
8
Projektowanie Aplikacji Rozproszonych 22/30Projektowanie struktury danych
Struktura klas DM Struktura klas DM
w RDBMS w RDBMS -- przykprzykłładad
«table»DTKlient
ID: integer {autoset, PK}NIP: stringOsoba: integer {FK}
DMKlient
Get Klient()Set Klient()
«table»DTOsoba
ID: integer {autoset, PK}Imię: stringNazwisko: string
DMOsoba
Get Osoba()Set Osoba()
«table»DTAdres
ID: integer {autoset, PK}Klient: integer {FK}Kod: stringMiejscowość: stringUlica: string
Osoba Klient
«table»DTTel
ID: integer {autoset, PK}Klient: integer {FK}Tel: string
Klient
*
1
1
1
1
1
Projektowanie Aplikacji Rozproszonych 23/30Projektowanie struktury danych
Optymalizacja obiektu w RDBMSOptymalizacja obiektu w RDBMS
�� Optymalizacja wydajnoOptymalizacja wydajnośści (normalizacja)ci (normalizacja)
�� Optymalizacja szybkoOptymalizacja szybkośści (ci (denormalizacjadenormalizacja, , indeksowanie)indeksowanie)
Projektowanie Aplikacji Rozproszonych 24/30Projektowanie struktury danych
NormalizacjaNormalizacja
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
Czy któraś tablica zawiera powtarzające się pola? Czy pewne rekordy mają róŜną liczbę kolumn od innych rekordów?
0NF
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.
Czy PK jest tworzony z więcej niŜ jednego pola? Jeśli tak, to czy są pola zaleŜne tylko od części PK?
1NF
2NF
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
Czy są pola zaleŜne od innego drugoplanowego pola kluczowego?
3NF
9
Projektowanie Aplikacji Rozproszonych 25/30Projektowanie struktury danych
DenormalizacjaDenormalizacja
�� Tablice przeglTablice przegląądowe (dowe (looklook--upup tablestables))
�� Relacje jedenRelacje jeden--jedenjeden
�� Relacje jedenRelacje jeden--wielewiele
Projektowanie Aplikacji Rozproszonych 26/30Projektowanie struktury danych
Indeksowanie Indeksowanie -- zasadyzasady
�� Dla kaDla kaŜŜdej tablicy tworzy sidej tablicy tworzy sięę indeks unikalny w oparciu o PK.indeks unikalny w oparciu o PK.
�� Dla kaDla kaŜŜdej tablicy tworzy sidej tablicy tworzy sięę indeksy w oparciu o FK.indeksy w oparciu o FK.
�� Dodatkowe indeksy tworzy siDodatkowe indeksy tworzy sięę dla pdla póól czl częęsto wykorzystywanych sto wykorzystywanych przy grupowaniu, sortowaniu lub wyszukiwaniu rekordprzy grupowaniu, sortowaniu lub wyszukiwaniu rekordóów.w.
�� W systemie transakcyjnym rzadko stosuje siW systemie transakcyjnym rzadko stosuje sięę dodatkowe indeksy.dodatkowe indeksy.
�� W systemach decyzyjnych tworzy siW systemach decyzyjnych tworzy sięę wiele indekswiele indeksóów.w.
Projektowanie Aplikacji Rozproszonych 27/30Projektowanie struktury danych
Indeksowanie Indeksowanie -- prezentacjaprezentacja
�� ZastrzeZastrzeŜŜeniaenia�� {{indexindex} } –– indeks nie zapewniajindeks nie zapewniająący unikatowocy unikatowośścici
�� {{uniqueunique} } –– indeks zapewniajindeks zapewniająący unikatowocy unikatowośćść
�� {not {not nullnull} } –– kolumna nie dopuszcza wartokolumna nie dopuszcza wartośści pustejci pustej
�� PrzedziaPrzedziałł indexesindexes�� nazwiskonazwisko--ii--imiimięę = nazwisko + imi= nazwisko + imięę {{uniqueunique, not , not nullnull}}
10
Projektowanie Aplikacji Rozproszonych 28/30Projektowanie struktury danych
Szacowanie rozmiaru bazy Szacowanie rozmiaru bazy
danychdanych
�� ŚŚredni rozmiar rekordu = Suma redni rozmiar rekordu = Suma śśredniego redniego rozmiaru prozmiaru póól.l.�� ŚŚredni rozmiar predni rozmiar póól tekstowych l tekstowych -- szacowanieszacowanie
�� Szacowanie liczby rekordSzacowanie liczby rekordóóww
�� Narzut DBMSNarzut DBMS
�� Przyrost miesiPrzyrost miesięęczny/rocznyczny/roczny
Projektowanie Aplikacji Rozproszonych 29/30Projektowanie struktury danych
Problemy z rozproszonProblemy z rozproszonąą bazbaząą
danychdanych
�� Centralna baza danych Centralna baza danych –– lokalne repliki bazy danychlokalne repliki bazy danych
�� Synchronizacja okresowaSynchronizacja okresowa
�� Konflikty synchronizacji:Konflikty synchronizacji:�� konflikt blokowaniakonflikt blokowania
�� konflikt klucza unikatowegokonflikt klucza unikatowego
�� konflikt klucza obcegokonflikt klucza obcego
�� konflikt poprawnokonflikt poprawnośści na poziomie tabelici na poziomie tabeli
�� konflikt naruszenia wikonflikt naruszenia więęzzóów integralnow integralnośścici
�� konflikt wielkokonflikt wielkośści liter i porzci liter i porząądkdkóów sortowaniaw sortowania
Projektowanie Aplikacji Rozproszonych 30/30Projektowanie struktury danych
LiteraturaLiteratura
�� DennisDennis A., A., WixomWixom B.H., B.H., TegardenTegarden D., D., SystemsSystems
AnalysisAnalysis & Design. & Design. AnAn ObjectObject--OrientedOriented ApproachApproach
withwith UMLUML, John , John WileyWiley andand SonsSons, USA, 2002, USA, 2002