Technologie baz danych Wykład 4: Diagramy związków encji (ERD). SQL funkcje grupujące. Małgorzata Krętowska Wydział Informatyki Politechnika Białostocka
Plan wykładu Diagramy związków encji elementy ERD liczności związków podklasy klucze zbiory słabych encji SQL funkcje grupujące 2
Proces modelowania i implementacji bazy danych Analiza informacji, które będą zawarte w bazie danych System zarządzania relacyjną bazą danych Diagram E/R Schemat bazy danych (Model relacyjny) 3
Elementy ERD Diagram związków encji - Entity-Relationship Diagram E/R (ERD) Zbiory encji Encja - rozróżnialny obiekt Zbiór encji (typ encji) - zbiór podobnych encji Zbiór encji (typ encji) Wykładowca Krętowska Małgorzata Oniśko Agnieszka Sosnowski Zenon... Encje (Instancje danego typu encji) 4
Elementy ERD Atrybuty - informacje opisujące encję Imię Nazwisko PRACOWNIK Id 5
Elementy diagramu E/R Związki - powiązania pomiędzy dwiema lub większą liczbą encji (zbiorów encji) Encja1 Nazwa związku Encja2 6
Przykład Baza danych filmów tytuł rok nazwisko adres Występuje Aktorzy czas rodzaj Posiada nazwa Studia adres 7
Przykład Baza danych filmów tytuł rok nazwisko adres Występuje Aktorzy czas rodzaj Potop Żurek Kingsajz Kingsajz Seksmisja Aktorzy Daniel Olbrychski Katarzyna Figura Katarzyna Figura Jerzy Stuhr Jerzy Stuhr 8
Przykład Baza danych filmów tytuł rok nazwa Posiada Studia czas rodzaj adres Potop Żurek Kingsajz Seksmisja Studia Studio1 Studio2 Studio1 Studio3 9
Liczebność związków encji N:N 1:N 1:1 10
Liczebność związków encji N:N Występuje Aktorzy 1:N Posiada Studia 1:1 Studia Kieruje Prezesi 11
Związki wieloargumentowe Kontrakty Aktorzy Studia Reprezentacja w postaci trzech wartości: (studio, aktor, film) 12
Role w związkach Przykład Studio, które podpisało kontrakt z aktorem może podpisać kontrakt z innym studiem po to, by umożliwić aktorowi udział w filmie. Reprezentacja związku: (studio1, studio2, aktor, film) Kontrakty Aktorzy Studio producenta Studio aktora Studia Role studia: producent filmu właściciel aktora 13
Atrybuty związku Gdzie umieścić wynagrodzenie aktora? wynagrodzenie tytuł rok nazwisko adres Kontrakty Aktorzy czas rodzaj Studia nazwa adres 14
Przesunięcie atrybutu do zbioru encji wynagrodzenie Gaże tytuł rok nazwisko adres Kontrakty Aktorzy czas rodzaj Studia nazwa adres 15
Przekształcanie w związki binarne Związek kontrakty: (studio1, studio2, film, aktor) Kontrakty Aktorzy Studio producenta Studio aktora Studia stworzenie dodatkowego zbioru encji, którego elementy traktuje się tak samo jak krotki zbioru związków dla związku wieloargumentowego (łączący zbiór encji) stworzenie związków wiele do jeden ze zbioru łączącego do poszczególnych zbiorów encji wchodzących w skład pierwotnego związku wieloargumentowego 16
Podklasy w ERD Podklasa = specjalny przypadek = mniej encji = więcej własności Przykład: Kreskówki i kryminały to podklasy filmów do aktorów czas tytuł rok rodzaj dubbinguje isa isa broń Kreskówki Kryminały 17
Podklasy i dziedziczenie w ERD Zakładając, że C jest podklasą klasy D na diagramach E/R należy: wprowadzić pomiędzy zbiorami encji C i D specjalny typ związku isa ( an A is a B ) - wierzchołek trójkąta wskazuje klasę nadrzędną wszystkie atrybuty i związki, które odnoszą się wyłącznie do encji C są doczepione do prostokąta oznaczającego C atrybuty i związki, które opisują zarówno C jak i D są doczepione do prostokąta oznaczającego D. Dziedziczenie w ERD: encje można oglądać jako złożone ze składowych, które należą do różnych zbiorów encji, stanowiących części hierarchii isa składowe te są powiązane w całość związkiem isa encja ma te wszystkie atrybuty, które należą do którejkolwiek składowej oraz wchodzi we wszystkie związki, w które są włączone jej składowe 18
Klucze Klucze - atrybuty lub zbiory atrybutów, które jednoznacznie identyfikują encję wewnątrz zbioru encji. W zbiorze encji nie mogą występować dwie encje, które miałyby identyczne wartości atrybutów tworzących klucz. Atrybuty, które wchodzą w skład klucza na diagramach ER są podkreślone. W hierarchii isa, tylko zbiór encji z klasy nadrzędnej (korzeń drzewa) może zawierać klucz, który jednoznacznie identyfikuje encje również w podklasach. Każdy zbiór encji musi mieć zdefiniowany klucz. tytuł rok czas rodzaj 19
Zbiory słabych encji Zbiory słabych encji - zbiory encji, dla których niektóre lub wszystkie atrybuty klucza wybiera się z innego zbioru encji. Przykład: Mamy dwa zbiory encji: Piłkarze (nazwisko, wiek) oraz Drużyny (nazwa). Jak można zdefiniować klucz dla zbioru encji Piłkarze? nazwisko wiek numer nazwa Piłkarze gra Drużyny zbiór słabych encji - prostokąt o podwójnych krawędziach związki łączące ten zbiór z innymi to związki wiele do jeden - romby o podwójnych krawędziach 20
Wymagania dla zbiorów słabych encji Jeżeli E jest zbiorem słabych encji, wówczas zbiór encji F, który dostarcza atrybutów klucza do E, musi pozostawać z E w pewnym związku R oraz Związek R musi być binarny, typu wiele do jeden z E do F Atrybuty wchodzące w skład klucza E a pochodzące z F muszą być częścią klucza w F Jeżeli zbiór F jest zbiorem słabym, to kluczowe atrybuty z F przekazywane do E mogą pochodzić z pewnego innego zbioru encji, z którym F jest powiązany poprzez związek typu wiele do jednego. Uogólniając: jeżeli zbiór encji jest oznaczony podwójną ramką, to musi być słaby. Jego klucz składa się z tych jego własnych atrybutów, które są podkreślone oraz atrybutów klucza tych zbiorów encji, z którymi zbiór słaby jest połączony przez związki typu wiele do jeden, a które oznaczono podwójnymi krawędziami. 21
Funkcje grupowe Funkcje grupowe są przeznaczone do działania na grupach wierszy. Wynikiem działania funkcji grupowej jest pojedyncza wartość dla całej grupy, a nie jedną wartość dla każdego wiersza. Przykłady funkcji: AVG ([DISTINCT] wyrażenie) COUNT ([DISTINCT] wyrażenie) COUNT(*) MAX ([DISTINCT] wyrażenie) MIN ([DISTINCT] wyrażenie) STDDEV ([DISTINCT] wyrażenie) SUM ([DISTINCT] wyrażenie) VARIANCE ([DISTINCT] wyrażenie) Wszystkie funkcje grupowe, z wyjątkiem count(*) ignorują NULL. 22
Zapytania grupujące SELECT lista pól FROM tabele WHERE warunki przed grupowaniem GROUP BY pola grupujące HAVING warunki po grupowaniu 23
Zasady wykonania zapytania grupującego Rozważ wszystkie kombinacje wierszy tabel występujących w klauzuli FROM Do każdego wiersza zastosuj warunek WHERE Podziel wiersze na grupy Do każdej grupy zastosuj warunek w klauzuli HAVING Dla każdego wiersza reprezenującego grupę oblicz wartości wyrażeń po SELECT 24
Zapytania grupujące - ograniczenia Na liście wyboru polecenia SELECT używającego grupowania wolno umieszczać tylko te kolumny, które są przedmiotem działania klauzuli GROUP BY chyba, że występują one wewnątrz funkcji grupującej. Każda kolumna lub wyrażenie występujące na liście SELECT, nie objęte funkcją grupową, musi być przedmiotem grupowania klauzulą GROUP BY. 25