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