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