(Microsoft PowerPoint - W2_bd_ns_student [tryb zgodno\234ci])
Transkrypt
(Microsoft PowerPoint - W2_bd_ns_student [tryb zgodno\234ci])
Plan wykładu • • • • Bazy danych Wykład 2: Relacyjny model danych zależności funkcyjne. Podstawy SQL. Deficja zależności funkcyjnych Klucze relacji Reguły dotyczące zależności funkcyjnych Domknięcie zbioru atrybutów • Podstawy SQL Małgorzata Krętowska Wydział Informatyki Politechnika Białostocka 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 Jeśli x i y są zgodne dla atrybutów A To taki zbiór zależności skrótowo przedstawiamy jako: A1A2...An → B1B2B3 3 To muszą być zgodne również dla atrybutów B 4 Przykład Klucze relacji Relacja Film Tytuł Żurek Rok Czas Rodzaj nazwaStudia nazwiskoAktora 2003 81 Kolor Studio1 Katarzyna Figura Kingsajz 1987 104 Kolor Studio1 Jerzy Stuhr Kingsajz 1987 104 Kolor Studio1 Katarzyna Figura Seksmisja 1984 117 Kolor Studio2 Jerzy Stuhr • Atrybut lub zbiór atrybutów {A1, A2,..., An} 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 były 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 Jakie zależności funkcyjne wyróżniamy w relacji Film? tytuł rok → czas tytuł rok → rodzaj tytuł rok → nazwaStudia tytuł rok → czas rodzaj nazwaStudia 5 Przykład 6 Nadklucze Tytuł Żurek Rok Czas Rodzaj nazwaStudia nazwiskoAktora 2003 81 Kolor Studio1 Katarzyna Figura Kingsajz 1987 104 Kolor Studio1 Jerzy Stuhr Kingsajz 1987 104 Kolor Studio1 Katarzyna Figura Seksmisja 1984 117 Kolor Studio2 Jerzy Stuhr • 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) • Co jest kluczem relacji? • Klucz: (tytuł, rok, nazwiskoAktora) • Czy mogą istnieć dwie różne krotki zgodne dla powyższych atrybutów? • Czy klucz jest minimalny? 7 8 Reguły dotyczące zależności funkcyjnych 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 9 Zależności trywialne 10 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. 11 12 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}+ 13 14 Przykład Cel Atrybuty: A, B, C, D, E, F Zależności: AB →C, BC →AD, D → E, CF →B • Wyznaczyć: {A,B}+. Kolejne kroki wyznaczania domknięcia: 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. Jeśli B należy do {A1, A2, ..., An}+ to oznacza, że A1A2...An → B X={A, B} X={A, B, C} X={A,B,C,D} X={A,B,C,D,E} wynika z S. stąd {A,B}+={A,B,C,D,E} 15 16 Domknięcie i klucze Reguła przechodniości 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: Reguła przechodniości umożliwia kaskadowe łączenie zależności: 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. 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 Uzasadnienienie powyższej reguły => wyliczenie domknięcia {A1, A2, ..., An}+. Przykład: Relacja Filmy(tytuł, rok, czas, rodzaj, nazwaStudia, adresStudia) Uzasadnić, że kluczem jest zbiór (tytuł, rok) tytuł rok → nazwaStudia nazwaStudia → adresStudia 17 18 Baza ćwiczeniowa Zapytania proste SELECT [ALL | DISTINCT] wyrażenie [[AS] alias], ... FROM nazwa_tabeli, ... [WHERE warunek] [ORDER BY wyrażenie ASC|DESC], ...]; 19 20 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), NOT (NOT nazwa_kolumny = ...; NOT BETWEEN; NOT IN; NOT LIKE; IS NOT NULL) Kryteria złożone: AND (i) OR (lub) 21 22 Złączenia tabel Przykład Wypisać nazwiska i nazwy departamentów pracowników. SELECT nazwisko, nazwa, p.nr_departamentu as nr_z_pr, d.nr_departamentu as nr_z_dep FROM pracownik p, departament d; SELECT [ALL | DISTINCT] wyrażenie [[AS] alias], ... FROM tabela_1, tabela_2, ..., tabela_n WHERE warunki_łączące_tabele NAZWISKO NAZWA NR_Z_PR NR_Z_DEP ------------- --------------- ---------- ---------- minimalna liczba łączących warunków = liczba tabel -1 23 Nazwisko1 Departament 1 1 1 Nazwisko2 Departament 1 1 1 Nazwisko3 Departament 1 2 1 Nazwisko4 Departament 1 2 1 Nazwisko5 Departament 1 3 1 Nazwisko6 Departament 1 3 1 Nazwisko7 Departament 1 3 1 24 Przykład Przykład Wypisać nazwiska i nazwy departamentów pracowników. SELECT nazwisko, nazwa, p.nr_departamentu as nr_z_pr, d.nr_departamentu as nr_z_dep FROM pracownik p, departament d; NAZWISKO NAZWA NR_Z_DEP SELECT nazwisko, nazwa, p.nr_departamentu as nr_z_pr, d.nr_departamentu as nr_z_dep FROM pracownik p, departament d WHERE p.nr_departamentu=d.nr_departamentu; Wypisać poziomy płac poszczególnych pracowników wraz z ich zarobkami SELECT nazwisko, pensja, nr_przedzialu FROM pracownik, poziom_zarobkow WHERE pensja between dolna_granica and gorna_granica; NR_Z_PR NAZWISKO ------------- --------------- ---------- ---------- NAZWA NR_Z_PR NR_Z_DEP ------------- --------------- ---------- ---------- Nazwisko1 Departament 1 1 1 Nazwisko1 Departament 1 1 1 Nazwisko2 Departament 1 1 1 Nazwisko9 Departament 1 1 1 Nazwisko3 Departament 1 2 1 Nazwisko8 Departament 1 1 1 Nazwisko4 Departament 1 2 1 Nazwisko14 Departament 1 1 1 Nazwisko5 Departament 1 3 1 Nazwisko2 Departament 1 1 1 Nazwisko6 Departament 1 3 1 Nazwisko13 Departament 2 2 2 Nazwisko7 Departament 1 3 1 Nazwisko4 Departament 2 2 2 Nazwisko3 Departament 2 2 2 Nazwisko11 Departament 2 2 2 25 Wynik działania zapytania: Tabela poziom_zarobkow: NAZWISKO PENSJA NR_PRZEDZIALU ------------- ---------- ------------Nazwisko2 900 1 Nazwisko1 1000 1 Nazwisko14 1000 1 Nazwisko8 1200 1 Nazwisko9 1400 2 Nazwisko3 1500 3 Nazwisko4 2000 3 Nazwisko13 2000 3 Nazwisko5 3000 4 Nazwisko7 3500 5 Nazwisko11 3500 5 NR_PRZEDZIALU DOLNA_GRANICA GORNA_GRANICA ------------- ------------- ------------1 700 1200 2 1201 1400 3 1401 2000 4 2001 3000 5 3001 9999 26