Wykład 5 Fizyczne projektowanie bazy danych (Paul Beynon-Davies, Systemy baz danych )



Podobne dokumenty
Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Wykład 2. Relacyjny model danych

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

P o d s t a w y j ę z y k a S Q L

030 PROJEKTOWANIE BAZ DANYCH. Prof. dr hab. Marek Wisła

Oracle11g: Wprowadzenie do SQL

PLAN WYKŁADU BAZY DANYCH MODEL DANYCH. Relacyjny model danych Struktury danych Operacje Integralność danych Algebra relacyjna HISTORIA

Program wykładu. zastosowanie w aplikacjach i PL/SQL;

SZKOLENIE: Administrator baz danych. Cel szkolenia

Bazy danych wykład dwunasty. dwunasty Wykonywanie i optymalizacja zapytań SQL 1 / 36

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Bazy danych 1. Wykład 5 Metodologia projektowania baz danych. (projektowanie logiczne)

Zasady transformacji modelu DOZ do projektu tabel bazy danych

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Systemy GIS Tworzenie zapytań w bazach danych

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

K1A_W11, K1A_W18. Egzamin. wykonanie ćwiczenia lab., sprawdzian po zakończeniu ćwiczeń, egzamin, K1A_W11, K1A_W18 KARTA PRZEDMIOTU

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Wprowadzenie do baz danych

BAZY DANYCH algebra relacyjna. Opracował: dr inż. Piotr Suchomski

Laboratorium nr 5. Bazy danych OpenOffice Base.

Paweł Rajba

Model relacyjny. Wykład II

1 Wstęp do modelu relacyjnego

Model relacyjny bazy danych

Dane wejściowe. Oracle Designer Generowanie bazy danych. Wynik. Przebieg procesu

Bazy danych wykład ósmy Indeksy

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Wykład 8. SQL praca z tabelami 5

Systemy baz danych. mgr inż. Sylwia Glińska

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

Transformacja modelu ER do modelu relacyjnego

Bazy danych - wykład wstępny

Wprowadzenie do baz danych

Autor: Joanna Karwowska

Bazy danych Wykład zerowy. P. F. Góra

Definicja bazy danych TECHNOLOGIE BAZ DANYCH. System zarządzania bazą danych (SZBD) Oczekiwania wobec SZBD. Oczekiwania wobec SZBD c.d.

Bazy Danych. C. J. Date, Wprowadzenie do systemów baz danych, WNT - W-wa, (seria: Klasyka Informatyki), 2000

WPROWADZENIE DO BAZ DANYCH

Bazy danych 2. Wykład 1

Wykład XII. optymalizacja w relacyjnych bazach danych

Program nauczania. Systemy baz danych. technik informatyk

BAZY DANYCH LABORATORIUM. Studia niestacjonarne I stopnia

Model relacyjny. Wykład II

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu:

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Przykładowa baza danych BIBLIOTEKA

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

Struktury danych i optymalizacja

Technologie baz danych

PODSTAWOWE POJĘCIA BAZ DANYCH

Bazy danych. Algebra relacji

Plan wykładu. Elementy ERD BAZY DANYCH. Proces modelowania i implementacji bazy danych. Diagramy związków encji. SQL podzapytania

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Spis treści. Przedmowa

PRZEWODNIK PO PRZEDMIOCIE

W tym modelu wszystkie dane przechowywane są w jednym arkuszu, tabeli, pliku.

Spis treści. 1 Modelowanie logiczne. Plan wykładu. 1 Modelowanie logiczne 1

Bazy danych. Zenon Gniazdowski WWSI, ITE Andrzej Ptasznik WWSI

1. Mapowanie diagramu klas na model relacyjny.

Pojęcie bazy danych. Funkcje i możliwości.

Bazy danych. Plan wykładu. Model logiczny i fizyczny. Operacje na pliku. Dyski. Mechanizmy składowania

Transformacja modelu pojęciowego. do logicznego

SIECI KOMPUTEROWE I BAZY DANYCH

BAZY DANYCH wprowadzenie. Opracował: dr inż. Piotr Suchomski

