Bazy danych

advertisement
Bazy danych
2.Relacyjny model baz danych
Algebra relacji
P. F. Góra
http://th-www.if.uj.edu.pl/zfs/gora/
semestr letni 2007/08
Relacyjne systemy baz danych
…zdominowały rynek. Systemy nierelacyjne
mają status eksperymentalny, lub stosowane
są w bardzo specjalistycznych kontekstach.
Dlatego zdecydowana większość tego, o czym
będziemy mówić, dotyczyć będzie systemów
relacyjnych.
Bazy danych - wykład 2
2
Tylko jeden sposób reprezentowania danych:
dwuwymiarowa tabela
(Ullman i Widom nazywają ją „relacją”)
Nazwa tabeli
Krotka
TOsoba
ImięNazwisko
Ignacy Janowski
Karol Janowski
Ludwik Janowski
Patrycja Janowska
…
DataUr
17.03.1936
23.11.1957
03.02.1983
07.01.2005
…
Składowa krotki
Bazy danych - wykład 2
Płeć
M
M
M
K
…
Nazwy
kolumn
(atrybuty)
3
Intuicja, jaką niesie słowo
„tabela”, może być myląca:
Tyle teoria.
W praktyce różnie to bywa, RDBMS niekiedy
dopuszcza powtarzające się krotki.
Wówczas tabela nie jest zbiorem, ale
wielozbiorem.
W modelu relacyjnym „tabela” nie
jest listą, ale zbiorem
•W jednej tabeli nie mogą wystąpić dwie
takie same krotki
•Kolejność, w jakiej występują krotki, nie
ma znaczenia
Bazy danych - wykład 2
4
Trochę terminologii:
Więzy
• Klucze
• Więzy jednoznaczności
• Więzy integralności referencyjnej
• Więzy domenowe (zakresu)
• Więzy ogólne
Bazy danych - wykład 2
5
Nie jest to ścisła
definicja klucza —
definicję ścisłą poznamy
w przyszłości.
Klucze
Klucz — atrybut lub zbiór atrybutów, który
jednoznacznie definiuje krotkę w tabeli lub encję
wewnątrz zbioru encji.
W danej tabeli nie występują dwie krotki, które
miałyby identyczne wartości wszystkich atrybutów
tworzących klucz.
A jeśli występują i są różne, to znaczy, że „klucz” nie jest kluczem.
Uwaga: abstrakcyjny obiekt w pamięci komputera nie musi mieć
klucza, bo jest jednoznacznie identyfikowany przez adres
przydzielonego mu obszaru pamięci.
Bazy danych - wykład 2
6
Gdybyśmy próbowali utworzyć w
jednej klasie dwa różne obiekty o
takich samych kluczach, DBMS
powinien to uniemożliwić.
Bazy danych - wykład 2
7
Właściwy dobór kluczy jest trudny, bo
muszą one dobrze odpowiadać
rzeczywistości
Osoba: Imię,
Imię iDrugie
Nazwisko?
Imię iNazwisko
Imię,
Nazwisko?i Data Urodzenia?
Ściśle rzecz biorąc, PESEL
W
bazie
odpowiedno duży zbiór ludzi nie
Nie
wystarczy.
nie
służyreprezentującej
tylko jako
indeks, ale to jest
wystarczy.
zupełnie inna historia…
Czasami wprowadza się nowe pole tylko po to, aby mogło
służyć jako indeks
Studenci:
„Rządowa” baza danych:
Numer Indeksu
PESEL
Bazy danych - wykład 2
8
Inny przykład — faktury
Firma ma bazę gromadzącą dane o wystawianych fakturach.
Co będzie kluczem?
•Numer Faktury.
•Jeśli numeracja zaczyna się od początku w każdym roku,
Numer Faktury i Rok.
•Jeśli poszczególne działy stosują własną numerację faktur,
Numer Faktury i Nazwa Działu lub
Numer Faktury, Nazwa Działu i Rok.
Jak widać, właściwy dobór klucza zależy od rzeczywistości,
którą chcemy przedstawić w bazie danych.
Bazy danych - wykład 2
9
Ważna uwaga:
Przypuśćmy, że mamy „rządową” bazę
danych osobowych, w której kluczem jest
atrybut PESEL.
Wówczas zbiór atrybutów {PESEL, Nazwisko}
także jest kluczem!
Bazy danych - wykład 2
10
Podobnie, jeśli tworzymy bazę danych szkół
podstawowych, zbiór atrybutów {Ulica,
NrDomu, NrSzkoły} będzie kluczem. Załóżmy, że
tak jest. Jeśli rozszerzymy ten zbiór do {Miasto,
Ulica, NrDomu, NrSzkoły}, także otrzymamy
klucz. Podobnie będzie jeśli dodamy informację o
województwie.
W rzeczywistości trzebaby
to sprawdzić…
Bazy danych - wykład 2
11
Klucze minimalne. Nadklucze.
W poprzednim przykładzie może się zdarzyć, że w dwu różnych
miastach będą istnieć ulice Kościuszki i w dodatku na każdej z
tych ulic pod numerem 1 będzie mieścić się szkoła podstawowa.
Podobnie w dwu miastach na ulicy Dąbrowskiego (ale w
budynkach o różnych numerach!) mogą się mieścić szkoły
podstawowe o numerze 16.
Wreszcie może się zdarzyć, że szkoły o numerze 53 (w różnych
miastach) będą się mieścić w budynku o numerze 8 (przy ulicach
o różnych nazwach).
Zbiór {Ulica, NrDomu, NrSzkoły} nazywamy w tej
sytuacji kluczem minimalnym. Jego nadzbiór
nazywamy nadkluczem.
W innej terminologii „klucz
minimalny” zwany jest po
prostu „kluczem”
Bazy danych - wykład 2
12
Dygresja: Zbiory słabych encji
Jeśli niektóre (lub wszystkie) elementy klucza pewnego zbioru
encji wybiera się spośród atrybutów innego zbioru encji,
zbiór o tak utworzonym kluczu nazywa się zbiorem słabych
encji. Typowo
1. Przy strukturze hierarchicznej nazwa (czy inny atrybut)
obiektu może identyfikować go w podhierarchii, ale nie w
całej hierarchii. Na przykład Numer Szkoły identyfikuje szkołę
w mieście, ale nie w województwie. Zbiór encji szkoły będzie
musiał brać część swojego klucza z innego zbioru encji
(miasta), więc będzie to słaba encja.
2. Zbiór łączący, powstały w celu wyeliminowania relacji
wieloargumentowych, prawie zawsze będzie słaby.
Bazy danych - wykład 2
13
Reprezentacja graficzna zbiorów
słabych encji
Klucz zbioru Szkoły
numer
Szkoły
Zbiór słabych encji i
związki łączące go z
„dostarczycielami”
(części) klucza oznaczam
podwójną linią.
nazwa
Liczne inne atrybuty
Miasta
…
Miasto
Leży w mieście
Bazy danych - wykład 2
14
Dane a metadane
Tabela (realcja) to obiekt abstrakcyjny. Ma swoje
atrybuty i więzy. Zbiór wszystkich takich
„projektów” tabel nazywa się schematem bazy
danych. Schemat wraz z informacjami o
użytkownikach i ich uprawnieniach stanowi
metadane („dane o danych”). Schemat tabeli w
zasadzie — w czasie normalnego użytkowania —
nie zmienia się w czasie.
Zbiór wszystkich krotek danej tabeli („zawartość
tabeli”) może się zmieniać w czasie. Zbiór taki
nazywa się instancją tabeli (relacji). Instancję
istniejącą teraz nazywa się instancją bieżącą.
Bazy danych - wykład 2
15
Więzy jednoznaczności
A
R
B
Istnieje co najwyżej jeden obiekt z klasy B,
który wchodzi w relację R z pewnym
obiektem klasy A.
Ten obiekt z klasy B nie musi istnieć,
może być obiektem pustym. Innymi słowy,
nie wszystkie obiekty z A muszą wchodzić
w związek R.
Bazy danych - wykład 2
16
Więzy integralności referencyjnej
Na przykład każda
informacja o dostawie
towarów do magazynu
musi być powiązana z
dostawcą
A
R
B
Istnieje dokładnie jeden obiekt z klasy B,
który wchodzi w relację R z pewnym
obiektem klasy A.
Ten obiekt z klasy B musi istnieć, nie
może być obiektem pustym. Innymi słowy,
wszystkie obiekty z A muszą wchodzić w
związek R z obiektami B.
W książce oznaczają to
przez półokrąg.
Bazy danych - wykład 2
17
Więzy integralności referencyjnej wymuszają istnienie
wskazywanego obiektu. Jeślibyśmy więc zażądali usunięcia
obiektu związanego więzami integralności referencyjnej,
DBMS
1. Uniemożliwi usunięcie takiego obiektu lub
2. Usunie także wszystkie obiekty, które na obiekt usuwany
wskazują. Jeśli one też są związane więzami integralności
referencyjnej, usunięte zostaną obiekty, które na nie
wskazują. I tak dalej.
 Usuwanie kaskadowe.
