Plan wykładu Bazy danych Wykład 4: Relacyjny model danych - zalenoci funkcyjne. SQL - podzapytania Definicja zalenoci funkcyjnych Klucze relacji Reguły dotyczce zalenoci funkcyjnych Domknicie zbioru atrybutów SQL - podzapytania Małgorzata Krtowska Katedra Oprogramowania e-mail: mmac@ii.pb.bialystok.pl Bazy danych (studia zaoczne) 2 Definicja zalenoci funkcyjnych Zalenoci funkcyjne Zaleno funkcyjna: B Interpretacja: jeli dwie krotki relacji R s zgodne dla atrybutów,,.., A n (tzn. obie krotki maj takie same wartoci składowych dla wymienionych atrybutów), to musz by równie zgodne w pewnym innym atrybucie B. Odczyt zapisu:,,..., A n okrelaj funkcyjnie B Jeli zbiór atrybutów,,..., A n okrela funkcyjnie wicej ni jeden atrybut tzn. B 1 B 2 B 3 To taki zbiór zalenoci skrótowo przedstawiamy jako: B 1 B 2 B 3 Bazy danych (studia zaoczne) 3 x y A Jeli x i y s zgodne dla atrybutów A A B B To musz by zgodne równie dla atrybutów B Bazy danych (studia zaoczne) 4
Klucze relacji Atrybut lub zbiór atrybutów {,,..., A n } tworzy klucz relacji, jeli: wszystkie pozostałe atrybuty relacji s funkcyjnie zalene od tych atrybutów => nie moe by sytuacji, w której dwie róne krotki relacji R zgodne dla wszystkich atrybutów,,..., A n. Nie istnieje taki podzbiór właciwy zbioru {,,..., A n }, od którego pozostałe atrybuty relacji R s zalene funkcyjnie, tzn. klucz musi by minimalny Nadklucze Nadklucz - zbiór atrybutów, który zawiera klucz Kady klucz jest nadkluczem Klucze w diagramach E/R nie spełniaj wymagania (2) Bazy danych (studia zaoczne) 5 Bazy danych (studia zaoczne) 6 Reguły wykrywania kluczy w relacji Reguła 1 Jeli relacja pochodzi z przekształcenia zbioru encji, to jej kluczem s atrybuty kluczowe tego zbioru encji Reguła 2 (dotyczy zwizków binarnych) Jeli zwizek jest typu wiele do wiele, to klucze obu zbiorów encji objtych zwizkiem tworz zbiór atrybutów klucza R jeli zwizek ze zbioru encji E1 do zbioru encji E2 jest typu wiele do jeden, to atrybuty klucza E1 staj si kluczem R, ale atrybuty klucza E2 nie wchodz do klucza relacji R. Jeli zwizek jest typu jeden do jeden, to atrybuty klucza któregokolwiek ze zbiorów mog by kluczem R. W tej sytuacji nie ma tylko jednego klucza. Klucze relacyjne i E/R Klucze w ERD s atrybutami encji Klucze w relacjach s atrybutami krotek Zazwyczaj, jedna krotka odpowiada jednej encji, wówczas idea jest taka sama W niewłaciwie skonstruowanych relacjach, jedna encja moe by opisana przez kilka krotek, wówczas klucze w diagramach E/R i relacjach bd si róniły. Bazy danych (studia zaoczne) 7 Bazy danych (studia zaoczne) 8
Reguły dotyczce zalenoci funkcyjnych Zasady podziału i łczenia Zasady, które pozwalaj na zastpowanie zbioru zalenoci funkcyjnych zbiorami równowanymi lub na dołczanie do zbioru tych zalenoci, które wynikaj ze zbioru pocztkowego. Reguła podziału Zaleno funkcyjn B 1 B 2... B m moemy zastpi zbiorem zalenoci funkcyjnych B i, gdzie i=1,2,...,m Wyróniamy nastpujce reguły: reguła łczenia reguła podziału reguła przechodnioci Reguła łczenia Zbiór zalenoci funkcyjnych B i, gdzie i=1,2,...,m moemy zastpi pojedyncz zalenoci funkcyjn B 1 B 2... B m Bazy danych (studia zaoczne) 9 Bazy danych (studia zaoczne) 10 Zalenoci trywialne Domknicie zbioru atrybutów Zaleno funkcyjna B jest trywialna, jeli B jest równe któremu z A tytuł rok tytuł Mówimy, e zaleno B 1 B 2... B m jest: trywialna - jeli zbiór złoony z atrybutów typu B jest podzbiorem zbioru atrybutów typu A nietrywialna - jeli co najmniej jeden z atrybutów typu B znajduje si poród atrybutów A całkowicie nietrywialna - jeli aden z atrybutów typu B nie znajduje si poród atrybutów typu A Atrybuty, które wystpuj równoczenie z prawej i lewej strony zawsze mona pomin po prawej tronie, std prawdziwe jest twierdzenie (reguła zalenoci trywialnych) Zaleno funkcyjna B 1 B 2... B m jest równowana zalenoci C 1 C 2... C K, gdzie C s tymi elementami z B, które nie s równe A. Bazy danych (studia zaoczne) 11 Załoenia: {,,..., A n } - zbiór atrybutów S - zbiór zalenoci funkcyjnych Domkniciem zbioru {,,..., A n } nad zbiorem zalenoci S nazywamy taki zbiór atrybutów B, e jeli pewna relacja R spełnia wszystkie zalenoci ze zbioru S, to spełnia take zaleno... A n B, a zatem zaleno... A n B wynika z S. Domknicie zbioru atrybutów {,,..., A n } oznaczamy przez {,,..., A n } +. Bazy danych (studia zaoczne) 12
Algorytm obliczania domknicia zbioru atrybutów {,,..., A n } Przykład Niech X oznacza nazw zbioru domknicia. Na pocztku X= {,,..., A n }. Znajdujemy tez wszystkie zalenoci funkcyjne postaci B 1 B 2...B m C gdzie B 1 B 2...B m nale do zbioru X, a C nie naley. Wówczas dołczamy C do zbioru X. X + Y B Nowy X + Powtarzamy krok 2 tak długo, jak długo nie bdzie mona dołczy do X adnego nowego atrybutu. Jeli ju adnego atrybutu nie mona dołczy do X, to znaczy, e otrzymalimy domknicie zbioru {,,..., A n } + Bazy danych (studia zaoczne) 13 Bazy danych (studia zaoczne) 14 Cel Domknicie i klucze Majc dane domknicie zbioru atrybutów {,,..., A n } moemy sprawdzi, czy dana zaleno funkcyjna wynika ze zbioru zalenoci S. Jeli B naley do {,,..., A n } + to oznacza, e wynika z S. B Zbiór {,,..., A n } + zawiera wszystkie atrybuty relacji R wtedy i tylko wtedy, gdy elementy,,..., A n s nadkluczem w R. Stwierdzenie, czy atrybuty,,..., A n stanowi klucz relacji, moe polega na sprawdzeniu: czy wszystkie atrybuty R nale do zbioru {,,..., A n } + czy X + otrzymane z dowolnego X, który utworzymy przez usunicie choby jednego elementu sporód,,..., A n, nie zawiera wszystkich atrybutów R Przykład: Relacja Filmy(tytuł, rok, czas, rodzaj, nazwastudia, adresstudia) Uzasadni, e kluczem jest zbiór (tytuł, rok) tytuł rok nazwastudia nazwastudia adresstudia Bazy danych (studia zaoczne) 15 Bazy danych (studia zaoczne) 16
Reguła przechodnioci SQL Reguła przechodnioci umoliwia kaskadowe łczenie zalenoci: jeli w relacji R zachodz zalenoci B 1 B 2... B m oraz B 1 B 2... B m C 1 C 2...C k, to w relacji R zachodzi take zaleno C 1 C 2...C k. Złczenia tabel Podzapytania Podzapytania skorelowane Opearator EXISTS Uzasadnienienie powyszej reguły => wyliczenie domknicia {,,..., A n } +. Bazy danych (studia zaoczne) 17 Bazy danych (studia zaoczne) 18 Powtórzenie z grupowania danych Powizanie tabeli samej ze sob Czy ponisze zapytania s poprawne: select job, max(sal) from emp; Powizanie tabeli samej ze sob jest moliwe dziki zastosowaniu aliasu tabeli. Warunek łczenia odbywa si w taki sposób, jakby to były dwie oddzielne tabele: FROM tabela alias1 tabela alias2 select dname, avg (sal) from emp, dept where dept.deptno=emp.deptno group by dname, dept.deptno select deptno, job, avg(sal) where min(sal)>1000 group by deptno, job; Bazy danych (studia zaoczne) 19 Bazy danych (studia zaoczne) 20
Podzapytania Podzapytanie - polecenie SELECT zagniedone w innym poleceniu SELECT. Umoliwia konstruowanie zapytania odwołujcego si do wartoci wybranych przez inne polecenie SELECT. Przykład: SELECT kolumna1, kolumna2,... FROM tabela WHERE kolumna = (SELECT kolumna FROM tabela WHERE warunek) Uwagi WHERE (kolumna1, kolumna 2...) = (SELECT kol1, kol2...) kolumny w bloku zewntrznym powinny by ujte w nawiasy i oddzielone przecinkami powinna by zgodno co do liczby i typu kolumn wybieranych w bloku wewntrznym i kolumn bloku zewntrznego porównywanych z nimi Bazy danych (studia zaoczne) 21 Bazy danych (studia zaoczne) 22 Podzapytania skorelowane uwagi Kady wiersz proponowany przez zapytanie główne przechodzi prób warunku wyraonego za pomoc zapytania skorelowanego, w którym wystpuje odwołanie do wartoci kolumn tego wiersza. Operatory ANY i ALL Opearatory ANY i ALL mona stosowa w podzapytaniach zwracajcych wicej ni jeden wiersz. Wykorzystuje si je w klauzulach WHERE I HAVING łcznie z operatorami porównywania (=;!=; <; >; <=; >=) Wykonanie SELECT z podzapytaniem skorelowanym: pobranie wiersza przez zewntrzne zapytanie wykonanie wewntrzngo zapytania na podstawie wartoci z pobranego w pkt 1. Wiersza zaakceptowanie bd odrzucenie wiersza na podstawie wyniku zapytania z pkt 2. Powtórzenie akcji opisanych wyej, a do wyczerpania wszystkich wierszy proponowanych przez zapytanie zewntrzne. Bazy danych (studia zaoczne) 23 Operator ANY powoduje akceptacj (spełnienie warunku) po stwierdzeniu zgodnoci wyraenia z którkolwiek z wartoci zwracanych przez podzapytanie Operator ALL słuy do porównania z wszystkimi wartociami zwracanymi przez podzapytanie Przed operatorami ANY i ALL mona stosowa zaprzeczenie - NOT Bazy danych (studia zaoczne) 24
Podzapytania w klauzuli HAVING Wybra te departamenty, których rednie zarobki przekraczaj redni zarobek departamentu 30. Select deptno, avg(sal) from emp group by deptno having avg(sal) >(select avg(sal) from emp where deptno=30); Znale stanowisko pracy, na którym s najwysze rednie zarobki. Select job, avg(sal) from emp group by job having avg(sal) =(select max(avg(sal)) from emp group by job); Bazy danych (studia zaoczne) 25