Bazy Danych egzamin 9 luty, 2012 rozwiazania

PRZEWODNIK PO PRZEDMIOCIE

Projektowanie relacyjnych baz danych

Teoretyczne podstawy informatyki

Bazy danych. Dr inż. Paweł Kasprowski

Dział Temat lekcji Ilość lekcji. godz. 1 Organizacja zajęć Omówienie programu nauczania 3

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

Dr Michał Tanaś(

METODY INŻYNIERII WIEDZY ASOCJACYJNA REPREZENTACJA POWIĄZANYCH TABEL I WNIOSKOWANIE IGOR CZAJKOWSKI

Przestrzenne bazy danych Podstawy języka SQL

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA Relacyjny model danych. Relacyjny model danych Struktury danych Operacje Oganiczenia integralnościowe

Tadeusz Pankowski

Tabela wewnętrzna - definicja

Księgarnia PWN: Michael J. Hernandez Bazy danych dla zwykłych śmiertelników

Cel przedmiotu. Wymagania wstępne w zakresie wiedzy, umiejętności i innych kompetencji 1 Język angielski 2 Inżynieria oprogramowania

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Relacyjny model baz danych, model związków encji, normalizacje

SIECI KOMPUTEROWE I BAZY DANYCH

Indeksy w bazach danych. Motywacje. Techniki indeksowania w eksploracji danych. Plan prezentacji. Dotychczasowe prace badawcze skupiały się na

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

Aspekty aktywne baz danych

Bazy danych 2. Wykład 3. Metodologia projektowania baz danych (projektowanie fizyczne)

Baza danych to zbiór wzajemnie powiązanych ze sobą i zintegrowanych danych z pewnej dziedziny.

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

Fizyczna organizacja danych w bazie danych

KARTA PRZEDMIOTU 1,5 1,5

Optymalizacja wydajności SZBD

Optymalizacja zapytań. Proces przetwarzania i obliczania wyniku zapytania (wyrażenia algebry relacji) w SZBD

KARTA PRZEDMIOTU. WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI Ogólne umiejętności posługiwania się komputerem

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Baza danych sql. 1. Wprowadzenie

Transkrypt:

Zawartość wykładu: Wykład 5 Fizyczne projektowanie bazy danych (Paul Beynon-Davies, Systemy baz danych ) 1) Logiczne projektowanie bazy danych 2) Fizyczne projektowanie bazy danych 3) Zdefiniowanie wydajności 4) Przykład projektowania wydajnej relacyjnej bazy danych Zofia Kruczkiewicz, I-6, p325 C3 1 Internetowe bazy danych, Wykład 5

1. Logiczne projektowanie bazy danych - niezależnie od implementacji Konstruowanie modelu reguł działalności stosowanych w pewnej organizacji w postaci relacji czyli tabel 2. Fizyczne projektowanie bazy danych - zależnie od implementacji Analiza wyników logicznego projektu Uwzględnienie wymagań wydajnościowych Uwzględnienie wymagań pamięciowych Implementacja przy użyciu mechanizmów wybranego Systemu Zarządzania Bazą Danych Produkty wejściowe projektowania fizycznego 1. Model logiczny typu relacyjnego (diagramy związków encji, tabele jako odwzorowanie diagramu związków encji) 2. Przybliżone oszacowanie liczby wierszy w tabelach analiza ilości 3. Szacunkowa analiza sposobów użycia tabel za pomocą rodzaju i częstości występowania operacji, które będą prawdopodobnie oddziaływać na tabele w naszej bazie danych analiza użycia 4. Lista więzów integralności analiza więzów integralności 5. Lista najczęściej wykonywanych raportów Produkty wyjściowe projektowania fizycznego 1. Struktury plików zadeklarowane w wybranym języku definiowania danych (Data Definition Language - DDL) 2. Indeksy na strukturach plików 3. Klastry plików 4. Zbiór powiązań wewnętrznych wyrażony w DDL i dodatkowych więzów integralności wyrażony w wybranym języku integralności danych (Data Integrity Language - DIL) 5. Zbiór zapytań zoptymalizowany do działania w konkretnej bazie danych (zapytanie zoptymalizowane taka forma zapytania, która podaje odpowiedź w możliwie najkrótszym czasie). Wybór zapytania do optymalizacji jest dokonywany na podstawie analizy użycia, ilości i integralności. Przyjmuje się dalej, że zapytanie to zarówno czytanie jak zmiana stanu bazy danych (wstawianie, usuwanie i modyfikacja) Zofia Kruczkiewicz, I-6, p325 C3 2 Internetowe bazy danych, Wykład 5

