Plan wykładu Technologie baz danych Wykład 2: Relacyjny model danych - zależności funkcyjne. SQL - podstawy Definicja zależności funkcyjnych Reguły dotyczące zależności funkcyjnych Domknięcie zbioru atrybutów Klucze relacji Małgorzata Krętowska Wydział Informatyki PB SQL - podstawy 2 Definicja zależności funkcyjnych Zależności funkcyjne Zależność funkcyjna: A 1 A 2...A n B Interpretacja: jeśli dwie krotki relacji R są zgodne dla atrybutów A 1, A 2,.., A n (tzn. obie krotki mają takie same wartości składowych dla wymienionych atrybutów), to muszą być również zgodne w pewnym innym atrybucie B. Odczyt zapisu: A 1, A 2,..., A n określają funkcyjnie B Jeśli zbiór atrybutów A 1, A 2,..., A n określa funkcyjnie więcej niż jeden atrybut tzn. A 1 A 2...A n B 1 A 1 A 2...A n B 2 A 1 A 2...A n B 3 To taki zbiór zależności skrótowo przedstawiamy jako: A 1 A 2...A n B 1 B 2 B 3 x y A Jeśli x i y są zgodne dla atrybutów A A B B To muszą być zgodne również dla atrybutów B 3 4
Klucze relacji Atrybut lub zbiór atrybutów {A 1, A 2,..., A n } tworzy klucz relacji, jeśli: wszystkie pozostałe atrybuty relacji są funkcyjnie zależne od tych atrybutów => nie może być sytuacji, w której dwie różne krotki relacji R zgodne dla wszystkich atrybutów A 1, A 2,..., A n. Nie istnieje taki podzbiór właściwy zbioru {A 1, A 2,..., A n }, od którego pozostałe atrybuty relacji R są zależne funkcyjnie, tzn. klucz musi być minimalny Nadklucze Nadklucz - zbiór atrybutów, który zawiera klucz Każdy klucz jest nadkluczem Przykłady nadkluczy w relacji Film: (tytuł, rok, nazwisko Aktora, czas) (tytuł, rok, nazwisko Aktora, rodzaj) 5 6 Reguły dotyczące zależności funkcyjnych Zasady, które pozwalają na zastępowanie zbioru zależności funkcyjnych zbiorami równoważnymi lub na dołączanie do zbioru tych zależności, które wynikają ze zbioru początkowego. Zasady podziału i łączenia Reguła podziału Zależność funkcyjną A 1 A 2...A n B 1 B 2... B m możemy zastąpić zbiorem zależności funkcyjnych A 1 A 2...A n B i, gdzie i=1,2,...,m Wyróżniamy następujące reguły: reguła łączenia reguła podziału reguła przechodniości Reguła łączenia Zbiór zależności funkcyjnych A 1 A 2...A n B i, gdzie i=1,2,...,m możemy zastąpić pojedynczą zależnością funkcyjną A 1 A 2...A n B 1 B 2... B m 7 8
Zależności trywialne Zależność funkcyjna A 1 A 2...A n B jest trywialna, jeśli B jest równe któremuś z A tytuł rok tytuł Mówimy, że zależność A 1 A 2...A n B 1 B 2... B m jest: trywialna - jeśli zbiór złożony z atrybutów typu B jest podzbiorem zbioru atrybutów typu A nietrywialna - jeśli co najmniej jeden z atrybutów typu B znajduje się pośród atrybutów A całkowicie nietrywialna - jeśli żaden z atrybutów typu B nie znajduje się pośród atrybutów typu A Atrybuty, które występują równocześnie z prawej i lewej strony zawsze można pominąć po prawej tronie, stąd prawdziwe jest twierdzenie (reguła zależności trywialnych) Zależność funkcyjna A 1 A 2...A n B 1 B 2... B m jest równoważna zależności A 1 A 2...A n C 1 C 2... C K, gdzie C są tymi elementami z B, które nie są równe A. 9 Domknięcie zbioru atrybutów Założenia: {A 1, A 2,..., A n } - zbiór atrybutów S - zbiór zależności funkcyjnych Domknięciem zbioru {A 1, A 2,..., A n } nad zbiorem zależności S nazywamy taki zbiór atrybutów B, że jeśli pewna relacja R spełnia wszystkie zależności ze zbioru S, to spełnia także zależność A 1 A 2... A n B, a zatem zależność A 1 A 2... A n B wynika z S. Domknięcie zbioru atrybutów {A 1, A 2,..., A n } oznaczamy przez {A 1, A 2,..., A n } +. 10 Algorytm obliczania domknięcia zbioru atrybutów {A 1, A 2,..., A n } Niech X oznacza nazwę zbioru domknięcia. Na początku X= {A 1, A 2,..., A n }. Przykład Znajdujemy wszystkie zależności funkcyjne postaci B 1 B 2...B m C gdzie B 1 B 2...B m należą do zbioru X, a C nie należy. Wówczas dołączamy C do zbioru X. Powtarzamy krok 2 tak długo, jak długo nie będzie można dołączyć do X żadnego nowego atrybutu. X + Y B Nowy X + Jeśli już żadnego atrybutu nie można dołączyć do X, to znaczy, że otrzymaliśmy domknięcie zbioru {A 1, A 2,..., A n } + 11 12
Cel Mając dane domknięcie zbioru atrybutów {A 1, A 2,..., A n } możemy sprawdzić, czy dana zależność funkcyjna wynika ze zbioru zależności S. Jeśli B należy do {A 1, A 2,..., A n } + to oznacza, że wynika z S. A 1 A 2...A n B Domknięcie i klucze Zbiór {A 1, A 2,..., A n } + zawiera wszystkie atrybuty relacji R wtedy i tylko wtedy, gdy elementy A 1, A 2,..., A n są nadkluczem w R. Stwierdzenie, czy atrybuty A 1, A 2,..., A n stanowią klucz relacji, może polegać na sprawdzeniu: czy wszystkie atrybuty R należą do zbioru {A 1, A 2,..., A n } + czy X + otrzymane z dowolnego X, który utworzymy przez usunięcie choćby jednego elementu spośród A 1, A 2,..., 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 13 14 Reguła przechodniości Zapytania proste Reguła przechodniości umożliwia kaskadowe łączenie zależności: jeśli w relacji R zachodzą zależności A 1 A 2...A n B 1 B 2... B m oraz B 1 B 2... B m C 1 C 2...C k, to w relacji R zachodzi także zależność A 1 A 2...A n C 1 C 2...C k. 1 2 n 1 2 k Uzasadnienienie powyższej reguły => wyliczenie domknięcia {A 1, A 2,..., A n } +. FROM nazwa_tabeli,... [WHERE warunek] [ORDER BY wyrażenie ASC DESC],...]; 15 16
Zapytania proste FROM nazwa_tabeli,... ALL- pokazuje wszystkie wiersze (domyślny) DISTINCT - eliminuje powtarzające się wiersze wyrażenie - nazwa kolumny lub wyrażenie zawierające nazwy kolumn, zamiast wyrażenia może wystąpić znak '* oznaczający wszystkie kolumny alias - nazwa nadana wyrażeniu na liście SELECT, może mieć postać identyfikatora prostego (napis złożony z liter, cyfr i znaków podkreślenia) lub złożonego (dowolny napis ograniczony podwójnymi cudzysłowami, np. zawierający spacje), 17 Operatory logiczne: =; <; >; >=; <= Operatory SQL: Zapytania proste [WHERE warunek] BETWEEN... AND... - między dwiema wartościami (włącznie z nimi) IN (lista) - zgodnie z jednym elementów listy LIKE - zgodnie z zadanym wzorcem (interpretacja znaków typu "wildcard": % zastępuje ciąg znaków, _ zastępuje jeden znak) IS NULL - jest wartością NULL Operator negacji: NOT (NOT nazwa_kolumny =...; NOT BETWEEN; NOT IN; NOT LIKE; IS NOT NULL) Kryteria złożone: AND (i) OR (lub) 18 Złączenia tabel FROM tabela_1, tabela_2,..., tabela_n WHERE warunki_łączące_tabele minimalna liczba łączących warunków = liczba tabel -1 19