Bazy danych Wykład zerowy P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2012
Patron? Św. Izydor z Sewilli (VI wiek), biskup, patron Internetu (sic!), stworzył pierwszy katalog Copyright c 2011-12 P. F. Góra 0 2
Baza danych Baza danych: Duża kolekcja danych, odpowiednio zorganizowana w celu szybkiego przeszukiwania i dostępu do informacji, uzyskiwanego przy pomocy komputera. Baza danych ma być modelem pewnego fragmentu rzeczywistości, adekwatnym do zapotrzebowań. Copyright c 2011-12 P. F. Góra 0 3
Bardzo ważna uwaga! Baza danych jest modelem rzeczywistości ma odpowiadać potrzebom użytkownika, nie wyobrażeniom projektanta Złamanie tej zasady to typowy (i bolesny) bład popełniany przy projektowaniu baz danych. Prjektowanie baz danych jest praca, za która należy się wynagrodzenie. Copyright c 2011-12 P. F. Góra 0 4
Architektura klient-serwer sytemy wielodostępne, heterogeniczne najbardziej kosztowna operacja: przesyłanie danych wiele operacji wykonywanych po stronie serwera struktura bazy (schemat) i więzy umieszczone bezpośrednio w bazie, nie w aplikacji Copyright c 2011-12 P. F. Góra 0 5
Bazy danych i informatycy użytkownicy projektanci/programiści aplikacji bazodanowych projektanci/programiści baz danych, administratorzy baz danych projektanci/programiści DBMS (systemów bazodanowych) Widza tylko front end Błędnie nazywanych bazami danych Copyright c 2011-12 P. F. Góra 0 6
Plan wykładu 1. Relacyjny model baz danych algebra relacji; zależności funkcyjne; więzy; normalizacja baz danych; projektowanie baz danych 2. Operacje na bazach danych i podstawy języka SQL 3. Transakcje; klucze obce; procedury składowane; kursory 4. Wybrane zagadnienia implementacyjne 5. Indeksy 6. Optymalizacja zapytań Copyright c 2011-12 P. F. Góra 0 7
Relacyjny model baz danych Tylko jedna struktura danych: tabela (ang. relation, relacja). Kolumny atrybuty, wiersze krotki. Tabela jest zbiorem krotek. Zbiór: kolejność krotek nie ma znaczenia. Krotki sa uporzadkowane. Model relacyjny: najbardziej popularny, ale ma problemy z reprezentowaniem złożonych metadanych. Model obiektowo-relacyjny: stosowany w niektórych zastosowaniach specjalnych, ale w systemach komercyjnych króluje model relacyjny. Copyright c 2011-12 P. F. Góra 0 8
Copyright c 2011-12 P. F. Góra 0 9
Uwaga na wielozbiory! Tabele (relacje) w modelu relacyjny powinny być zbiorami (krotki nie moga się powtarzać), ale niekiedy nie sa jeśli dopuszczamy powtórzenia krotek, czyli zbiory zastępujemy wielozbiorami, zmieniaja się definicje operacji mnogościowych. Suma R S krotka w wyniku występuje tyle razy, ile występuje w R plus tyle razy, ile występuje w S. Uwaga: jeśli nawet R i S sa zbiorami, R S może być wielozbiorem! Iloczyn R S krotka w wyniku występuje tyle razy, ile wynosi minimum jej wystapień w R i S. Różnica R S krotka w wyniku występuje tyle razy, ile występuje ona w R minus tyle razy, ile występuje ona w S, ale nie mniej niż 0 razy. Copyright c 2011-12 P. F. Góra 0 10
Przykład R = {A, B, B}, S = {A, B, C, C} R S = {A, A, B, B, B, C, C} R S = {A, B} R S = {C} Copyright c 2011-12 P. F. Góra 0 11
Dane a metadane Tabela (realcja) to obiekt abstrakcyjny. Ma swoje atrybuty i więzy. Zbiór wszystkich takich projektów tabel nazywa się schematem bazy danych. Schemat wraz z informacjami o użytkownikach i ich uprawnieniach stanowi metadane (dane o danych). Schemat tabeli w zasadzie w czasie normalnego użytkowania nie zmienia się w czasie. Zbiór wszystkich krotek danej tabeli ( zawartość tabeli ) może się zmieniać w czasie. Zbiór taki istniejacy w pewnej chwili czasu nazywa się instancja tabeli (relacji). Instancję istniejac a teraz nazywa się instancja bieżac a. Copyright c 2011-12 P. F. Góra 0 12
Dwanaście zasad Codda dla RDBMS Edgar Codd, IBM, 1970 RDBMS Relational DataBase Management System 1. Informacje sa reprezentowane logicznie w tabelach. 2. Dane sa logicznie dostępne przez podanie nazwy tabeli, wartości klucza głownego i nazwy kolumny. 3. Wartości null sa traktowane w jednolity sposób jako brakujace informacji. Nie moga być traktowane jako puste łańcuchy czy zera. 4. Metadane sa umieszczone w bazie danych tak, jak zwykłe dane. 5. Język obsługi danych ma możliwość definiowania danych i widoków, więzów integralności, przeprowadzania autoryzacji, obsługi transakcji i manipulacji danymi. Copyright c 2011-12 P. F. Góra 0 13
6. Widoki reaguja na zmiany swoich tabel bazowych. Zmiana w widoku powoduje zmianę w tabeli bazowej. 7. Istnieja pojedyncze operacje pozwalajace na wyszukanie, wstawienie, uaktualnienie i usunięcie danych. 8. Operacje użytkownika sa logicznie oddzielone od fizycznych danych i metod dostępu. 9. Operacje użytkownika pozwalaja na zmianę schematu bazy danych bez konieczności tworzenia bazy od nowa. 10. Więzy integralności sa umieszczone w metadanych, nie w zewnętrznej aplikacji. 11. Język manipulacji danymi powinien działać bez względu na to jak i gdzie sa rozmieszczone fizyczne dane oraz nie powinien wymagać zmian, gdy fizyczne dane sa centralizowane lub rozpraszane Copyright c 2011-12 P. F. Góra 0 14
12. Operacje na pojedynczych rekordach przeprowadzane w systemie podlegaja tym samym zasadom i więzom, co operacje na zbiorach danych. Copyright c 2011-12 P. F. Góra 0 15
Typy zwiazków pomiędzy danymi Zwiazek: Zbiór par uporzadkowanych, pozdbiór iloczynu kartezjańskiego zbiorów. Jeden do jednego Wiele do jednego Więz integralności referencyjnej (ang. referential integrity) Jeden do wielu Wiele do wielu Copyright c 2011-12 P. F. Góra 0 16
Zwiazek jeden do jednego A = {x 1, x 2, x 3, x 4 }, B = {y 1, y 2, y 3, y 4, y 5 } A B x 1 y 3 x 2 y 1 x 4 y 2 Elementy w żadnej kolumnie nie powtarzaja się. Nie wszystkie elementy musza wystapić. Ale gdyby element x 3 wystapił, musiałby się łaczyć z y 4 albo y 5. Copyright c 2011-12 P. F. Góra 0 17
Zwiazki jeden do wielu, wiele do jednego A B x 1 y 2 x 1 y 3 x 2 y 1 x 4 y 4 x 4 y 5 Zwiazek A B: jeden do wielu. Zwiazek B A: wiele do jednego. Więz integralności referencyjnej A B: Zwiazek typu wiele do jednego, w którym występuja wszystkie elementy zbioru A. Innymi słowy, każdy element A łaczy się z jednym i tylko jednym elementem B. Copyright c 2011-12 P. F. Góra 0 18
Zwiazek wiele do wielu A B x 1 y 2 x 1 y 3 x 2 y 1 x 2 y 2 x 2 y 5 x 3 y 1 x 4 y 2 x 4 y 5 Copyright c 2011-12 P. F. Góra 0 19