3. Zdefiniowanie wydajności Wydajność jest wyrażana za pomocą: czasów reakcji systemu (czas oczekiwania na wykonanie zapytania oraz czas wykonania zapytania) przepustowości (średnia liczba zapytań obsłużonych przez system w określonym czasie) itp Wydajność zależy od: złożoności obliczeniowej zapytania liczby zapytań oczekujących na wykonanie algorytmów szeregowania zapytań parametrów czasowych sprzętu zapotrzebowania na zasoby (pamięć operacyjną, dyski) Aby zdefiniować wydajność systemu, trzeba zdefiniować misję aplikacji: analiza ilości maksymalna i średnia liczba krotek, zmienność liczby krotek analiza użycia- priorytetowa lista najważniejszych zapytań, bo najczęściej wykonywanych należy określić oczekiwaną minimalną częstotliwość tych zapytań analiza integralności sposób obsługi więzów integralności Decyzje dotyczące dostrajania bazy danych pod względem wydajności 1. podziały pionowy i poziomy tabel 2. tworzenie mechanizmów dostępu związanych z przechowywaniem 3. dodawanie indeksów 4. denormalizacja 5. więzy integralności 6. wykorzystanie SZBD Zofia Kruczkiewicz, I-6, p325 C3 3 Internetowe bazy danych, Wykład 5

Ad. 1) Podział tabel powinien prowadzić do zmniejszenia czasu wykonania najczęściej wykonywanych zapytań (przykład 1) Ad. 2) sekwencyjność (małe tabele, średnie i duże tabele, gdy należy udostępnić ponad 20% wierszy, dla dowolnych tabel w przypadku zapytań o niskim priorytecie)- pętle zewnętrzne zapytań powinny być krótsze o zagnieżdżonych haszowanie (jako główna ścieżka dostępu do pliku, zbudowana na kluczach głównych) klastry (umieszczanie w jednym klastrze dane używane w operacji złączeń) Ad. 3) Kompromis między czasem wykonywania zapytań oraz czasem modyfikowania, wstawiania i usuwania danych indeksy na kluczach głównych (obowiązkowe) indeksy na kluczach obcych indeksy wtórne Ad. 4) Stosowanie denormalizacji jest stosowane, gdy inne metody zawiodą Np. Wprowadzenie tablicy łączącej tablicę tytul i tablice ksiazka Ksiazka_i_tytul (Id_ksiazka_tytul, tytul, autor, ISBN, cena, numer) Ad. 5) Implementowanie więzów integralności: a) wewnętrznie: określa się więzy integralność encji (ze względu na klucz główny), więzy integralność referencyjnej (klucze obce w zasadzie nie powinny być równe null), więzy integralności dziedziny (np. wartości typ_tytulu muszą pochodzić z dziedziny {Techniczna, Beletrystyczna} proceduralnie: np. procedury wyzwalane nieproceduralnie: zastosowanie centralnych słowników danych, co umożliwia utrzymywanie więzów integralności niezależnie od programów użytkowych Ad. 6) Wybór Systemu Zarządzania Bazą Danych może mieć różny wpływ na wydajność bazy danych typ optymalizacji praca wielowątkowa zapytania interpretowane podczas wykonywania zapytania są wolniejsze- jednak poprawia się ich wydajność, gdy baza jest zmienna lub dostęp do danych ma charakter losowy zapytania skompilowane są szybsze od interpretowanych Zofia Kruczkiewicz, I-6, p325 C3 4 Internetowe bazy danych, Wykład 5