Bardzo niebezpieczne — nie każdego stać na
zatrudnienie stu osób do wklepywania
utraconych danych.
Bazy danych - wykład 2
18
Inne rodzaje więzów
1. Więzy domenowe (zakresu) — atrybut może przyjąć
wartości tylko z pewnego zakresu.
2. Więzy ogólne — na przykład ograniczenie stopnia
związku, to jest ilości „partnerów” w relacji.
Filmy
Gwiazdy-w
10
Gwiazdy
Nie więcej niż 10
gwiazd w jednym filmie
Bazy danych - wykład 2
19
Dwanaście zasad Codda dla
RDBMS
1. Informacje są reprezentowane logicznie
w tabelach.
2. Dane są logicznie dostępne przez
podanie nazwy tabeli, wartości klucza
podstawowego i nazwy kolumny.
3. Wartości null są traktowane w jednolity
sposób jako „brakujące informacje”. Nie
mogą być traktowane jako puste
łańcuchy czy zera.
Bazy danych - wykład 2
20
Dwanaście zasad Codda dla
RDBMS (cd)
4. Metadane są umieszczone w bazie
danych tak, jak zwykłe dane.
5. Język obsługi danych ma możliwość
definiowania danych i perspektyw,
więzów integralności, przeprowadzania
autoryzacji, obsługi transakcji i
manipulacji danymi.
6. Perspektywy reagują na zmiany swoich
tabel bazowych. Zmiana w perspektywie
powoduje zmianę w tabeli bazowej.
Bazy danych - wykład 2
21
Dwanaście zasad Codda dla
RDBMS (cd)
W praktyce w systemach komercyjnych robi się to
bardzo rzadko. Z całą pewnością nie jest to
operacja, jaką rutynowo przeprowadza zwykły
użytkownik!
7. Istnieją pojedyncze operacje
pozwalające na wyszukanie, wstawienie,
uaktualnienie i usunięcie danych.
8. Operacje użytkownika są logicznie
oddzielone od fizycznych danych i
metod dostępu.
9. Operacje użytkownika pozwalają na
zmianę schematu bazy danych bez
konieczności tworzenia bazy od nowa.
Bazy danych - wykład 2
22
Dwanaście zasad Codda dla
RDBMS (cd)
10. Więzy integralności są umieszczone w
metadanych, nie w zewnętrznej
aplikacji.
11. Język manipulacji danymi powinien
działać bez względu na to jak i gdzie są
rozmieszczone fizyczne dane oraz nie
powinien wymagać zmian, gdy fizyczne
dane są centralizowane lub
rozpraszane.
Bazy danych - wykład 2
23
Dwanaście zasad Codda dla
RDBMS (cd)
12. Operacje na pojedynczych rekordach
przeprowadzane w systemie podlegają
tym samym zasadom i więzom, co
operacje na zbiorach danych.
Różnica wobec programowania
proceduralnego, gdzie zawsze
trzeba powiedzieć jak manipulować
danymi.
Bazy danych - wykład 2
24
Dziesiąta zasada Codda
Więzy integralności są umieszczone w
metadanych, nie w zewnętrznej aplikacji.
Bardzo ważna
zasada!
Jeśli modelowany fragment rzeczywistości
zawiera jakieś ograniczenia, powinny one się
znaleźć w samym projekcie bazy danych, nie
w aplikacji obsługującej tę bazę.
Bazy danych - wykład 2
25
Dlaczego ograniczenia umieszczamy w
metadanych, nie w aplikacji?
•Bo osoba pisząca aplikację może nie wiedzieć
o tych ograniczeniach, może nie uznać je za
istotne i może nie umieścić ich w swoim
projekcie.
•Bo osoba pisząca kolejną aplikację może nie
umieścić ich w swoim projekcie (z powodów jak
wyżej).
•Bo doświadczenie uczy, że jeśli ograniczenia
nie są wbudowane w projekt bazy, prędzej czy
później zdarzy się jakieś nieszczęście…
Bazy danych - wykład 2
26
Przykład
Dobrze zaprojektowana baza danych studentów i
grup ćwiczeniowych musi mieć wbudowane
ograniczenie stanowiące, że do jednej grupy
mającej zajęcia w pracowni komputerowej A, nie
można zapisać więcej niż 21 studentów.
Ostatnio na zajęcia zgłosiło się 40 osób, wszystkie
legalnie wpisane w systemie USOS
Bazy danych - wykład 2
27
Jak realizujemy więzy?
Zgodnie z pierwotną ideą Codda, więzy powinny być zawarte w
samej strukturze tabel — metadane same w sobie stanowią
część dokumentacji projektu bazodanowego.
Niekiedy robi się też tak: Baza danych nie udostępnia swoich
tabel zewnętrznym aplikacjom bezpośrednio, a jedynie za
pomocą procedur składowanych.
Złożone zapytania warto jest umieszczać w samej bazie danych,
na przykład w postaci perspektyw.
Bazy danych - wykład 2
28
Zasady projektowania
• Dokładność — projekt powinien odpowiadać
specyfikacji, tabele lub zbiory encji powinny
odzwierciedlać świat rzeczywisty.
• Unikanie redundancji — bo zajmuje się zbyt
wiele miejsca i ryzykuje się, że nie wszystkie
wystąpienia danej informacji będą uaktualnione.
• Prostota — tylko tyle elementów, ile naprawdę
potrzeba.
• Dobór właściwych elementów — nie wszystko
modelujemy jako atrybuty!
Bazy danych - wykład 2
29
 Projekt ma odpowiadać rzeczywistości, nie widzimisię lub
