Krzysztof Dembczyński Instytut Informatyki Zakład Inteligentnych Systemów Wspomagania Decyzji Politechnika Poznańska Technologie Wytwarzania Oprogramowania Semestr zimowy 2004/05
Plan wykładu Ewolucja systemów baz danych Projektowanie baz danych i ochrona danych Optymalizacja i struktury danych Systemy OLAP I Systemy OLAP II Modelowanie wielowymiarowe Proces ekstrakcji, transformacji i ładowania danych (Proces ETL)
Plan wykładu 1 Relacyjne systemy baz danych 2 Model relacyjny Dziedziny i relacje Integralność danych relacyjnych Algebra relacyjna Język SQL
Plan wykładu 1 Relacyjne systemy baz danych 2 Model relacyjny Dziedziny i relacje Integralność danych relacyjnych Algebra relacyjna Język SQL
Plan wykładu 1 Relacyjne systemy baz danych 2 Model relacyjny Dziedziny i relacje Integralność danych relacyjnych Algebra relacyjna Język SQL
Relacyjne systemy baz danych Relacyjna baza danych to taka baza, która jest postrzegana przez użytkowników jako zbiór relacji badź tabel. Wszystkie wartości w relacjach sa atomowe, czyli skalarne (nie ma grup wielokrotnych). System relacyjny jest to taki system, który wspiera relacyjne bazy danych i umożliwia wykonywanie operacji na takich bazach. Podstawowe operacje to selekcja, projekcja i łaczenie. Wszystkie operacje działaja na poziomie zbiorów.
Relacyjne systemy baz danych Własność domknięcia systemów relacyjnych oznacza, że rezultat każdej operacji jest obiektem tego samego typu jak dane wejściowe (oba sa relacjami), co oznacza, że można tworzyć zagnieżdżone wyrażenia relacyjne. Formalna teoria będaca podstawa systemów relacyjnych nazywa się relacyjnym modelem danych.
Relacyjne systemy baz danych Model relacyjny dotyczy wyłacznie zagadnień logicznych, a nie fizycznych. Model obejmuje trzy aspekty danych strukturę danych (inaczej obiekty), integralność danych i operowanie danymi (operatory). Obiekty sa to w zasadzie tabele (relacje). Klucze główne i obce wiaż a się z aspektem integralności. Operatorami sa m.in. selekcja, projekcja i łaczenie.
Relacyjne systemy baz danych Optymalizator jest to ta część systemu, która określa, jak zrealizować zapytanie użytkownika (które dotycza tego co, a nie jak ). Ponieważ systemy odpowiadaja same za poruszanie się po zapamiętanej bazie danych w celu lokalizacji określonych danych, systemy takie czasem nazywane sa z automatyczna nawigacja. Optymalizacja i automatyczna nawigacja sa wstępymi warunkami uzyskania niezależności danych w systemie relacyjnym.
Relacyjne systemy baz danych Katalog jest zbiorem tabel systemowych, zawierajacych deskryptory różnych elementów istotnych dla systemu (tabel bazowych, perspektyw, indeksów, użytkowników). Użytkownicy moga przeszukiwać katalog dokładnie tak samo jak własne dane.
Relacyjne systemy baz danych Tabela pochodna jest to tabela, która jest utworzona z innych tabel za pomoca pewnego wyrażenia relacyjnego. Tabela bazowa, to taka tabela, która nie jest tabela pochodna. Perspektywa jest to nazwana tabela pochodna, której definicja wyrażona za pomoca innych tabel jest przechowywana w katalogu. Użytkownicy moga przeprowadzać operacje podobnie jak na tabelach bazowych. System realizuje operacje na perspektywach przez zastapienie odwołań do nazwy perspektywy wyrażeniami definiujacymi tę perspektywę (jest to tzw. metoda podstawiania).
Relacyjne systemy baz danych Standardowym językiem działania na bazach relacyjnych jest SQL. Język SQL dostarcza mechanizm definiowania bazy danych (język DDL) operawania danych (język DML) oraz kontroli danych (DCL)
Architektura ANSI/SPARC Ważne! W systemach relacyjnych warstwa zewnętrzna i pojęciowa zbudowane sa zgodnie z podejściem relacyjnym.
Relacyjne systemy baz danych Przykład relacji Pracownicy ID Nazwisko Etat Szef Płaca Zespół 100 Lech Dyrektor NULL 4000 10 101 Czech Profesor 100 3500 20 102 Rus Adiunkt 101 3000 20 103 Popiel Adiunkt 101 3000 20 104 Kołodziej Asystent 101 2000 20 105 Rzepicha Asystent 102 2000 20 107 Rajski Adiunkt 100 3500 20 108 Lubicz Asystent 107 2500 20
Relacyjne systemy baz danych Przykład relacji Zespoły Zespół Nazwa Adres 10 Gospodarka elektroniczna Piotrowo 3a 20 Inteligencja biznesowa Piotrowo 3a 30 Sieci komputerowe Wieniawskiego 17/19
Plan wykładu 1 Relacyjne systemy baz danych 2 Model relacyjny Dziedziny i relacje Integralność danych relacyjnych Algebra relacyjna Język SQL
Plan wykładu 1 Relacyjne systemy baz danych 2 Model relacyjny Dziedziny i relacje Integralność danych relacyjnych Algebra relacyjna Język SQL
Dziedziny i relacje Relacja w dużym uproszczeniu odpowiada zwykłej tabeli. Krotka (tuple) jest to wiersz w takiej tabeli, atrybut zaś odpowiada kolumnie. Liczba krotek w tabeli to liczebność tabeli, liczba atrybutów to stopień tabeli. Klucz główny (primaty key), jest to jednoznaczny identyfikator w tabeli; jest to kolumna (lub kombinacja kolumn) taka, że żadne dwa wiersze w tabeli, w dowolnej chwili, nie maja tej samej wartości w tej kolumnie (lub kombinacji kolumn). Dziedzina jest to zbiór dopuszczalnych wartości, z których pochodza konkretne wartości określonych atrybutów danych relacji.
Dziedzina Dziedzina jest to zasadniczo typ danych (niekiedy definiowany przez system, a bardziej ogólnie przez użytkownika). Dziedzina określa zbiór wartości skalarnych, z których biora się wartości poszczególnych atrybutów w relacjach. Dziedziny ograniczaja porównania, ponieważ porównywane wielkości zwykle musza pochodzić z tej samej dziedziny. W rezultacje dziedziny ograniczaja pewne operacje relacyjne, takie jak złaczenie, sumę i inne. Ważne! Określenie dziedziny jest najprostszym mechanizmem sprawdzania integralności danych (np. przy porównywaniu wartości różnych atrybutów), jednak jest to element najsłabiej wspierany przez istniejace relecyjne systemy baz danych.
Relacja Podstawowa struktura danych w modelu relacyjnym jest relacja. Z matematycznego punktu widzenia relacja jest podzbiorem iloczynu kartezjańskiego dziedzin atrybutów. Relacja reprezentowana jest w postaci dwuwymiarowej tablicy. Relacja składa się z krotek i atrybutów.
Definicja relacji Zmienna relacji jest to nazwany obiekt, którego wartość zmienia się w czasie. Wartość takiej zmiennej w danej chwili jest wartościa relacji.
Definicja relacji Definicja Relacja R na zbiorze niekoniecznie różnych dziedzin D 1, D 2,..., D n składa się z dwóch części: nagłówka i treści: Nagłówek składa się z ustalonego zbioru atrybutów, a ściślej z par < nazwa atrybutu : nazwa dziedziny >, {< A 1 : D 1 >, < A 2 : D 2 >,..., < An : Dn >},
Definicja relacji Definicja Relacja R na zbiorze niekoniecznie różnych dziedzin D 1, D 2,..., D n składa się z dwóch części: nagłówka i treści: Treść składa się z krotek (tuples); każda krotka jest zbiorem par <nazwa-atrybutu:wartość-atrybutu >, {< A 1 : v i1 >, < A 2 : v i2 >,..., < An : v in >} (i = 1, 2,..., m, gdzie m jest liczba krotek w zbiorze; w każdej takiej krotce jest jedna taka para < A j : v ij > typu <nazwa-atrybutu:wartość-atrybutu > dla każdego atrybutu A j w nagłówku. Dla każdej danej pary < A j : v ij >, v ij jest wartościa z konkretnej dziedziny D j stowarzyszonej z atrybutem A j.
Właściwości relacji Każda relacja charakteryzuje się: wszystkie krotki sa różne (nie ma podwójnych krotek, duplikatów), jej atrybuty sa różne, kolejność krotek i atrybutów nie ma znaczenia, wartości atrybutów sa atomowe.
Rodzaje relacji Relacja nazwana jest zmienna relacji, która została stworzona za pomoca instrukcji CREATE TABLE, CREATE VIEW, itp.. Relacja podstawowa jest relacja nazwana, która nie jest relacja pochodna (relacje podstawowe sa autonomiczne). W praktyce relacjami podstawowymi sa te relacje, które zostały uznane przez projektanta bazy danych za wystarczajaco ważne, aby mogły mieć swoja nazwę i niezależny byt w bazie danych.
Rodzaje relacji Relacja pochodna to taka relacja, która jest zdefiniowana (za pomoca pewnych wyrażeń relacyjnych) poprzez inne relacje nazwane a w końcu przez relacja podstawowe. Relacja wyprowadzona jest relacja, która można otrzymać ze zbioru nazwanych relacji za pomoca jakiegoś wyrażenia relacyjnego. Zbiór wszystkich relacji wyprowadzonych składa się ze zbioru wszystkich relacji podstawowych i wszystkich relacji pochodnych.
Rodzaje relacji Perspektywa (view) jest nazwana relacja pochodna. (Perspektywy sa, podobnie jak relacje podstawowe, w istocie zmiennymi relacji). Perspektywy sa wirtualne. W systemie sa reprezentowane wyłacznie przez definicję za pomoca innych nazwanych relacji. Migawka (snapshot), podobnie jak perspektywa, jest także nazwana relacja pochodna (i też jest zmienna relacji). W odróżnieniu migawka jest rzeczywista, a nie wirtualna. Reprezentowana jest nie tylko za pomoca definicji opartej na innych relacjach nazwanych, ale ma też własne dane. Tworzenie migawki jest podobne do realizacji zapytania z wyjatkiem tego, że wynik zapytania jest przechowywany w bazie danych pod określona nazwa jako relacja tylko do odczytu oraz okresowo migawka jest odświeżana.
Rodzaje relacji Wynik zapytania jest to nienazwana relacja pochodna, jaka powstaje w rezultacie wykonania określonego zapytania. Wyniki zapytań nie maja trwałego bytu w bazie (oczywiście można je umieścić w nazwanej relacji). Wynik pośredni jest nienazwana relacja pochodna, która wynika z realizacji jakiegoś wyrażenia relacyjnego zagnieżdżonego w innym takim wyrażeniu. Wyniki pośrednie podobnie jak wyniki końcowe, nie maja trwałego bytu w bazie danych (w istocie moga nawet nigdy nie materializować się w całości). Relacja zachowana jest relacja wyprowadzana, która ma jakieś bezpośrednie i wydajne odbicie w pamięci fizycznej.
Relacje i predykaty Z każda relacja zwiazane jest znaczenie lub predykat. Predykat stanowi kryterium akceptowalności aktualizacji danej relacji. W każdej chwili dana relacja zawiera tylko te krotki, które sprawiaja, że wartościa odpowiedniego predykatu będzie prawda.
Plan wykładu 1 Relacyjne systemy baz danych 2 Model relacyjny Dziedziny i relacje Integralność danych relacyjnych Algebra relacyjna Język SQL
Reguły integralności Każda reguła integralności musi być uzależniona od konkretnej bazy danych. Przykłady reguł integralności: Pensja musi być większa od 0, Nazwisko musi być znane, Etaty musza pochodzić z listy dostępnych wartości, itd.
Reguły integralności Model relacyjny oprócz obsługi reguł integralności zależnych od bazy obejmuje trzy ogólne cechy integralności: klucze kandydujace (i główne), klucze obce, dziedziny integralność atrybutu, mówi, że każdy atrybut musi spełniać następujacy warunek: wartości atrybutu sa pobierane z odpowiedniej dziedziny.
Klucz kandydujacy Definicja Niech R będzie relacja (zmienna relacji). Klucz kandydujacy w relacji R jest podzbiorem K zbioru atrybutów relacji R, majacym (takim, że w każdej chwili zachodza): własność jednoznaczności żadne dwie różne krotki R (z aktualnej wartości R) nie maja tej samej wartości dla K, własność nieredukowalności żaden właściwy podzbiór K nie ma własności jednoznaczności.
Klucze kandydujace Klucze kandydujace sa tak ważne, ponieważ zapewniaja podstawowy mechanizm adresowania na poziomie krotki w systemie relacyjnym. Oznacza to, że jedynym zagwarantowanym przez system sposobem dotarcia do określonej krotki jest droga przez wartość jakiegoś klucza kandydujacego.
Klucze głowne i alternatywe Relacja podstawowa może mieć więcej niż jeden klucz kandydujacy. Model relacyjny wymagał aby jeden z nich zostal wybrany kluczem glównym (primary key). Pozostałe nazywane sa kluczami alternatywnymi.
Klucze obce Definicja Niech R2 będzie relacja podstawowa (bazowa). Klucz obcy relacji R2 jest to podzbiór FK, zbioru atrybutów R2, taki że: istnieje relacja podstawowa R1 (relacje R1 i R2 niekoniecznie sa różne) z kluczem kandydujacym CK oraz w każdej chwili każda wartość FK w aktualnej wartości relacji R2 jest taka sama, jak wartość CK w pewnej krotce aktualnej wartości relacji R1.
Klucze obce Wartość klucza obcego stanowi referencję do krotki zawierajacej wartość odpowiadajacego mu klucza kandydujacego (krotki docelowej). Problem zapewnienia, by baza danych nie zawierała żadnych niedopuszczalnych wartości klucza obcego, nazywa się problemem integralności referencyjnej (referential integrity). Warunek, aby wartości danego klucza obcego zgadzały sie z wartościami odpowiadajacego mu klucza kandydujacego jest znany jako więzy referencyjne (referential constraints).
Klucze proste i złożone Klucze proste składaja się z jednego atrybutu. Klucze złożone składaja się z dwóch i więcej atrybutów.
Reguły kluczy obcych Reguły kluczy obcych dotycza dwóch operacji: usuwania i aktualizacji. Każda z tych reguł pozwala specyfikować opcje RESTRICTED oraz CASCADE.
Integralność encji Definicja Integralność encji żaden składnik klucza głównego relacji podstawowej nie może akceptować nulli.
Plan wykładu 1 Relacyjne systemy baz danych 2 Model relacyjny Dziedziny i relacje Integralność danych relacyjnych Algebra relacyjna Język SQL
Operatory relacyjne Selekcja (restrykcja) Projekcja (rzut) Iloczyn kartezjański Suma Przecięcie Różnica Łaczenie Iloraz
Selekcja Selekcja (czasami nazywana restrykcja) daje w wyniku relację składajac a się ze wszystkich krotek ze wskazanej relacji, które spełniaja określone warunki.
Projekcja Projekcja (rzut) daje w wyniku relację złożona z tych wszystkich krotek, która pozostały jako krotki danej realcji po usunięciu z niej wskazanych atrybutów.
Iloczyn kartezjański Iloczyn kartezjański daje relację składajac a się ze wszystkich krotek, będacych kombinacja dwóch krotek, po jednej z każdej wskazanej relacji.
Suma Suma daje w wyniku relację składajac a się ze wszystkich krotek, występujacych w jednej lub obu wskazanych relacjach.
Przecięcie Przecięcie daje w rezultacie relację składajac a się ze wszystkich krotek, występujacych w obu wskazanych relacjach.
Różnica Różnica daje w wyniku relację składajac a się ze wszystkich krotek, występujacych w pierwszej relacji i nie występujacych w drugiej wskazanej relacji.
Łaczenie Łaczenie daje w wyniku relację składajac a się ze wszystkich możliwych krotek, które sa kombinacjami dwu krotek, po jednej z każdej ze wskazanych relacji, takich że dwie krotki dajace wkład do którejkolwiek kombinacji maja tę sama wartość wspólnego atrybutu (lub atrybutów) tych dwu relacji.
Iloraz Iloraz bierze dwie relacje, jedna binarna, a druga unarna i daje w wyniku relację składajac a się ze wszystkich wartości jednego atrybutu relacji binarnej, które zgadzaja się (pod względem wartości tego drugiego atrybutu) ze wszystkimi wartościami relacji unarnej. Przykład: podaj klientów, którzy kupuja wyposażenie b2 i b3.
Domknięcie Wynik dowolnej operacji jest obiektem tego samego rodzaju co wejście (wszystkie sa relacjami), zatem wynik dowolnej operacji może stanowić wejście innej. Powyższa własność nazywana jest domknięciem.
Operatory elementarne Operatory elementarne sa to takie operatory, których nie można zdefiniować za pomoca innych. Takimi operatorami sa: selekcja, projekcja, iloczny kartezjański, suma, różnica.
Operacja dodatkoweo Można zdefiniować wiele operatorów relacyjnych Operatory: EXTEND i SUMMARIZE
Operacje aktualizacji Podstawowe operacje aktualizacji to: INSERT, UPDATE, DELETE. Operacje te działaja również na poziomie zbiorów.
Rachunek relacyjny Rachunek relacyjny jest alternatywny do algebry relacyjnej. Rachunek jest opisowy, algebra zaś przepisowa, w tym sensie, że daje przepisy jak postępować. Na głębszym poziomie jest to to samo, ponieważ dowolne wyrażenia z rachunku można przekształcić w równoważne znaczeniowo wyrażenie w algebrze i na odwrót. Powyższa własność jest jednym z elementów optymalizacji w relacyjnych systemach baz danych.
Plan wykładu 1 Relacyjne systemy baz danych 2 Model relacyjny Dziedziny i relacje Integralność danych relacyjnych Algebra relacyjna Język SQL
Historia języka SQL Jęzek SQL został opracowany w firmie IBM w latach 70 tych. W 1986 stał się oficjalnym standardem wspieranym przez ISO i ANSI (standard został opisany na 100 stronach). Kolejny standard SQL89 (120 stron). SQL92 (około 600 stron) aka SQL92. SQL99 (około 2200 stron) aka SQL99. SQL4 (?!:)
Historia języka SQL SQL92 trzy poziomy zgodności: Entry, Intermediate, Fully. Istniejace implementacja sa czymś w rodzaju nadzbioru podzbioru specyfikacji SQL a. SQL99 odmienne podejście: zdefiniowanie Core SQL99 i pakietów.
Tworzenie nowej relacji Postać instrukcji CREATE TABLE zespoly ( id_zesp INT(2) NOT NULL, nazwa VARCHAR(20) NOT NULL, adres VARCHAR(40), CONSTRAINT id_zesp_pk PRIMARY KEY (id_zesp) );
Tworzenie nowej relacji Postać instrukcji CREATE TABLE pracownicy ( id_prac INT(3) NOT NULL, nazwisko VARCHAR(20) NOT NULL, etat VARCHAR(10), szef INT(3), placa INT(5), id_zesp INT(2), CONSTRAINT id_prac_pk PRIMARY KEY (id_prac), CONSTRAINT szef_fk FOREIGN KEY (szef) REFERENCES pracownicy (id_prac), CONSTRAINT id_zesp_fk FOREIGN KEY (id_zesp) REFERENCES zespoly (id_zesp), CHECK (placa >= 0) );
Wstawianie nowych krotek Postać instrukcji INSERT INTO zespoly VALUES (10, Gospodarka elektroniczna, Piotrowo 3a ), (20, Inteligencja biznesowa, Piotrowo 3a ), (30, Sieci komputerowe, Wieniawskiego 17/19 );
Wstawianie nowych krotek Postać instrukcji INSERT INTO pracownicy VALUES (100, Lech, Dyrektor, NULL, 4000, 10), (101, Czech, Profesor, 100, 3500, 20), (102, Rus, Adiunkt, 101, 3000, 20), (103, Popiel, Adiunkt, 101, 3000, 20), (104, Kołodziej, Asystent, 101, 2000, 20), (105, Rzepicha, Asystent, 102, 2000, 20), (107, Rajski, Adiunkt, 100, 3500, 20), (108, Lubicz, Asystent, 107, 2500, 20) );
Modyfikacja relacji Postać instrukcji RENAME TABLE pracownicy TO pracownik; DROP TABLE pracownik; ALTER TABLE pracownicy ADD (tytul varchar(10)); ALTER TABLE pracownicy MODIFY tytul VARCHAR(10) DEFAULT mgr inz. NOT NULL; ALTER TABLE pracownicy DROP Tytul;
Tworzenie perspektywy Postać instrukcji niestety nieobsługiwane przez MySQL CREATE VIEW szefowie AS SELECT * FROM pracownicy WHERE id_prac in (SELECT DISTINCT szef FROM pracownicy);
Operowanie danymi Postać instrukcji SELECT nazwisko FROM pracownicy; SELECT id_zesp, nazwisko from pracownicy; SELECT * FROM pracownicy; SELECT DISTINCT adres FROM zespoly;
Operowanie danymi Postać instrukcji SELECT nazwisko, zarabia, placa FROM pracownicy; SELECT nazwisko, placa/30 FROM pracownicy; SELECT nazwisko, round(placa/30) FROM pracownicy; SELECT nazwisko, 3*placa AS placa_kwartalna FROM pracownicy; SELECT nazwisko jest etat FROM pracownicy; SELECT CONCAT(nazwisko, jest,etat) FROM pracownicy;
Operowanie danymi Postać instrukcji SELECT nazwisko FROM pracownicy WHERE etat = Asystent ; WHERE szef IS NULL; WHERE szef IS NOT NULL OR placa BETWEEN 3000 AND 4000; WHERE placa IN(3500, 2000) AND nazwisko LIKE L% ;
Operowanie danymi Postać instrukcji SELECT nazwisko FROM pracownicy WHERE etat = Asystent ORDER BY nazwisko DESC; SELECT nazwisko FROM pracownicy WHERE etat = Asystent ORDER BY 1 ASC;
Operowanie danymi Postać instrukcji SELECT etat, max(placa) FROM pracownicy GROUP BY etat; SELECT etat, max(placa) FROM pracownicy GROUP BY etat HAVING count(*)>2;
Łaczenie relacji Postać instrukcji SELECT nazwisko, nazwa FROM pracownicy, zespoly; Co jest wynikiem takiej operacji?
Łaczenie relacji Postać instrukcji SELECT nazwisko, nazwa FROM pracownicy, zespoly WHERE pracownicy.id_zesp = zespoly.id_zesp; SELECT nazwisko, nazwa FROM pracownicy p RIGHT JOIN zespoly z ON (p.id_zesp = z.id_zesp);
Operacje teoriomnogościowe Postać instrukcji SELECT nazwisko FROM pracownicy WHERE etat = Asystent UNION SELECT nazwisko FROM pracownicy WHERE etat = Adiunkt ;
Aktualizacja relacji Postać instrukcji UPDATE pracownicy SET placa = 5000 WHERE etat = Dyrektor ; DELETE FROM pracownicy WHERE etat = Asystent ;
Podzapytania nieskorelowane Postać instrukcji SELECT * FROM pracownicy WHERE id_prac in (SELECT DISTINCT szef FROM pracownicy); Operatory: IN, ALL, ANY
Podzapytania skorelowane Postać instrukcji SELECT nazwisko, placa FROM pracownicy p WHERE placa > (SELECT avg(placa) FROM pracownicy WHERE etat = p.etat; Operatory: EXISTS i NOT EXISTS
Zadania Wyświetl wszystkie etaty pracowników bez duplikatów Wyświetl wszystkie informacje o pracownikach z zespołu 20 uporzadkowanych według nazwisk Wyświetl nazwiska etaty, których nazwiska zaczynaja się na R Wyświetl roczne wynagrodzenie każdego z pracowników Wyświetl średnie wynagrodzenie wszystkich pracowników Wyświetl pracowników z ul. Piotrowo w rosnacym porzadku alfabetycznym
Zadania Wyświetl zespoły, które nie zatrudniaja pracowników Wyświetl pracowników zarabiajacych więcej niż RUS Wyświetl informacje w następujacym formacie: Pracownik RUS pracuje na etacie Adiunk Wyświetl pracowników i ich szefów Wyświetl dla każdego zespołu jego nazwę, adres oraz średnia płacę jego pracowników
Plan wykładu Ewolucja systemów baz danych Projektowanie baz danych i ochrona danych Optymalizacja i struktury danych Systemy OLAP I Systemy OLAP II Modelowanie wielowymiarowe Proces ekstrakcji, transformacji i ładowania danych (Proces ETL)