4. Przykład projektowania wydajnej relacyjnej bazy danych 4.1. Produkty wejściowe 4.1.1. Model relacyjny (pominięto etap analizy czyli tworzenia diagramu związków encji i odwzorowania w tabele) Baza Katalog książek składa się z następujących tabel: Tytul (Id_tytulu, tytul, autor, ISBN, typ_ksiazki) Ksiazka (Id_ksiazki, numer_ksiazki, Id_tytulu_) Rezerwacje(Id_rezerwacji, data, Id_tytulu_) Uwaga: atrybut typ_ksiazki umożliwia klasyfikację książek na książki techniczne i beletrystyczne 4.1.2. Analiza ilości Oszacowanie maksymalnej liczby krotek (danych) czyli maksymalnego rozmiaru tabeli pozwala oszacować rozmiar pamięci dyskowej Oszacowanie średniej liczby krotek (średniego rozmiaru tabeli), które mogą być zapisane w bazie danych, daje możliwość oceny modelu dostępu do danych Tabela Maksymalna liczba wierszy a Średnia liczba wierszy b Rozmiar kolumn (krotki) c Maksymalny rozmiar tabeli a*c Zofia Kruczkiewicz, I-6, p325 C3 5 Internetowe bazy danych, Wykład 5 Średni rozmiar tabeli b*c Tytul 5 000 3 000 49 245 000 147 000 Ksiazka 100 000 30 000 9 900 000 270 000 Rezerwacje 100 000 50 000 8 800 000 400 000 Suma 1 945 000 817 000 4.1.3. Analiza użycia Identyfikacja podstawowych zapytań, wymaganych w bazie danych jako ciągi operacji: wstawiania, modyfikowania, wyszukiwania i usuwania, Zmienność pliku w ciągu roku w tym samym czasie usuwa się 50 i dodaje 50 tytułów, czyli 50/5000=1% w tym samym czasie usuwa się 1000 i dodaje się 1000 książek, czyli 1000/100000=1% w tym samym czasie usuwa się 10000 rezerwacji i zakłada nowych 10000 rezerwacji, czyli 10000/10000=100%. Tabela Zmienność Tytul Mała Ksiazka Mała Rezerwacja duża

Analiza wymagań dotyczących dostępu Rozmiar i zmienność pliku mają wpływ na dostęp do bazy danych: Im większy plik, tym większa konieczność zastosowania specjalnych struktur dostępu do baz danych Im bardziej zmienny plik, tym bardziej konieczne są jak najmniej czasochłonne struktury dostępu do baz danych Zapytanie Częstotliwość wykonywania Podaj tytuły książek Raz na rok - Podaj autorów książek Raz na rok - Podaj tytuły książek technicznych Raz na miesiąc - Podaj numery książek technicznych Podaj tytuły beletrystyczne Podaj zarezerwowane tytuły beletrystyczne Rezerwacje tytułów technicznych lub beletrystycznych Podaj książki beletrystyczne 4.1.4. Analiza integralności Raz dziennie - Wiele razy dziennie Wiele razy dziennie Wiele razy dziennie Wiele razy dziennie Konieczność zapewnienia najkrótszego czasu wykonania zapytania + (przykład) + (przykład) + + (przykład) Trzy typy więzów integralności wewnętrznej: klucza głównego (np. Id_ksiazki w tabeli Ksiazka nie może być równy null) klucza obcego (np. Id_tytulu_ w tabeli Ksiazka nie może być równy null) dziedziny wartości np. atrybut typ_tytulu {Techniczna, Beletrystyczna} może przybierać tylko dwie wartości: Techniczna lub Beletrystyczna Typy więzów integralności dodatkowej: więzy przejścia np. jeśli żadna książka o danym tytule nie była wypożyczona przez rok, należy te książki wraz tytułem usunąć z bazy danych więzy statyczne: liczba rezerwacji danego tytułu nie może przekroczyć podwójnej liczby książek o tym tytule Obsługa więzów integralności jest czasochłonna. Zofia Kruczkiewicz, I-6, p325 C3 6 Internetowe bazy danych, Wykład 5

