(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