(na ogół błędnej) intuicji projektanta
 Projektowanie bazy danych to PRACA, za którą twórca
powinien być odpowiednio wynagradzany
 Projekt musi być zatwierdzony przed realizacją
 Zmiana projektu w takcie realizacji jest bardzo bolesna;
powinno się jej dokonywać tylko wtedy, gdy jest ona
naprawdę konieczna
Bazy danych - wykład 2
30
Relacyjne języki zapytań
(Relational Query Languages)
• Pozwalają na manipulacje danymi i pobieranie
danych z bazy
Choć
w w praktyce (algebra
na ogół zawierają
• Mają mocne podstawy
teoretyczne
pokaźny zestaw „niebazodanowych” funkcji
relacji!)
• Pozwalają na znaczną optymalizację
• Nie są zwykłymi językami programowania,
przeznaczonymi do skomplikowanych obliczeń
• Pozwalają użytkownikom zdefiniować co chcą
osiągnąć, nie zaś jak to trzeba obliczyć
(Non-operational, declarative)
Bazy danych - wykład 2
31
• Zrozumienie algebry relacji jest konieczne dla
zrozumienia i prawidłowego posługiwania się
SQL
• Zapytania odnoszą się do wystąpień (instancji)
tabel. Wynikiem zapytań też są wystąpienia
(instancje) tabel.
– Schematy tabel wejściowych zapytania są
ustalone.
– Schematy tabel wyjściowych zapytania są
określone przez definicje języka zapytań.
• Zapytanie odnosi się do konkretnego
wystąpienia tabeli (lub tabel) o ustalonym
schemacie.
Bazy danych - wykład 2
32
Przykładowe wsytąpienia
tabel w pewnej bazie
Żeglarze S1
Sid
Imię
22
Daniel
7
45
31
Leon
8
55
58
Rysiek
10 35
Rezerwacje R1
Rating Wiek
Imię
28
Jurek
9
35
31
Leon
8
55
44
58
Henio
Rysiek
5 35
10 35
Bid
Dzień
22
101
10.07.2008
58
103
11.08.2008
Łódki B1
Żeglarze S2
Sid
Sid
Rating Wiek
Bid
Nazwa
Kolor
101
Szperacz
Niebieska
103
Ścigacz
czerwona
Anglojęzyczna wersja tego przykładu jest
dostępna w co najmniej dwu niezależnych
miejscach w sieci…
Bazy danych - wykład 2
33
Podstawowe operacje
• Działania teoriomnogościowe:
• Suma mnogościowa (unia) 
• Przecięcie (iloczyn) zbiorów 
rzecz biorąc, to
• Różnica zbiorów  Technicznie
też nie jest podstawowa
operacja, ale występuje w
• Iloczyn kartezjański  praktyce
tak często, że jest
osobno implementowana
• Rzutowanie 
• Selekcja 
Wynikiem każdej operacji jest
tabela (relacja), można więc
• Przemianowanie 
tworzyć operacje złożone. Algebra
• Złączenie 
relacji jest domknięta!
Bazy danych - wykład 2
34
Operacje teoriomnogościowe
• Schematy obu tabel (relacji) wejściowych muszą
mieć identyczne zbiory atrybutów
• Zanim zostanie obliczona suma mnogościowa,
przecięcie lub różnica zbiorów, należy
uporządkować atrybuty obu tabel tak, aby
kolejnośc atrybutów była taka sama.
Bazy danych - wykład 2
35
Suma mnogościowa
R  S — zbiór krotek, z których każda należy do R
lub do S (lub do obu jednocześnie)
S1  S2
Sid
Imię
22
Daniel
7
45
28
Jurek
9
35
31
44
58
Leon
Henio
Rysiek
8 55
5 35
10 35
Rating Wiek
Bazy danych - wykład 2
Ponieważ jest to zbiór,
kolejność krotek nie ma
znaczenia.
36
Przecięcie mnogościowe
R  S — zbiór krotek, z których każda należy jednocześnie do R i S
S1  S2
Sid
Imię
31
58
Leon
Rysiek
Rating Wiek
8 55
10 35
Różnica mnogościowa
R - S — zbiór tych krotek z R, które nie należą do S
S1 – S2
Sid
Imię
22
Daniel
Rating Wiek
7
Bazy danych - wykład 2
45
37
Uwaga na wielozbiory!
Tabele (relacje) w modelu relacyjny powinny być zbiorami (krotki
nie mogą się powtarzać), ale niekiedy nie są — jeśli dopuszczamy
powtórzenia krotek, czyli zbiory zastępujemy wielozbiorami,
zmieniają się definicje operacji mnogościowych.
Suma R  S — krotka w wyniku występuje tyle razy, ile występuje
w R plus tyle razy, ile występuje w S. Uwaga: jeśli nawet R i S są
zbiorami, R  S może być wielozbiorem!
Iloczyn R  S — krotka w wyniku występuje tyle razy, ile wynosi
minimum jej wystąpień w R i S.
Różnica R–S — krotka w wyniku występuje tyle razy, ile występuje
ona w R minus tyle razy, ile występuje ona w S, ale nie mniej niż 0
razy.
Bazy danych - wykład 2
38
Przykład:
R = {A,B,B},
S = {A,B,C,C}
R  S = {A,A,B,B,B,C,C}
R  S = {A,B}
R–S = {B}
Bazy danych - wykład 2
39
Uwaga na wielozbiory (cd)!
Tabele (relacje) w modelu relacyjny powinny być
zbiorami (krotki nie mogą się powtarzać), ale niekiedy
nie są.
W dobrze zaprojektowanej relacyjnej bazie danych
tabele muszą być zbiorami. Kiedy mogą pojawiać się
wielozbiory?
Wielozbiory w dobrze zaprojektowanych relacyjnych
bazach danych pojawiają się (i to dość często) jako
tabele wynikowe pewnych zapytań. Tabele te mogą być
tabelami wejściowymi kolejnych zapytań…
Bazy danych - wykład 2
40
Selekcja C(R)
• Wybierz z tabeli R tylko te wiersze, które
spełniają warunek wyboru C.
– W warunku wyboru mogą pojawiać się
operatory logiczne!
• Schemat wyjściowej relacji jest taki sam, jak
relacje wejściowej.
• Jeśli R jest zbiorem, nie ma duplikatów.
– W praktyce duplikaty niekiedy się pojawiają
W SQL rozróżnienie SELECT vs SELECT
DISTINCT.
Bazy danych - wykład 2
41
Przykład
Wybierz tylko te
wiersze z tabeli S2, dla
których Rating > 8
Rating > 8(S2)
S2
Sid
Imię
35
28
Jurek
9
55
58
Rysiek
10 35
Sid
Imię
28
Jurek
9
31
Leon
8
44
58
Henio
Rysiek
5 35
10 35
Rating Wiek
Bazy danych - wykład 2
Rating Wiek
35
42
Rzutowanie A1,A2,…(R)
• Utwórz nową relację, która zawiera tylko
te kolumny relacji R, które wymienione są
na liście rzutowania A1,A2,…
• Schemat rejacji wyjściowej zawiera tylko
kolumny występujące na liście
rzutowania.
• W formalizmie matematycznym operator
rzutowania eliminuje duplikaty
– W praktyce (SQL) eliminowania
duplikatów trzeba zażądać explicite.
Bazy danych - wykład 2
43
Przykład
S2
Imię,Rating(S2)
Sid
Imię
28
Jurek
9
35
Jurek
9
31
Leon
8
55
Leon
8
44
58
Henio
Rysiek
5 35
10 35
Henio
Rysiek
5
10
Wiek
Wiek(S2)
Imię
Rating Wiek
Rating
Wybierz tylko kolumny
Imię, Rating z tabeli S2
35
55
Usunięto duplikaty!
Bazy danych - wykład 2
44
Składanie operatorów
Relacja wyjściowa jednego zapytania może stać się
relacją wejściową kolejnego zapytania — powstaje
operator złożony.
Imię,Rating (Rating > 8(S2))
S2
Sid
Imię
28
Jurek
9
35
Jurek
9
31
Leon
8
55
Rysiek
10
44
58
Henio
Rysiek
5 35
10 35
Imię
Rating Wiek
Bazy danych - wykład 2
Rating
45
Przemianowanie S(A1,A2,…,An)(R)
W wyniku operacji S(A1,A2,…,An)(R) z relacji R otrzymujemy
relację S, mającą tyle samo atrybutów, co R. Nowymi nazwami
atrybutów stają się A1, A2, …, An. Kolejność atrybutów zostaje
zachowana.
Jeśli chcemy tylko zmienić nazwę samej relacji, bez zmiany nazw
atrybutów, piszemy S(R) .
Bazy danych - wykład 2
46
Jak zapamiętać te oznaczenia?
•  — sigma — select
•  — pi — project
•  — rho — rename
Bazy danych - wykład 2
47
Iloczyn kartezjański
• R  S — każda krotka (wiersz) z R zostaje połączona z
każdą krotką (wierszem) S
• Schemat wyniku ma po jednym atrybucie (kolmnie) na
każdy atrybut R i po jednym atrybucie na każdy atrybut S.
Nazwy atrybutów są, o ile to możliwe, dziedziczone.
(Sid)
22
22
31
31
58
58
Imię
Rating Wiek
Daniel
7 45
Daniel
7 45
Leon
8 55
Leon
8 55
Rysiek
10 35
Rysiek
10 35
(Sid)
22
58
22
58
22
58
Bid
101
103
101
103
101
103
Dzień
10.07.2005
11.08.2005
10.07.2005
11.08.2005
10.07.2005
11.08.2005
S1  R1
Konflikt między nazwami kolumn, który trzeba rozwiązać przez
przemianowanie
Bazy danych - wykład 2
48
Złączenie warunkowe
(złączenie theta)
R c S  c (RS )
• Z iloczynu kartezjańskiego R  S wybieramy tylko te krotki,
które spełniają warunek C.
• (Na ogół) mniej krotek niż w iloczynie kartezjańskim.
• Schemat wyniku taki, jak schemat iloczynu kartezjańskiego.
(Sid) Imię
Rating Wiek (Sid) Bid Dzień
22 Daniel
7 45
58
103 11.08.2005
31 Leon
8 55
58
103 11.08.2005
S1 S1.Sid  R1.Sid R1
Bazy danych - wykład 2
49
Złączenie równościowe
(equi-join)
• Złączenie warunkowe, w którym warunek C zawiera same
równości.
• Schemat wyniku podobny do schematu iloczynu
kartezjańskiego, ale zawiera tylko jedno wystąpienie każdej
kolumny, dla której zażądano równości.
Sid
22
58
Imię
Rating Wiek Bid Dzień
Daniel
7 45
101 10.07.2005
Rysiek
10 35
103 11.08.2005
S1 Sid R1
Złączenie naturalne — złączenie równościowe, dla
którego zażądano równości we wszystkich
wspólnych kolumnach.
Bazy danych - wykład 2
50
Ważna uwaga
Złączenie jest definiowane jako podzbiór iloczynu
kartezjańskiego tabel.
Nie oznacza to jednak, że złączenie jest w
praktyce realizowane przez RDBMS w ten sposób,
iż najpierw tworzy się iloczyn kartezjański, a
później wybiera z niego krotki spełniające
warunek złączenia.
Bazy danych - wykład 2
51
Znajdź imiona żeglarzy, którzy
zarezerwowali łódkę nr 103
• Rozw. 1:

• Rozw. 2:

• Rozw. 3:
(
(Rezerwacje ) Żeglarze )
(
(Rezerwacje  Żeglarze ))
Imię Bid 103
Imię Bid 103
Tmp 





1

Bid 103
Rezerwacje
Tmp Tmp1 Żeglarze
2











 Imię Tmp
2
 

 











Bazy danych - wykład 2
52
Podsumowanie
Model relacyjny ma ściśłe, formalnie
zdefiniowane reguły zadawania zapytań,
proste, ale potężne.
Algebra relacji jest bardzo użyteczna do
reprezentowania planów wykonania
zapytań.
Jedno zapytanie zazwyczaj można
zrealizować na kilka sposobów.
Optymalizator dobrego RDBMS powinien
wybrać sposób najlepszy, ale niekiedy
trzeba to zrobić ręcznie.
Bazy danych - wykład 2
53
Download