4.2. Produkty wyjściowe zoptymalizowane zapytania (p.1-3, str. 3) Zastosowania różnych metod dostępu do danych poprawiające wydajności bazy danych (1) podział tabel, (2) sekwencyjność w dostępie do baz danych, klastry, (3) użycie indeksów. 4.2.1. Pytanie zawierające selekcję na tabeli Tytul często zadawane pytanie o tytuły beletrystyczne Tytul (Id_tytulu, tytul, autor, ISBN, typ_ksiazki) a) liczba krotek w tabeli Tytul jest równa n, b) 0.9 n to krotki zawierające wartość atrybutu typ_tytulu= Techniczna c) 0.1 n to krotki zawierające wartość atrybutu typ_tytulu= Beletrystyczna d) na stronie pliku przechowuje się t krotek, stąd mamy n/t. Zakłada się najgorszy wariant, w którym każda krotka jest na innej stronie, czyli t=1 Pytanie Select * From Tytul Where typ_tytulu= Techniczna Czasochłonność w technice sekwencyjnej Do i:= 1 to n if Tytul[i].typ_ksiazki= Beletrystyczna Dodaj krotkę Tytul[i] do wynikowej tabeli T1 =t1 +t2 t1 = n - czasochłonność czytania krotek z tabeli Tytul t2 =0.1n - czasochłonność zapisu krotek z tabeli Tytul o typ_tytulu= Beletrystyczna T1 =1.1n Czasochłonność po dodaniu indeksu na atrybucie typ_tytulu w tabeli Tytul Do i:= 1 to 0.1n //następuje bezpośrednie odwołanie poprzez indeks Beletrystyczna do 0.1n krotek w tabeli Tytul if Tytul[i].typ_ksiazki= Beletrystyczna Dodaj krotkę Tytul[i] do wynikowej tabeli T1 =t1 +t2 t1 = 0.1n - czasochłonność czytania krotek z tabeli Tytul t3 = 0.1n - czasochłonność zapisu krotek z tabeli Tytul jako wyniku selekcji T1 =0.1n+0.1=0.2n T1 =0.2n Zofia Kruczkiewicz, I-6, p325 C3 7 Internetowe bazy danych, Wykład 5

Czasochłonność po podziale tabeli Tytul poziomy (podział na tytuly techniczne i beletrystyczne) i pionowy (odrzucenie atrybutu typ_tytulu) Tytul_Techniczny(Id_tytulu, tytul, autor, ISBN) Tytul_Beletrystyczny(Id_tytulu, tytul, autor, ISBN) Do i:= 1 to 0.1n // if Tytul[i].typ_ksiazki= Beletrystyczna nie jest wykonywane, gdyż następuje // bezpośrednie odwołanie do 0.1n krotek w tabeli Tytul_Beletrystyczny dedykowanej // typ_tytulu= Beletrystyczna Dodaj krotkę Tytul_Beletrystyczny[i] do wynikowej tabeli T1 =t1 +t2 t1 = 0.1n - czasochłonność czytania krotek z tabeli Tytul_Beletrystyczny t3 = 0.1n - czasochłonność zapisu krotek z tabeli Tytul_Beletrystyczny T1 =0.1n+0.1n=0.1n T1 =0.2n T1 =T1 Różnica między rozwiązaniami: delta T = T1 -T1 =0.9n Wniosek: podział tabeli Tytul oraz założenie indeksu dają identyczną czasochłonność wykonania zapisu w przypadku, gdy zostanie pominięta obsługa indeksu. W przeciwnym wypadku rozwiązanie z podziałem tabeli Tytul jest najlepsze. 4.2.2. Pytania zawierające złączenia dwóch tabel często zadawane pytanie o zarezerwowane tytuly beletrystyczne Tytul (Id_tytulu, tytul, autor, ISBN, typ_tytulu) Rezerwacje(Id_rezerwacji, data, _Id_tytulu) Np. Pytanie: Select * From Tytul, Rezerwacje Where typ_ksiazka= Beletrystyczna And Id_tytulu=_Id_tytulu; e) liczba krotek w tabeli Tytul jest równa n, gdzie 0.1 n to krotki zawierające wartość atrybutu typ_tytulu= Beletrystyczna f) w tabeli Rezerwacje znajduje się r krotek oraz r>n g) w tabeli Rezerwacje znajduje się p krotek jako zarezerwowanych książek beletrystycznych oraz p 0.1r h) na stronie pliku przechowuje się t krotek, stąd mamy r/t oraz n/t. Zakłada się najgorszy wariant, w którym każda krotka jest na innej stronie, czyli t=1 Zofia Kruczkiewicz, I-6, p325 C3 8 Internetowe bazy danych, Wykład 5

