Technologie baz danych
Transkrypt
Technologie baz danych
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 • SQL - podstawy Małgorzata Krętowska Wydział Informatyki PB 2 Definicja zależności funkcyjnych Zależności funkcyjne Zależność funkcyjna: A→B A1A2...An → B Interpretacja: jeśli dwie krotki relacji R są zgodne dla atrybutów A1, A2, .., An (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. A B x – Odczyt zapisu: „A1, A2, ..., An określają funkcyjnie B” – Jeśli zbiór atrybutów A1, A2, ..., An określa funkcyjnie więcej niż jeden atrybut tzn. y A1A2...An → B1 A1A2...An → B2 A1A2...An → B3 To taki zbiór zależności skrótowo przedstawiamy jako: Jeśli x i y są zgodne dla atrybutów A A1A2...An → B1B2B3 3 To muszą być zgodne również dla atrybutów B 4 Klucze relacji Nadklucze • Atrybut lub zbiór atrybutów {A1, A2,..., An} tworzy klucz relacji, jeśli: • Nadklucz - zbiór atrybutów, który zawiera klucz • Każdy klucz jest nadkluczem – 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 A1, A2,..., An. – Nie istnieje taki podzbiór właściwy zbioru {A1, A2,..., An}, od którego pozostałe atrybuty relacji R są zależne funkcyjnie, tzn. klucz musi być minimalny – Przykłady nadkluczy w relacji Film: • (tytuł, rok, nazwisko Aktora, czas) • (tytuł, rok, nazwisko Aktora, rodzaj) 5 Reguły dotyczące zależności funkcyjnych 6 Zasady podziału i łączenia • 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. • Reguła podziału Zależność funkcyjną A1A2...An → B1B2 ... Bm możemy zastąpić zbiorem zależności funkcyjnych A1A2...An → Bi, gdzie i=1,2,...,m • Wyróżniamy następujące reguły: • Reguła łączenia – reguła łączenia – reguła podziału – reguła przechodniości Zbiór zależności funkcyjnych A1A2...An → Bi, gdzie i=1,2,...,m możemy zastąpić pojedynczą zależnością funkcyjną A1A2...An → B1B2 ... Bm 7 8 Zależności trywialne Domknięcie zbioru atrybutów • Założenia: • Zależność funkcyjna A1A2...An → B jest trywialna, jeśli B jest równe któremuś z A – {A1, A2, ..., An} - zbiór atrybutów – S - zbiór zależności funkcyjnych – tytuł rok → tytuł • Mówimy, że zależność A1A2...An → B1B2 ... Bm 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 • Domknięciem zbioru {A1, A2, ..., An} 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ść A1 A2... An → B, a zatem zależność A1 A2... An → B wynika z S. • 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) • Domknięcie zbioru atrybutów {A1, A2, ..., An} oznaczamy przez {A1, A2, ..., An}+. – Zależność funkcyjna A1A2...An → B1B2 ... Bm jest równoważna zależności A1A2...An → C1C2 ... CK, gdzie C są tymi elementami z B, które nie są równe A. 9 10 Algorytm obliczania domknięcia zbioru atrybutów {A1, A2, ..., An} Przykład • Niech X oznacza nazwę zbioru domknięcia. Na początku X= {A1, A2, ..., An}. • Znajdujemy wszystkie zależności funkcyjne postaci B1B2 ...Bm → C X+ gdzie B1B2 ...Bm należą do zbioru X, a C nie należy. Wówczas dołączamy C do zbioru X. Y B Nowy X+ • Powtarzamy krok 2 tak długo, jak długo nie będzie można dołączyć do X żadnego nowego atrybutu. • Jeśli już żadnego atrybutu nie można dołączyć do X, to znaczy, że otrzymaliśmy domknięcie zbioru {A1, A2, ..., An}+ 11 12 Cel Domknięcie i klucze • Mając dane domknięcie zbioru atrybutów {A1, A2, ..., An} możemy sprawdzić, czy dana zależność funkcyjna wynika ze zbioru zależności S. • Zbiór {A1, A2, ..., An}+ zawiera wszystkie atrybuty relacji R wtedy i tylko wtedy, gdy elementy A1, A2, ..., An są nadkluczem w R. • Stwierdzenie, czy atrybuty A1, A2, ..., An stanowią klucz relacji, może polegać na sprawdzeniu: – czy wszystkie atrybuty R należą do zbioru {A1, A2, ..., An}+ – czy X+ otrzymane z dowolnego X, który utworzymy przez usunięcie choćby jednego elementu spośród A1, A2, ..., An, nie zawiera wszystkich atrybutów R • Jeśli B należy do {A1, A2, ..., An}+ to oznacza, że A1A2...An → B wynika z S. • Przykład: – – – – Relacja Filmy(tytuł, rok, czas, rodzaj, nazwaStudia, adresStudia) Uzasadnić, że kluczem jest zbiór (tytuł, rok) tytuł rok → nazwaStudia nazwaStudia → adresStudia 13 Reguła przechodniości 14 Zapytania proste • Reguła przechodniości umożliwia kaskadowe łączenie zależności: SELECT [ALL | DISTINCT] wyrażenie [[AS] alias], ... FROM nazwa_tabeli, ... [WHERE warunek] [ORDER BY wyrażenie ASC|DESC], ...]; – jeśli w relacji R zachodzą zależności A1A2...An → B1B2 ... Bm oraz B1B2 ... Bm → C1C2...Ck , to w relacji R zachodzi także zależność A1A2...An → C1C2...Ck. – Uzasadnienienie powyższej reguły => wyliczenie domknięcia {A1, A2, ..., An}+. 15 16 Zapytania proste Zapytania proste [WHERE warunek] SELECT [ALL | DISTINCT] wyrażenie [[AS] alias], ... FROM nazwa_tabeli, ... Operatory logiczne: =; <; >; >=; <= Operatory SQL: ALL- pokazuje wszystkie wiersze (domyślny) DISTINCT - eliminuje powtarzające się wiersze 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 wyrażenie - nazwa kolumny lub wyrażenie zawierające nazwy kolumn, zamiast wyrażenia może wystąpić znak '*’ oznaczający wszystkie kolumny Operator negacji: 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 Złączenia tabel SELECT [ALL | DISTINCT] wyrażenie [[AS] alias], ... FROM tabela_1, tabela_2, ..., tabela_n WHERE warunki_łączące_tabele minimalna liczba łączących warunków = liczba tabel -1 19 NOT (NOT nazwa_kolumny = ...; NOT BETWEEN; NOT IN; NOT LIKE; IS NOT NULL) Kryteria złożone: AND (i) OR (lub) 18