Algebra relacji i rachunek relacyjny
© Pearson Education Limited 1995, 2005
Meaning of the term relational completeness.
How to form queries in relational algebra.
How to form queries in tuple relational
calculus.
How to form queries in domain relational
calculus.
Categories of relational DML.
2
© Pearson Education Limited 1995, 2005
Relational algebra and relational calculus are
formal languages associated with the
relational model.
Informally, relational algebra is a (high-level)
procedural language and relational calculus a
non-procedural language.
However, formally both are equivalent to one
another.
A language that produces a relation that can
be derived using relational calculus is
relationally complete.
3
© Pearson Education Limited 1995, 2005
Operacje algebry relacji są realizowane na jednej
lub wielu relacjach, a ich wynik może definiować
nowe relacje bez zmiany relacji bazowych.
Zarówno argumenty jak i wyniki są relacjami, tak
więc wynik jednej operacji może stać się
argumentem kolejnej.
Pozwala to na zagnieżdżanie wyrażeń, tak jak w
przypadku wyrażeń arytmetycznych. Dzięki tej
własności można powiedzieć, że relacje są
domknięte.
4
© Pearson Education Limited 1995, 2005
Pięć podstawowych operacji to: selekcja, rzut,
iloczyn kartezjański, suma oraz różnica zbiorów.
Pozwalają wykonać większość operacji
wyszukiwania danych.
Istnieją także dodatkowe operacje: złączenie,
przekrój oraz iloraz, które można wyrazić za
pomocą pięciu operacji podstawowych.
5
© Pearson Education Limited 1995, 2005
6
© Pearson Education Limited 1995, 2005
Selekcja
Rzut
Iloczyn
kartezjański
Suma
Przekrój
Różnica zbiorów
7
© Pearson Education Limited 1995, 2005
Złączenie
naturalne
Półzłączenie
Lewostronne
złączenie
zewnętrzne
Reszta
Iloraz
Przykład ilorazu
predykat
(R)
Operacja selekcji działa na jednej relacji R i daje w
wyniku relację zawierającą jedynie te krotki R,
które spełniają podany warunek (predykat).
8
© Pearson Education Limited 1995, 2005
Podaj wszystkich pracowników, którzy mają pensję
wyższą niż 10 000 funtów.
salary > 10000
(Staff)
9
© Pearson Education Limited 1995, 2005
a1, . . . , an
(R)
Działa na jednej relacji R i daje w wyniku relację,
która zawiera „pionowy” wycinek R powstały
przez wybranie wartości określonych atrybutów R
i pominięcie duplikatów krotek.
10
© Pearson Education Limited 1995, 2005
Podaj listę zawierającą pensje wszystkich
pracowników. Na liście mają być tylko staffNo,
fName, lName, oraz pensja (salary).
staffNo, fName, lName, salary
(Staff)
11
© Pearson Education Limited 1995, 2005
R S
Suma dwu relacji R i S definiuje relację
zawierającą wszystkie krotki R jak i S, przy czym
duplikaty krotek są eliminowane.
R i S muszą mieć zgodne schematy.
Jeżeli R i S mają odpowiednio I oraz J krotek, to ich
sumę otrzymujemy łącząc obie relacje w jedną ,
zawierającą maksymalnie (I + J) krotek.
12
© Pearson Education Limited 1995, 2005
Podaj wszystkie miasta, w których znajduje się biuro
firmy lub nieruchomość do wynajęcia.
city
(Branch)
city
(PropertyForRent)
13
© Pearson Education Limited 1995, 2005
R – S
Definiuje relację składającą się ze wszystkich
krotek zawartych w relacji R, ale nie należących
do relacji S.
R i S muszą mieć zgodne schematy.
14
© Pearson Education Limited 1995, 2005
Podaj wszystkie miasta, w których znajdują się biura
firmy, ale nie ma żadnej nieruchomości do
wynajęcia.
city
(Branch) –
city
(PropertyForRent)
15
© Pearson Education Limited 1995, 2005
R S
Definiuje relację składającą się ze wszystkich
krotek należących zarówno do relacji R jak i do
relacji S.
R i S muszą mieć zgodne schematy.
Można go określić korzystając z podstawowych
operacji:
R S = R – (R – S)
16
© Pearson Education Limited 1995, 2005
Podaj wszystkie miasta, w których znajduje się i
biuro firmy i nieruchomość do wynajęcia.
city
(Branch)
city
(PropertyForRent)
17
© Pearson Education Limited 1995, 2005
R X S
Operacja iloczynu kartezjańskiego definiuje
relację, która zawiera konkatenację każdej krotki z
relacji R z każdą krotką relacji S.
18
© Pearson Education Limited 1995, 2005
Podaj nazwiska wszystkich klientów, którzy oglądali
nieruchomości, oraz zgłoszone przez nich uwagi.
(
clientNo, fName, lName
(Client)) X
(
clientNo, propertyNo, comment
(Viewing))
19
© Pearson Education Limited 1995, 2005
(
clientNo, fName, lName
(Client)) X (
clientNo,
propertyNo, comment
(Viewing))
20
21
itd.
Wykonajmy więc operację selekcji, by wybrać tylko
te krotki, dla których:
Client.clientNo = Viewing.clientNo.
σ
Client.clientNo =
Viewing.clientNo
((
clientNo, fName,
lName
(Client)) (
clientNo,
propertyNo, comment
(Viewing)))
22
Iloczyn kartezjański i selekcję można sprowadzić do
jednej operacji zwanej Złączeniem.
© Pearson Education Limited 1995, 2005
σ
Client.clientNo = Viewing.clientNo
((
clientNo, fName,
lName
(Client)) (
clientNo, propertyNo,
comment
(Viewing)))
23
Złączenie jest operacją pochodną iloczynu
kartezjańskiego.
Polega na wykonaniu selekcji na argumencie
będącym iloczynem kartezjańskim dwu relacji –
argumentów złączenia.
Jeden z trudniejszych problemów implementacji
DBMS i często pogarsza sprawność ich działania.
24
© Pearson Education Limited 1995, 2005
Odmiany operacji złączeń:
Teta-złączenie
Równozłączenie (szczególny
przypadek teta-złączenia)
Złączenie naturalne
Złączenie zewnętrzne
Półzłączenie
25
© Pearson Education Limited 1995, 2005
R
F
S
Wynikiem operacji teta-złączenie jest relacja
zawierająca krotki iloczynu kartezjańskiego R i
S spełniające warunek F.
Warunek F jest w postaci R.a
i
S.b
i
gdzie
jest jednym z operatorów porównania (<, , >,
, =, ).
26
© Pearson Education Limited 1995, 2005
Teta-złączenie można wyrazić za pomocą
podstawowych operacji selekcji i iloczynu
kartezjańskiego:
R
F
S =
F
(R S)
27
Krotność teta-złączenia jest sumą krotności relacji
składowych R i S. Jeżeli predykat F zawiera tylko
równość (=), to teta-złączenie nosi nazwę
równozłączenia.
© Pearson Education Limited 1995, 2005
Podaj nazwiska wszystkich klientów, którzy oglądali
nieruchomości, oraz zgłoszone przez nich uwagi.
(
clientNo, fName, lName
(Client))
Client.clientNo = Viewing.clientNo
(
clientNo,
propertyNo, comment
(Viewing))
28
© Pearson Education Limited 1995, 2005
R S
Złączenie naturalne jest równozłączeniem dwu
relacji R i S według wszystkich wspólnych
atrybutów x. Jedno z wystąpień każdego ze
wspólnych atrybutów jest eliminowane z relacji
wynikowej.
29
© Pearson Education Limited 1995, 2005
Podaj nazwiska wszystkich klientów, któzy oglądali
nieruchomości, oraz zgłoszone przez nich uwagi.
(
clientNo, fName, lName
(Client))
(
clientNo, propertyNo, comment
(Viewing))
30
© Pearson Education Limited 1995, 2005
Złączenie zewnętrzne (lewostronne) to
złączenie, w którym do relacji wynikowej są
włączane również takie krotki z relacji R, dla
których w relacji S nie występują wartości
wspólnych atrybutów.
R
S
31
© Pearson Education Limited 1995, 2005
Podaj raport na temat wizyt we wszystkich
nieruchomościach.
propertyNo, street, city
(PropertyForRent)
Viewing
32
© Pearson Education Limited 1995, 2005
R
F
S
Wynikiem operacji półzłączenia jest relacja
zawerająca te krotki relacji R, które weszłyby
do złączenia R i S.
33
Półzłączenie można zapisać za pomocą operacji rzutu i
złączenia:
R
F
S =
A
(R
F
S)
© Pearson Education Limited 1995, 2005
Podaj kompletną informację o pracownikach biura w
Glasgow
Staff
Staff.branchNo=Branch.branchNo
(
city=‘Glasgow’
(Branch))
34
© Pearson Education Limited 1995, 2005
R S
Wynikiem ilorazu jest relacja posiadająca atrybuty
C i zawierająca zbiór takich krotek z relacji R, które
w połączeniu z każdą krotką z relacji S stworzą
kombinację (krotkę) występującą w relacji R.
Można to przedstawić za pomocą operacji
podstawowych:
T
1
C
(R)
T
2
C
((S
X
T
1
) – R)
T T
1
– T
2
35
© Pearson Education Limited 1995, 2005
Znajdź wszystkich klientów, którzy odwiedzili
wszystkie lokale trzypokojowe.
(
clientNo, propertyNo
(Viewing))
(
propertyNo
(
rooms = 3
(PropertyForRent)))
36
© Pearson Education Limited 1995, 2005
AL
(R)
Applies aggregate function list, AL, to R to define a
relation over the aggregate list.
AL contains one or more (<aggregate_function>,
<attribute>) pairs .
Main aggregate functions are: COUNT, SUM,
AVG, MIN, and MAX.
37
© Pearson Education Limited 1995, 2005
How many properties cost more than £350 per
month to rent?
R
(myCount)
COUNT propertyNo
(σ
rent > 350
(PropertyForRent))
38
© Pearson Education Limited 1995, 2005
GA
AL
(R)
Groups tuples of R by grouping attributes, GA, and
then applies aggregate function list, AL, to define a
new relation.
AL contains one or more (<aggregate_function>,
<attribute>) pairs.
Resulting relation contains the grouping attributes,
GA, along with results of each of the aggregate
functions.
39
© Pearson Education Limited 1995, 2005
Find the number of staff working in each branch
and the sum of their salaries.
R
(branchNo, myCount, mySum)
branchNo
COUNT staffNo, SUM salary
(Staff)
40
© Pearson Education Limited 1995, 2005
Relational calculus query specifies
what is to
be retrieved rather than
how to retrieve it.
No description of how to evaluate a query.
In first-order logic (or predicate calculus),
predicate is a truth-valued function with
arguments.
When we substitute values for the arguments,
function yields an expression, called a
proposition, which can be either true or false.
41
© Pearson Education Limited 1995, 2005
Jeżeli warunek zawiera zmienną (np. ‘x jest
pracownikiem’), to musi istnieć ograniczenie
dziedziny dla x.
Po podstawieniu za x pewnych wartości z tej
dziedziny zdanie może być prawdziwe, a po
podstawieniu innych danych – może być fałszywe.
W odniesieniu do baz danych rachunek relacyjny
może występować jako rachunek krotek lub
rachunek dziedzin.
42
© Pearson Education Limited 1995, 2005
Interesuje nas znalezienie krotek, dla których
warunek jest prawdziwy. Rachunek ten jest oparty na
zastosowaniu zmiennych krotkowych.
Zmienna krotkowa to zmienna, która „przebiega”
wskazaną relację; tzn. zmienna, której wartościami
mogą być tylko krotki danej relacji.
Np. określmy , że dziedziną zmiennej krotkowej S jest
relacja Staff:
Staff(S)
Zapytanie: znajdź zbiór wszystkich krotek S, dla
których jest prawdziwy warunek P(S) można wyrazić:
{S | P(S)}
43
© Pearson Education Limited 1995, 2005
Podaj dane pracowników zarabiających ponad
10,000 funtów:
{S | Staff(S) S.salary > 10000}
Aby uzyskać wartość konkretnego atrybutu, jak na
przykład pensja (salary), możemy napisać:
{S.salary | Staff(S) S.salary > 10000}
44
© Pearson Education Limited 1995, 2005
Można używać dwu rodzajów kwantyfikatorów, by
określić, dla jak wielu przypadków warunek (zdanie)
jest prawdziwy:
Kwantyfikator egzystencjalny $(‘istnieje’)
Kwantyfikator ogólny "(‘dla każdego’)
Zmienne krotkowe „objęte” kwalifikatorem "lub $
nazywamy zmiennymi związanymi, pozostałe
zmienne nazywamy zmiennymi wolnymi.
45
© Pearson Education Limited 1995, 2005
Kwantyfikator egzystencjalny stosuje się w
formułach, które muszą być prawdziwe dla
przynajmniej dla jednego przypadku, np.:
Staff(S) (
∃
B)(Branch(B)
(B.branchNo = S.branchNo) B.city = ‘London’)
Co oznacza: ‘Istnieje krotka w relacji Branch, która
ma taki sam numer branchNo jak aktualnie
rozważana krotka S relacji Staff i jej atrybut city ma
wartość „Londyn”’ .
46
© Pearson Education Limited 1995, 2005
Kwantyfikator ogólny stosowany jest w zdaniach,
które powinny zachodzić dla każdego przypadku, np.:
(∀
B) (B.city ‘Paris’)
Oznacza to, że: ‘Wszystkie krotki relacji Branch mają
wartość atrybut city inną niż „Paris”’ .
Można też wyrazić to inaczej:
~(
∃
B) (B.city = ‘Paris’)
co znaczy: ‘nie istnieją biura w Paryżu’ .
47
© Pearson Education Limited 1995, 2005
Formuły to takie sformułowania, które są
jednoznaczne i sensowne.
Formuła (dobrze zbudowana) składa się z formuł
atomowych:
R(S
i
)
, gdzie
S
i
jest zmienną krotkową, a
R
jest relacją
S
i
.a
1
qS
j
.a
2
S
i
.a
1
qc
48
© Pearson Education Limited 1995, 2005
Stosując te reguły można rekurencyjnie budować z
formuł atomowych kolejne formuły:
Formuła atomowa jest formułą.
Jeżeli
F
1
i
F
2
są formułami, to formułami są także ich:
koniunkcja -
F1
F2
dysjunkcja -
F1
F2
negacja
~F
1
Jeżeli
F
jest formułą oraz
X
jest zmienną wolną w
F
, to
(
$X)(F)
oraz
(
"X)(F)
także są formułami.
49
© Pearson Education Limited 1995, 2005
Podaj nazwiska wszystkich dyrektorów, którzy zarabiają
więcej niż 25.000 funtów.
{S.fName, S.lName | Staff(S)
S.position = ‘Manager’ S.salary > 25000}
Podaj wszystkich pracowników, którzy nadzorują
nieruchomości w Glasgow.
{S | Staff(S) (
∃
P) (PropertyForRent(P)
(P.staffNo = S.staffNo) P.city = ‘Glasgow’)}
50
© Pearson Education Limited 1995, 2005
Podaj nazwiska pracowników, którzy obecnie nie
nadzorują żadnej nieruchomości.
{S.fName, S.lName | Staff(S) (~(
∃
P)
(PropertyForRent(P)(S.staffNo = P.staffNo)))}
Można to też sformułować inaczej:
{S.fName, S.lName | Staff(S) ((P)
(~PropertyForRent(P)
~(S.staffNo = P.staffNo)))}
51
© Pearson Education Limited 1995, 2005
Podaj nazwiska klientów, którzy oglądali
nieruchomości w Glasgow.
{C.fName, C.lName | Client(C) ((
∃
V)(
∃
P)
(Viewing(V) PropertyForRent(P)
(C.clientNo = V.clientNo)
(V.propertyNo=P.propertyNo)
P.city =‘Glasgow’))}
52
© Pearson Education Limited 1995, 2005
Za pomocą formuły relacyjnego rachunku krotek
można zapisać zbiór nieskończony. Na przykład
formuła:
{S | ~Staff(S)}
oznacza ona zbiór wszystkich krotek, które nie
należą do relacji Staff. Taką formułę nazywamy
niebezpieczną.
Należy więc dodawać ograniczenie stanowiące, że
wszystkie wartości występujące w relacji wynikowej
muszą pochodzić z dziedziny formuły E, oznaczanej
jako dom(E).
53
© Pearson Education Limited 1995, 2005
Uses variables that take values from domains
instead of tuples of relations.
If F(
d
1
,
d
2
, . . . ,
d
n
) stands for a formula
composed of atoms and
d
1
,
d
2
, . . . ,
d
n
represent
domain variables, then:
{
d
1
,
d
2
, . . . ,
d
n
| F(
d
1
,
d
2
, . . . ,
d
n
)}
is a general domain relational calculus expression.
54
© Pearson Education Limited 1995, 2005
Find the names of all managers who earn more
than £25,000.
{fN, lN | ($sN, posn, sex, DOB, sal, bN)
(Staff (sN, fN, lN, posn, sex, DOB, sal, bN)
posn = ‘Manager’ sal > 25000)}
55
© Pearson Education Limited 1995, 2005
List the names of staff who currently do not
manage any properties for rent.
{fN, lN | ($sN)
(Staff(sN,fN,lN,posn,sex,DOB,sal,bN)
(
~
($sN1) (PropertyForRent(pN, st, cty, pc, typ,
rms, rnt, oN, sN1, bN1) (sN=sN1))))}
56
© Pearson Education Limited 1995, 2005
List the staff who manage properties for rent
in Glasgow.
{sN, fN, lN, posn, sex, DOB, sal, bN |
($sN1,cty)(Staff(sN,fN,lN,posn,sex,DOB,sal,bN)
PropertyForRent(pN, st, cty, pc, typ, rms,
rnt, oN, sN1, bN1)
(sN=sN1) cty=‘Glasgow’)}
57
© Pearson Education Limited 1995, 2005
List the names of clients who have viewed a
property for rent in Glasgow.
{fN, lN | ($cN, cN1, pN, pN1, cty)
(Client(cN, fN, lN,tel, pT, mR)
Viewing(cN1, pN1, dt, cmt)
PropertyForRent(pN, st, cty, pc, typ,
rms, rnt,oN, sN, bN)
(cN = cN1) (pN = pN1) cty = ‘Glasgow’)}
58
© Pearson Education Limited 1995, 2005
When restricted to safe expressions, domain
relational calculus is equivalent to tuple
relational calculus restricted to safe
expressions, which is equivalent to relational
algebra.
Means every relational algebra expression has
an equivalent relational calculus expression,
and vice versa.
59
© Pearson Education Limited 1995, 2005
Relacyjny rachunek dziedzin.
Języki transformacji, np. SQL.
Języki o interfejsie graficznym, np. QBE.
Języki czwartej generacji (4GL).
Języki piątej generacji (5GL).
60
© Pearson Education Limited 1995, 2005
4GLs can create complete customized
application using limited set of commands in a
user-friendly, often menu-driven environment.
Some systems accept a form of natural
language, sometimes called a 5GL, although this
development is still at an early stage.
61
© Pearson Education Limited 1995, 2005