Czasochłonność w technice sekwencyjnej Do i:= 1 to n if Tytul[i].typ_tytulu= Beletrystyczna Do k:=1 to p1 //prawda dla 0.1n krotek //liczba krotek zarezerwowanych dla danego tytułu beletrystycznego if Tytul[i].Id_tytulu = Rezerwacje[k]._Id_tytulu //następuje bezpośredni odczyt //w tabeli Rezerwacje dzięki indeksowi na kluczu obcym _Id_tytulu Dodaj krotkę Tytul[i]*Rezerwacje[k] do wynikowej tabeli T1 =t1 +t2 +t3 t1 = n - czasochłonność czytania krotek z tabeli Tytul t2 = 0.1np - czasochłonność czytania krotek z tabeli Rezerwacje i testowań warunków (drugi argument to testowanie zaindeksowanych kluczy obcych dla (w sumie) p krotek z tabeli Rezerwacje) t3 = p - czasochłonność zapisu złączonych krotek z tabel Rezerwacje i Tytul T1 = n +0.1np+p Uwaga: Jeśli r <n, czyli gdy liczba wszystkich rezerwacji jest mniejsza niż liczba tytułów Do k:= 1 to r //istnieje tylko jeden tytul posiadający klucz główny równy kluczowi obcemu w tabeli Rezerwacje //Tytul[i].Id_tytulu = Rezerwacje[k]._Id_tytulu Do i:=x[k] to X[k] //X[k] - indeks Id_tytulu if Tytul[i].typ_tytulu= Beletrystyczna Dodaj krotkę Tytul[i]*Rezerwacje[k] do wynikowej tabeli T1 =t1 +t2 +t3 t1 =r - czasochłonność czytania krotek z tabeli Rezerwacje t2 =r*1 - czasochłonność czytania indeksowanych krotek (klucz główny) z tablicy Tytul czyli Tytul[i].Id_tytulu = Rezerwacje[k]._Id_tytulu t3 =p - czasochłonność zapisu złączonych krotek z tabel Rezerwacje i Tytul T1 =2r+p Zofia Kruczkiewicz, I-6, p325 C3 9 Internetowe bazy danych, Wykład 5

