Bazy danych - Politechnika Białostocka
Transkrypt
Bazy danych - Politechnika Białostocka
Plan wykładu Bazy danych • Diagramy E/R - powtórzenie • Relacyjne bazy danych • Od diagramów E/R do relacji Wykład 9: Przechodzenie od diagramów E/R do modelu relacyjnego. Definiowanie perspektyw. • SQL - perspektywy Małgorzata Krętowska Wydział Informatyki Politechnika Białostocka 2 Diagramy ER Podstawy modeli relacyjnych • Podstawowe elementy ERD – – – – • • • • Reprezentacja danych: dwuwymiarowa tabela, zwana relacją zbiory encji encje atrybuty związki Przykład: Atrybuty Liczności Klucze Podklasy Zbiory słabych encji Tytuł Żurek Kingsajz Seksmisja Rok 2003 1987 1985 Krotki Czas 95 100 110 Rodzaj Kolor Kolor Kolor 3 Podstawy modeli relacyjnych 4 Podstawy modeli relacyjnych • Schemat relacji - nazwa relacji oraz jej zbiór atrybutów Film (tytuł, rok, czas, rodzaj) • W modelu relacyjnym projekt składa się z jednego lub kilku schematów relacji. • Zbiór schematów relacji jest określany schematem relacyjnym bazy danych lub schematem bazy danych. • Dziedziny -pewien określony typ elementarny, powiązany z każdym atrybutem relacji • W modelu relacyjnym każda składowa każdej relacji musi mieć określony typ atomowy (elementarny) np. typ całkowity, znakowy. Wartość atrybutu nie może być ani rekordem, ani listą , ani zbiorem... • Krotki - wiersze relacji, poza wierszem nagłówka, zawierającym atrybuty relacji • W krotce każdy atrybut ma swój odpowiednik w postaci składowej krotki • Przykład: Film (tytuł, rok, czas, rodzaj) – Przykład: (Gwiezdne wojny, 1977, 124, kolor) • Jedna krotka nie może wystąpić w relacji więcej niż jeden raz. 5 6 Formalny zapis krotki Instancje Równoważne sposoby reprezentowania relacji • Krotka - funkcja przeprowadzająca atrybuty ze schematu relacji do ich zbiorów wartości - do składowych tych krotek: tytuł -> Żurek rok -> 2003 czas -> 95 rodzaj -> Kolor Schematy i krotki relacji są zbiorami, stąd porządek w jakim je przedstawimy nie ma znaczenia. Tytuł Żurek Kingsajz Seksmisja Rok 2003 1987 1985 Czas 95 100 110 Rodzaj Kolor Kolor Kolor (Żurek, 2003, 95, kolor) Rodzaj Tytuł Kolor Żurek Kolor Kingsajz Kolor Seksmisja (Kolor, Żurek, 2003, 95) Rok 2003 1987 1985 • Instancja relacji - zbiór krotek danej relacji • Instancja bieżąca - zbiór krotek, które są w relacji „teraz” Czas 95 100 110 7 8 Proces modelowania i implementacji bazy danych Od diagramów ERD do relacji • Zbiory encji przekształcamy w relację z takim samym zbiorem atrybutów System zarządzania relacyjną bazą danych Analiza informacji, które będą zawarte w bazie danych • Związki z diagramów encji przyjmują postać relacji. Relacja danego związku R ma następujące atrybuty: – dla każdego zbioru encji uczestniczącego w R umieszczamy w schemacie relacji odpowiadającej R klucze tych zbiorów jako atrybuty tej relacji – jeśli związek ma własny klucz, to też dołączamy jego atrybuty do zbioru atrybutów relacji Schemat bazy danych (Model relacyjny) Diagram E/R Uwaga: w przypadku powtarzania się nazw atrybutów należy zmienić ich nazwy 9 Związki wieloargumentowe Złożenie relacji Kontrakty Dopuszcza się możliwość złożenia dwóch relacji: relacji związanej z danym zbiorem encji E z relacją powstałą ze związku R wiele do jeden z E do innego zbioru encji. Filmy Aktorzy Studio aktora Studio producenta tytuł rok Filmy Studia czas Tabela kontrakty: – – – – 10 Klucz dla zbioru Filmy: tytuł, rok Klucz dla zbioru Aktorzy: nazwiskoAktora Klucz dla Studia producenta: studioProducenta Klucz dla Studia aktora: studioAktora rodzaj nazwa Posiada Studia adres Filmy(tytuł, rok, czas, rodzaj) Studia (nazwa, adres) Posiada (tytuł, rok, nazwa) 11 Filmy(tytuł, rok, czas, rodzaj, nazwaST) Studia (nazwa, adres) 12 Zbiory słabych encji Przykład • Relacja odpowiadająca słabemu zbiorowi encji E powinna zawierać wszystkie atrybuty, które wchodzą w skład klucza tego zbioru (tj. atrybuty ze zbioru słabego, jak też atrybuty z innych „wspomagających” zbiorów encji) oraz pozostałe atrybuty zbioru słabego. nazwisko wiek numer Piłkarze • Związki oznaczone podwójnym rombem nie tworzą oddzielnych relacji. nazwa Drużyny gra Piłkarze (numer, nazwisko,nazwaDrużyny, wiek) Drużyny (nazwaDrużyny) Gra (numer, nazwaDrużyny, nazwaDrużyny1) Gra jest częścią relacji Piłkarze Wskazują na jedną nazwę 13 14 Reprezentacja związków isa w modelu relacyjnym Przykład - podejście zorientowane obiektowo Trzy podejścia: do aktorów czas tytuł rok rodzaj Filmy • zorientowane obiektowo - każda krotka należy tylko do jednej klasy; tworzenie relacji dla każdej klasy biorąc pod uwagę wszystkie jej atrybuty dubbinguje isa • styl E/R - relacje są tworzone dla każdej podklasy; zawierają atrybuty kluczowe i te atrybuty, które sa powiązane z podklasą Kreskówki • • • • • • • Wykorzystując NULL - należy utworzyć tylko jedną relacje; encje przyjmują wartości NULL dla tych atrybutów, które nie wchodzą w skład danego zbioru encji broń isa Kryminały Filmy (czas, tytuł, rok, rodzaj) Kryminały (tytuł, rok, czas, rodzaj, broń) Kreskówki (tytuł, rok, czas, rodzaj) Kreskówki-Kryminały(tytuł, rok, czas, rodzaj, broń) Dubbinguje (nazwiskoAktora, tytuł, rok) Czy możemy łączyć relacje? 15 Przykład - styl E/R do aktorów czas tytuł rok 16 Przykład - wykorzystanie NULL rodzaj do aktorów czas tytuł Filmy rodzaj Filmy dubbinguje dubbinguje isa Kreskówki • • • • • rok isa broń isa Kryminały isa Kreskówki Filmy (czas, tytuł, rok, rodzaj) Kryminały (tytuł, rok, broń) Kreskówki (tytuł, rok) Dubbinguje (nazwiskoAktora, tytuł, rok) Czy potrzebna jest relacja Kreskówki? broń Kryminały • Film(tytuł, rok, długość, rodzaj, broń) – (Bolek i Lolek, 1985, 10, Kolor, NULL) • Dubbinguje (tytuł, rok, nazwiskoAktora) 17 18 Porównanie metod Tworzenie perspektyw • Zapytania: CREATE [ OR REPLACE] VIEW nazwa_perspektywy [(kolumna1, kolumna2, ...)] AS SELECT .... – Koszt zapytań związanych z wieloma relacjami jest duży, stąd podejście wykorzystujące NULL jest lepsze. – Podejscie zorientowane obiektowo jest lepsze dla zapytań typu „jaka broń jest wykorzystywana w kreskówkach trwających dłużej niż 150 minut” – Styl E/R jest lepszy dla zapytań typu „jakie filmy z roku 1999 trwały dłużej niż 150 minut” • Kolumna1 kolumna2 ... - to nazwy kolumn perspektywy, które muszą odpowiadać pozycjom z listy SELECT... • Jeżeli perspektywa o takiej nazwie już istnieje, a chcemy tylko zmienić treść jej zapytania, musimy wcześniej usunąć poprzednią perspektywę lub użyć opcji OR REPLACE; • w definicji perspektywy nie może wystąpić klauzula ORDER BY • Preferuje się schematy z możliwie małą liczbą relacji (E/R - 1 relacja na 1 zbiór encji; o-o - mając korzeń i n podklas otrzymujemy 2n klas) • Minimalizacja zajętości dysku: najlepsza metoda o-o; metoda NULL - w zależności od liczby elementów brakujących może być lepsza lub gorsza od metody E/R. 19 Przykład 20 Przykład • Utworzyć perspektywą D10EMP zawierającą niektóre dane o pracownikach zatrudnionych w departamencie 10. • Tworzenie perspektywy zawierającej funkcje grupowe i wybierającej dane z dwóch tabel: • CREATE VIEW D10PRACOWNIK AS select id_pracownika, nazwisko, pensja from pracownik where nr_departamentu=10; CREATE VIEW dept_summary (nazwa, minpensja, maxpensja, avgpensjal) as select nazwa, min(pensja), max(pensja), avg(pensja) from pracownik, departament where pracownik.nr_departamentu=departament.nr_departamentu group by nazwa; • Odwołanie się do perspektywy jest analogiczne jak odwołanie się do zwykłej tabeli: select * from d10 pracownik order by nazwisko; • nazwy kolumn w perspektywach można definiować również za pomocą aliasów w zapytaniu SELECT 21 Operacje DML na perspektywach Ograniczenie dostępu • Perspektywy mogą służyć nie tylko do wybierania wartości, ale również do ich modyfikacji • Aby ograniczyć użytkownikowi dostęp do jego danych pracowniczych i tylko w godzinach urzędowania firmy, można napisać: • opcja „WITH CHECK OPTION” - pozwala na modyfikację danych przez perspektywę ,ale tylko w ograniczonym zakresie. Można dodawać i modyfikować tylko takie wiersze, które następnie będą wybrane przez tą perspektywę. CREATE VIEW D10pracownik AS select id_pracownika, nazwisko, pensja from pracownik where nr_departamentu=10; 22 CREATE VIEW D10pracownik AS select id_pracownika, nazwisko, pensja from pracownik where nr_departamentu=10 with check option; 23 CREATE VIEW pracownik_szczegoly AS select id_pracownika, nazwisko, stanowisko, nr_departamentu from pracownik where nazwisko=USER and to_char(SYSDATE, ‘hh24’) between 9 and 17 and to_char(SYSDATE, ‘d’) between 2 and 6 with check option; 24 Ograniczenia operacji DML Usuwanie perspektywy • Operacja DELETE nie jest dozwolona, jeżeli perspektywa zawiera jedno z: – – – – – – DROP VIEW nazwa_perspektywy złączenie tabel funkcje grupowe klauzulę GROUP BY kwalifikator DISTINCT pseudokolumnę ROWNUM skorelowane podzapytanie • rozkaz ten powoduje usunięcie definicji perspektywy z bazy danych • nie narusza wierszy i kolumn bo są one trzymane w tabelach, na których perspektywa była oparta • pozostawienie innych perspektyw i aplikacji bazujących na usuniętej perspektywie powoduje błąd • perspektywa może być usunięta przez swojego właściciela lub administratora • Operacji UPDATE nie jest dozwolona, gdy: – nie jest dozwolona operacja DELETE – perspektywa zawiera kolumnę wyrażoną za pomocą wyrażenia (np. Sal*2) • Operacja INSERT nie jest dozwolona, gdy: – koluMna obowiązkowa („NOT NULL) nie jest wybierana przez perspektywę. 25 Perspektywy w zapytaniach Dla każdego departamentu podać nazwiska tych pracowników, którzy zarabiają mniej niż średnia wartość pensji w ich departamencie. • Tworzymy perspektywę: Create view avg_pensja as select nr_departamentu, avg(pensja) srednia from pracownik group by nr_departamentu; • Zapytanie główne: select nazwisko from pracownik, avg_pensja where pracownik.nr_departamentu=avg_pensja.nr_departamentu and pensja<srednia; 27 26