Czasochłonność po dodaniu indeksu na atrybucie typ_tytulu w tabeli Tytul Do i:= 1 to 0.1n //następuje bezpośrednie odwołanie poprzez indeks Beletrystyczna do 0.1n krotek w tabeli Tytul if Tytul[i].typ_ksiazki= Beletrystyczna Do k := 1 to p1 //liczba krotek odpowiadająca danemu tytułowi typu Beletrystyczna //następuje bezpośredni odczyt w tabeli Rezerwacje dzięki indeksowi na kluczu obcym _Id_tytulu if Rezerwacje[k]._Id_tytulu=Tytul[i].Id_tytulu Dodaj krotkę Rezerwacje[k] * Tytul[i] do wynikowej tabeli T1 =t1 +t2 +t3 t1 = 0.1n - czasochłonność czytania krotek z tabeli Tytul t2 =0.1n*p - czasochłonność czytania krotek z tabeli Rezerwacje i testowań warunków (drugi argument to testowanie zaindeksowanych kluczy głównych dla (w sumie) p krotek z tabeli Rezerwacje) t3 = p - czasochłonność zapisu złączonych krotek z tabel Rezerwacje i Tytul T1 =0.1n+0.1np+p Czasochłonność w technice sekwencyjnej po podziale tabeli Tytul poziomy (podział na tytuly techniczne i beletrystyczne) i pionowy (odrzucenie atrybutu typ_tytulu) Tytul_Techniczny(Id_tytulu, tytul, autor, ISBN) Tytul_Beletrystyczny(Id_tytulu, tytul, autor, ISBN) Rezerwacje(Id_rezerwacji, numer, _Id_tytulu) Do i:= 1 to 0.1n //mamy 0.1n krotek w tabeli Tytul_Beletrystyczny //instrukcja nie wykona się, gdyż następuje bezpośrednie odwołanie do 0.1n krotek w tabeli //Tytul_Beletrystyczny dedykowanej typ_tytulu= Beletrystyczna //if Tytul[i].typ_ksiazki= Beletrystyczna - Do k := 1 to p1 //liczba krotek odpowiadająca danemu tytułowi typu Beletrystyczna // następuje bezpośredni odczyt w tabeli Rezerwacje dzięki indeksowi na kluczu obcym _Id_tytulu if Rezerwacje[k]._Id_tytulu_=Tytul_Beletrystyczny[i].Id_tytulu Dodaj krotkę Rezerwacje[k] * Tytul_Beletrystyczny[i] do wynikowej tabeli T1 =t1 +t2 +t3 t1 = 0.1n - czasochłonność czytania krotek z tabeli Tytul_Beletrystyczny t2 = 0.1np - czasochłonność czytania krotek z tabeli Rezerwacje i testowań warunków (drugi argument to testowanie zaindeksowanych kluczy głównych dla p (w sumie) krotek z tabeli Rezerwacje) t3 = p - czasochłonność zapisu złączonych krotek z tabel Rezerwacje i Tytul_Beletrystyczny T1 =0.1n+0.1np+p Zofia Kruczkiewicz, I-6, p325 C3 10 Internetowe bazy danych, Wykład 5

T1 = T2 Różnica między rozwiązaniami: delta T = T1 -T1 =0.9n Wniosek: Rozwiązanie z dodatkowym indeksem na atrybucie typ_tytulu i podziałem tabeli Tytul ma tę samą czasochłonność, jeśli pominie się czasochłonność obsługi indeksu. W przeciwnym wypadku czasochłonność obsługi indeksu powoduje, że podział tabel Tytul jest najlepszy. Najgorszy przypadek to odczyt sekwencyjny bez indeksu i podziału tabel. 4.2.3. Pytania zawierające złączenia dwóch tabel często zadawane pytanie o ksiązki beletrystyczne Tytul (Id_tytulu, tytul, autor, ISBN, typ_tytulu) Ksiazka (Id_ksiazki, numer, Id_tytulu_) Np. Pytanie: Select * From Tytul, Ksiazka Where typ_ksiazka= Beletrystyczna And Id_tytulu=Id_tytulu_; i) liczba krotek w tabeli Ksiazka jest równa m j) liczba krotek w tabeli Ksiazka odpowiadająca tytułom o wartości atrybutu typ_tytulu równym Beletrystyczna jest równa q k) na stronie pliku przechowuje się t krotek, stąd mamy m/t. Zakłada się najgorszy wariant, w którym każda krotka jest na innej stronie, czyli t=1 Czasochłonność w technice sekwencyjnej Do i:= 1 to n if Tytul[i].typ_ksiazki= Beletrystyczna Do j:=1 to q1 //prawda dla 0.1n krotek //liczba krotek zarezerwowanych dla danego tytułu beletrystycznego if Tytul[i].Id_tytulu = Ksiazka[j].Id_tytulu_ //następuje bezpośredni odczyt //w tabeli Ksiazka dzięki indeksowi na kluczu obcym Id_tytulu_ Dodaj krotkę Ksiazka[j] * Tytul[i] do wynikowej tabeli T1 =t1 +t2 +t3 t1 = n - czasochłonność czytania krotek z tabeli Tytul t2 =0.1nq - czasochłonność czytania krotek z tabeli Ksiazka i testowań warunków (drugi argument to testowanie zaindeksowanych kluczy obcych dla (w sumie) q krotek z tabeli Ksiazka) t3 = q - czasochłonność zapisu złączonych krotek z tabel Ksiazka i Tytul T1 =n+0.1nq+q Zofia Kruczkiewicz, I-6, p325 C3 11 Internetowe bazy danych, Wykład 5

Czasochłonność po dodaniu indeksu na atrybucie typ_tytulu w tabeli Tytul Do i:= 1 to 0.1n // następuje bezpośrednie odwołanie poprzez indeks Beletrystyczna do 0.1n krotek w tabeli Tytul if Tytul[i].typ_ksiazki= Beletrystyczna Do j := 1 to q1 //liczba krotek odpowiadająca danemu tytułowi typu Beletrystyczna //następuje bezpośredni odczyt w tabeli Ksiazka dzięki indeksowi na kluczu obcym Id_tytulu_ if Ksiazka[j].Id_tytulu_=Tytul[i].Id_tytulu Dodaj krotkę Ksiazka[j] * Tytul[i] do wynikowej tabeli T1 =t1 +t2 +t3 t1 = 0.1n - czasochłonność czytania krotek z tabeli Tytul t2 = 0.1n*q - czasochłonność czytania krotek z tabeli Ksiazka i testowań warunków (drugi argument to testowanie zaindeksowanych kluczy głównych dla (w sumie) q krotek z tabeli Ksiazka) t3 = q - czasochłonność zapisu złączonych krotek z tabel Ksiazka i Tytul T1 =0.1n+0.1nq+q Czasochłonność w technice sekwencyjnej po podziale tabeli Tytul - poziomy (podział na tytuly techniczne i beletrystyczne) i pionowy (odrzucenie atrybutu typ_tytulu) Tytul_Techniczny(Id_tytulu, tytul, autor, ISBN) Tytul_Beletrystyczny(Id_tytulu, tytul, autor, ISBN) Ksiazka(Id_ksiazki, numer, Id_tytulu_) Do i:= 1 to 0.1n //mamy 0.1n krotek w tabeli Tytul_Beletrystyczny //nie jest wykonywane, gdyż następuje bezpośrednie odwołanie do 0.1n krotek w tabeli // Tytul_Beletrystyczny dedykowanej typ_tytulu= Beletrystyczna //if Tytul[i].typ_ksiazki= Beletrystyczna Do j := 1 to q1 //liczba krotek odpowiadająca danemu tytułowi typu Beletrystyczna //następuje bezpośredni odczyt w tabeli Ksiazka dzięki indeksowi na kluczu obcym Id_tytulu_ if Ksiazka[j].Id_tytulu_=Tytul_Beletrystyczny[i].Id_tytulu Dodaj krotkę Ksiazka[j] * Tytul_Beletrystyczny[i] do wynikowej tabeli T1 =t1 +t2 +t3 t1 = 0.1n - czasochłonność czytania krotek z tabeli Tytul_Beletrystyczny t2 = 0.1n*q - czasochłonność czytania krotek z tabeli Ksiazka i testowań warunków (drugi argument to testowanie zaindeksowanych kluczy głównych dla q (w sumie) krotek z tabeli Ksiazka) t3 = q - czasochłonność zapisu złączonych krotek z tabel Ksiazka i Tytul_Beletrystyczny T1 =0.1n+0.1n*q+q Zofia Kruczkiewicz, I-6, p325 C3 12 Internetowe bazy danych, Wykład 5

T1 = T2 Różnica między rozwiązaniami: delta T = T1 -T1 =0.9n Wniosek: Rozwiązanie z dodatkowym indeksem na atrybucie typ_tytulu i podziałem tabeli Tytul ma tę samą czasochłonność, jeśli pominie się czasochłonność obsługi indeksu. W przeciwnym wypadku czasochłonność obsługi indeksu powoduje, że podział tabeli Tytul jest najlepszy. Najgorszy przypadek to odczyt sekwencyjny bez indeksu i podziału tabeli. Zofia Kruczkiewicz, I-6, p325 C3 13 Internetowe bazy danych, Wykład 5