Rezumat

S-ar putea să vă placă și

Sunteți pe pagina 1din 27

Capitolul 3 MODELE DE DATE

O problema fundamentala a unui SGBD este


modul in care datele sunt organizate in
vederea stocarii si exploatarii lor de catre
aplicatii. Din punct de vedere istoric, in anii
MODELUL RELAŢIONAL ’60 au existat doua modele de organizare a
datelor care au fost apoi abandonate din
cauza problemelor pe care le generau:
Modelul ierarhic,
Modelul retea.

F. Radulescu. Curs: Baze de date, 1 F. Radulescu. Curs: Baze de date, 2


anul 4 CB. anul 4 CB.

MODELUL IERARHIC MODELUL RETEA


Modelul ierarhic, folosit de IBM in
sistemul IMS (care inca este unul dintre Modelul retea. In cadrul acestuia
produsele furnizate de aceasta firma), inregistrarile sunt structurate sub forma
in care organizarea este sub forma unui graf orientat, fiecare nod putand
arborescenta: nodurile contin date si avea mai multe inregistrari ‘tata’ si mai
legaturi (‘pointeri’) catre nodurile fiu multi fii. Au existat mai multe sisteme
de gestiune si limbaje de programare
Vezi:
dezvoltate pe baza acestui model (de
http://www-306.ibm.com/software/data/ims/
exemplu limbajul COBOL).
F. Radulescu. Curs: Baze de date, 3 F. Radulescu. Curs: Baze de date, 4
anul 4 CB. anul 4 CB.

DEZAVANTAJE MODELUL RELATIONAL


Dezavantajul principal al acestor doua
modele este ca accesul la o inregistrare Modelul relational al datelor, folosit in
necesita navigarea prin arbore sau graf acest moment de majoritatea
pentru a o localiza. covarsitoare a sistemelor de gestiune
Din acest motiv apar o serie de aflate pe piata a fost introdus in anul
probleme mai ales legate timpul 1970 prin articolul lui Edgar Frank Codd
necesar scrierii de noi programme si a ”A relational model for large
detectarii anomaliilor care pot sa apara shared databanks”.
in proiectarea bazei de date.
F. Radulescu. Curs: Baze de date, 5 F. Radulescu. Curs: Baze de date, 6
anul 4 CB. anul 4 CB.

1
AVANTAJE (1)
Datele sunt stocate doar ca valori; nu
exista pointeri sau navigare prin date;
Face posibila dezvoltarea de limbaje de
cereri de nivel inalt in care utilizatorul
specifica ce date doreste si nu cum se
ajunge la rezultat, modul in care este
calculat acesta fiind in sarcina
sistemului de gestiune (exemplu de
astfel de limbaj: SQL)
F. Radulescu. Curs: Baze de date, 7 F. Radulescu. Curs: Baze de date, 8
anul 4 CB. anul 4 CB.

AVANTAJE (2) ELEMENTELE MODELULUI


Furnizeaza o baza solida pentru
problemele de corectitudine a datelor Domeniu
(redundanta, anomalii, etc). Relatie
Permite tratarea problemelor de Atribut
independenta a datelor (discutate in Schema unei relatii
capitolul 1).
Cheia unei relatii
Este extensibil, putand fi utilizat si
pentru modelarea si manipularea de Valori nule
date complexe. Corectitudinea datelor

F. Radulescu. Curs: Baze de date, 9 F. Radulescu. Curs: Baze de date, 10


anul 4 CB. anul 4 CB.

DOMENIU Produs cartezian de domenii


 Definitie: Domeniu (eng. Domain) = o multime de Din teoria multimilor se cunoaste notiunea de
valori avand asociat un nume. produs cartezian al unor multimi: fiind date
 Un domeniu se poate defini fie prin enumerarea n domenii D1, D2, …, Dn produsul lor
elementelor sale fie prin specificarea unor cartezian este:
caracteristici definitorii ale acestora.
 Exemple: D1 × D2 × … × Dn = { (v1, v2, …, vn) | vi ∈ Di , i
 Culori = {rosu, galben, albastru, violet, verde}
= 1, …, n}
 Nota = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} sau Nota = Trebuie mentionat ca in sirul de domenii care
{n ∈ N* | n ≥ 1 si n ≤ 10} participa la un produs cartezian unele se
 Sir40 = {Multimea sirurilor de maxim 40 de poate gasi in mod repetat:
caractere} PC = Numar × Sir40 × Numar × Numar × Sir40 ×
 Numar = {Multimea numerelor intregi pozitive din Sir40
intervalul [0, 100000]}
F. Radulescu. Curs: Baze de date, 11 F. Radulescu. Curs: Baze de date, 12
anul 4 CB. anul 4 CB.

2
ELEMENTELE MODELULUI RELATIE (1)
 Definitie: Relatie (eng. Relation) = o submultime a unui
Domeniu produs cartezian avand asociat un nume.
 Termenul de relatie provide de asemenea din matematica.
Relatie Un exemplu de relatie apartinand produsului cartezian PC
Atribut din paragraful anterior este:
Produse = {
Schema unei relatii (101, ‘Imprimanta laser’, 30, 20, ‘XY SRL’, ‘Str. X, Bucureşti’),
Cheia unei relatii (105, ‘Calculator PC’, 20, 23, ‘Z SRL’, ‘Bd. Z, Bucureşti’),
(124, ‘Copiator’, 10, 20, ‘XY SRL’, ‘Str. X, Bucureşti’)
Valori nule }
Corectitudinea datelor

F. Radulescu. Curs: Baze de date, 13 F. Radulescu. Curs: Baze de date, 14


anul 4 CB. anul 4 CB.

REPREZENTAREA RELATIEI
RELATIE (2)
Produse
Elementele unei relatii sunt denumite in
literatura de specialitate tupluri (engl. tuple).
Relatia de mai sus contine doar 3 dintre 101 Imprimantă 30 20 XY SRL Str. X,
elementele produsului cartezian din care laser Bucureşti
provine (3 tupluri).
O reprezentare intuitiva pentru o relatie este o 105 Calculator PC 20 23 Z SRL Bd. Z,
tabela, fiecare coloana avand asociat un Bucureşti
anumit tip de date, dat de domeniul din care
provine.
124 Copiator 10 20 XY SRL Str. X,
Fiecare element al relatiei devine o linie a unei
tabele si fiecare coloana corespunde unui Bucureşti
domeniu din produsul cartezian de baza.
F. Radulescu. Curs: Baze de date, 15 F. Radulescu. Curs: Baze de date, 16
anul 4 CB. anul 4 CB.

ELEMENTELE MODELULUI ATRIBUT (1)


Domeniu
Deoarece o relatie are o reprezentare
Relatie
tabelara putem vorbi de ‘coloană a unei
Atribut relatii’. In mod obisnuit, intr-o tabela
Schema unei relatii coloanele au un nume.
Cheia unei relatii Definitie: Atribut (eng. Attribute) =
Valori nule coloană a unei relatii avand asociat un
Corectitudinea datelor nume.

F. Radulescu. Curs: Baze de date, 17 F. Radulescu. Curs: Baze de date, 18


anul 4 CB. anul 4 CB.

3
ATRIBUT (2) ATRIBUT (3)
IDP NUMEP QTY IDF NUMEF ADRESAF
Pentru relatia Produse putem fixa de
exemplu urmatoarele nume de atribute:
 IdP – Codul produsului (nu exista doua 101 Imprimantă 30 20 XY SRL Str. X,
produse avand acelasi cod) laser Bucureşti
 NumeP – numele produsului
 Qty – Cantitate 105 Calculator PC 20 23 Z SRL Bd. Z,
 IdF – Codul furnizorului (nu exista doi Bucureşti
furnizori avand acelasi cod)
124 Copiator 10 20 XY SRL Str. X,
 NumeF – Numele furnizorului Bucureşti
 AdresaF – Adresa furnizorului
F. Radulescu. Curs: Baze de date, 19 F. Radulescu. Curs: Baze de date, 20
anul 4 CB. anul 4 CB.

ELEMENTELE MODELULUI SCHEMA RELATIEI (1)


Continutul unei relatii (vazuta ca o tabela)
Domeniu poate varia in timp: se pot adauga sau sterge
Relatie linii sau se pot modifica unele dintre valorile
Atribut din liniile existente.
Ceea ce ramane constanta este structura
Schema unei relatii relatiei: numele relatiei, numarul si tipul
Cheia unei relatii atributelor sale.
Valori nule In terminologia relationala structura unei
relatiei este denumita si schema relatiei.
Corectitudinea datelor

F. Radulescu. Curs: Baze de date, 21 F. Radulescu. Curs: Baze de date, 22


anul 4 CB. anul 4 CB.

SCHEMA RELATIEI (2) Schema relatiei Produse


Definitie: Schema unei relatii (eng.
Relation scheme) = numele relatiei Produse(IdP, NumeP, Qty, IdF, NumeF,
urmat de lista atributelor sale si AdresaF)
(eventual) de domeniul din care acestea
provin. Produse(IdP: Numar, NumeP: Sir40,
Exista mai multe modalitati prin care se Qty: Numar, IdF: Numar, NumeF: Sir40,
poate specifica schema unei relatii. In AdresaF: Sir40)
exemplele urmatoare prezentam cateva Produse = IdP, NumeP, Qty, IdF,
dintre acestea cu referire la relatia NumeF, AdresaF
Produse:
F. Radulescu. Curs: Baze de date, 23 F. Radulescu. Curs: Baze de date, 24
anul 4 CB. anul 4 CB.

4
SCHEMA RELATIEI (3) ELEMENTELE MODELULUI
In cazul prezentarii unora dintre
Domeniu
elementele de teorie a bazelor de date
relationale se folosesc si notatii de Relatie
forma: Atribut
R = ABCDE Schema unei relatii
Semnificatie: schema relatiei R contine Cheia unei relatii
5 atribute notate cu A, B, C, D si Valori nule
respectiv E. Corectitudinea datelor

F. Radulescu. Curs: Baze de date, 25 F. Radulescu. Curs: Baze de date, 26


anul 4 CB. anul 4 CB.

CHEIA RELATIEI (1) CHEIA RELATIEI (2)


O relatie fiind o multime (de tupluri) nu poate Cheia unei relatii este o caracteristica a
contine elemente (linii) duplicat – spre schemei acesteia si nu este determinata prin
deosebire de exemplu de un tabel Excel unde inspectarea valorilor aflate la un moment dat
putem avea dubluri. in relatie.
Rezulta ca tuplurile pot fi deosebite intre ele In tabela Produse cele trei linii existente pot fi
prin valorile aflate pe una sau mai multe identificate unic de valorile de pe 3 atribute
coloane din relatie. (IdP, NumeP si Qty) dar numai IdP este
cheie:
Definitie: Cheia unei relatii = multime
minimala de atribute ale caror valori identifica IdP identifica (prin definitie) in mod unic un
in mod unic un tuplu al relatiei respective produs; rezulta ca multimea de atribute {IdP}
este cheie (fiind si minimala prin natura sa}.
F. Radulescu. Curs: Baze de date, 27 F. Radulescu. Curs: Baze de date, 28
anul 4 CB. anul 4 CB.

CHEIA RELATIEI (3) CHEIA RELATIEI (4)


Multimea de atribute {IdP, IdF} identifica de Din acelasi motiv nici una dintre celelalte
asemenea unic fiecare tuplu al relatiei dar nu multimi de atribute ale relatiei Produse nu
este cheie nefiind minimala: prin inlaturarea este cheie:
lui IdF multimea ramane in continuare cheie.  fie nu este minimala (in cazul in care il include pe
Multimea de atribute {NumeP} nu este cheie: IdP)
este posibil ca in tabela Produse sa avem mai  fie nu identifica unic tuplurile relatiei (pot exista
multe linii cu NumeP = ‘Imprimanta laser’, valori duble)
‘Copiator’ sau ‘Calculator PC’. In termeni de tabele rezulta ca nu pot exista
Asa cum am mentionat cheia se determina doua linii avand aceeasi combinatie de valori
din semnificatia atributelor relatiei si nu din pe coloanele care formeaza cheia tabelei
valorile la un moment dat. respective (proprietate denumita in literatura
de specialitate si unicitatea cheii)

F. Radulescu. Curs: Baze de date, 29 F. Radulescu. Curs: Baze de date, 30


anul 4 CB. anul 4 CB.

5
CHEI MULTIPLE (1) CHEI MULTIPLE (2)
O relatie poate avea mai multe chei. Studenti (IdStud, NrMatricol, Nume, CNP,
SerieCI, NumarCI)
Sa ne imaginam o relatie Studenti continand
{ NrMatricol } – pentru ca nu pot exista doi
date despre studentii romani ai unei facultati: studenti ai unei facultati cu acelasi numar
Studenti (IdStud, NrMatricol, Nume, CNP, matricol
SerieCI, NumarCI) { CNP } – pentru ca nu pot exista doi cetateni
romani (deci nici doi studenti romani) cu
In acest caz avem mai multe chei: acelasi cod numeric personal
{ IdStud } – pentru ca IdStud este un numar { SerieCI, NumarCI } – pentru ca nu pot
asignat de sistem fiecarei inregistrari, fara exista doi cetateni romani (deci nici doi
repetitii studenti romani) cu aceeasi combinatie
serie/numar carte de identitate.
F. Radulescu. Curs: Baze de date, 31 F. Radulescu. Curs: Baze de date, 32
anul 4 CB. anul 4 CB.

CHEI MULTIPLE (3) ELEMENTELE MODELULUI


 Observatie: Orice relatie are cel putin o cheie:
deoarece intr-o relatie nu pot exista doua elemente Domeniu
identice, rezulta ca multimea tuturor atributelor Relatie
relatiei este cheie sau contine cel putin o cheie.
Atribut
 In literatura de specialitate si in sistemele de
gestiune a bazelor de date exista trei alte concepte
Schema unei relatii
legate de cheie si care vor fi prezentate in Cheia unei relatii
paragrafele urmatoare ale acestui capitol:
 Cheie primara (eng. Primary key), Valori nule
 Cheie straina (eng. Foreign key), Corectitudinea datelor
 Supercheie (eng. Superkey).
F. Radulescu. Curs: Baze de date, 33 F. Radulescu. Curs: Baze de date, 34
anul 4 CB. anul 4 CB.

VALORI NULE VALORI NULE - Exemplu


Uneori, unele elemente ale unei relatii (celule
ale tabelei) nu au nici o valoare concreta. Se
spune ca in acel loc exista o valoare nula. IdS NumeStud Codfacultate IdTutor Medie
Definitie: Valoare nula (eng. Null value) = 1001 Ionescu Ion 03 <NULL> 9,10
o valoare diferita de oricare alta si care 1002 Popescu 03 1001 <NULL>
modeleaza o informatie necunoscuta sau o
informatie inaplicabila. Vasile
Exemplul urmator prezinta o relatie Studenti 1003 Georgescu <NULL> 1001 8,40
in care exista astfel de valori nule si care au Ion
fost simbolizate (pentru a iesi in evidenta)
prin <NULL>
F. Radulescu. Curs: Baze de date, 35 F. Radulescu. Curs: Baze de date, 36
anul 4 CB. anul 4 CB.

6
VALORI NECUNOSCUTE VALORI INAPLICABILE
Modelarea unei informatii necunoscute: Modelarea unei informatii inaplicabile:
Sa presupunem ca unii dintre studenti sunt
Codul facultatii studentului Georgescu si consiliati in activitatea lor de un student de
media lui Popescu sunt nule pentru ca in an mai mare, numit si tutor.
momentul incarcarii cu date informatia Codul tutorului unui student este inscris pe
respectiva, desi existenta in lumea reala, nu coloana IdTutor (de exemplu Popescu si
era cunoscuta celui care a incarcat datele. Georgescu il au ca tutor pe studentul Ionescu
avand codul 1001).
La un moment ulterior aceste valori nule vor In cazul studentului Ionescu insa valoarea lui
fi inlocuite cu valori nenule care specifica IdTutor este nula pentru ca acest student nu
informatia respectiva. are la randul sau un tutor, valoarea nula fiind
cea corecta in contextul respectiv.
F. Radulescu. Curs: Baze de date, 37 F. Radulescu. Curs: Baze de date, 38
anul 4 CB. anul 4 CB.

ELEMENTELE MODELULUI CORECTITUDINEA DATELOR(1)


 Schema unei relatii contine descrierea structurii
Domeniu acesteia dar nu da informatii privind corectitudinea
datelor continute in aceasta.
Relatie  Exemplul urmator prezinta o incarcare cu date
Atribut incorecte pentru tabela Produse, erorile fiind
urmatoarele:
Schema unei relatii  Exista doua produse diferite avand acelasi IdP (101)
 Ultimul produs din tabela nu are asignata o valoare
Cheia unei relatii pe coloana IdP
Valori nule  Aceeasi firma are doua coduri numerice diferite (20 si
22)
Corectitudinea datelor  Exista doua firme diferite cu acelasi cod (20)

F. Radulescu. Curs: Baze de date, 39 F. Radulescu. Curs: Baze de date, 40


anul 4 CB. anul 4 CB.

ATRIBUT (3) CORECTITUDINEA DATELOR(2)


IDP NUMEP QTY IDF NUMEF ADRESAF  Specificarea conditiilor de corectitudine pe care
trebuie sa le verifice datele se face astfel:
 In cadrul teoriei bazelor de date relationale, o relatie
contine date corecte daca acestea verifica setul de
101 Imprimantă 30 20 XY SRL Str. X, dependente functionale (sau de alt tip) atasat
relatiei respective (cap. 4)
laser Bucureşti  In cazul sistemelor de gestiune a bazelor de date
existente pe piata, acestea pun la dispozitie
101 Calculator PC 20 20 Z SRL Bd. Z, mecanisme de verificare numite constrangeri de
Bucureşti integritate. Constrangerile de integritate se definesc
fie la crearea tabelei fie ulterior si sunt de obicei de
cinci tipuri, descrise in continuare. SGBD-ul va rejecta
Copiator 10 22 XY SRL Str. Ygrec, orice operatie care violeaza vreuna dintre
Bucureşti constrangerile definite pe tabela respectiva.

F. Radulescu. Curs: Baze de date, 41 F. Radulescu. Curs: Baze de date, 42


anul 4 CB. anul 4 CB.

7
CONSTRANGERI NOT NULL
Este o constrangere la nivelul unei coloane
dintr-o tabela
NOT NULL
Specifica faptul ca pe coloana respectiva nu
PRIMARY KEY pot sa apara valori nule.
UNIQUE Ex.: In cazul tabelei Produse o astfel de
constrangere se poate asocia pentru toate
FOREIGN KEY coloanele sau doar o parte din acestea.
CHECK Orice incercare de a adauga o linie care
contine valori nule pe acea coloana sau de a
modifica o valoare nenula intr-una nula va fi
respinsa de sistem.
F. Radulescu. Curs: Baze de date, 43 F. Radulescu. Curs: Baze de date, 44
anul 4 CB. anul 4 CB.

CONSTRANGERI PRIMARY KEY (1)


O relatie poate avea mai multe chei (vezi chei
multiple).
NOT NULL
In momentul creerii tabelei corespunzatoare
PRIMARY KEY relatiei intr-un sistem de gestiune a bazelor
UNIQUE de date, una dintre ele poate fi aleasa ca si
cheie primara (principala) a tabelei
FOREIGN KEY
respective.
CHECK O tabela nu poate avea decat o singura cheie
primara, formata din una sau mai multe
atribute (coloane) ale acesteia.
F. Radulescu. Curs: Baze de date, 45 F. Radulescu. Curs: Baze de date, 46
anul 4 CB. anul 4 CB.

PRIMARY KEY (2) PRIMARY KEY (3)


SGBD-ul creaza automat structuri de Alegerea cheii care devine cheie primara va fi
cautare rapida (index) pentru cheia facuta in concordanta cu tipul de aplicatie in
primara a tabelei. care este folosita acea tabela.
O caracteristica a cheii primare a unei Pentru exemplul tabelei de la paragraful
3.1.5:
tabele este (in majoritatea SGBD-urilor) Studenti (IdStud, NrMatricol, Nume, CNP,
cerinta ca pe coloanele componente nu SerieCI, NumarCI)
pot sa apara valori nule. avand cheile { IdStud }, { NrMatricol }, { CNP }
si { SerieCI, NumarCI } alegerea cheii
primare se poate face astfel:

F. Radulescu. Curs: Baze de date, 47 F. Radulescu. Curs: Baze de date, 48


anul 4 CB. anul 4 CB.

8
PRIMARY KEY (4) PRIMARY KEY (5)
Studenti (IdStud, NrMatricol, Nume, CNP, Studenti (IdStud, NrMatricol, Nume, CNP,
SerieCI, NumarCI) SerieCI, NumarCI)
In cazul in care tabela este folosita intr- In cazul in care tabela este folosita intr-o
aplicatie a politiei universitare, alegerea se va
o aplicatie de gestiune a datelor privind face probabil intre CNP si (SerieCI, NumarCI),
scolaritatea, se poate alege cheia legatura cu bazele de date de la nivelurile
primara NrMatricol, avand in vedere ca superioare facandu-se dupa aceste informatii.
o serie de date privind rezultatele unui In ambele cazuri se poate alege cheia
student sunt legate de matricola sa primara IdStud, continand numere unice
(informatie de legatura cu alte tabele) generate automat de sistem.

F. Radulescu. Curs: Baze de date, 49 F. Radulescu. Curs: Baze de date, 50


anul 4 CB. anul 4 CB.

CONSTRANGERI UNIQUE

NOT NULL Prin acest tip de constrangere se modeleaza


celelalte chei ale tabelei.
PRIMARY KEY
Pe coloanele unei chei definita cu UNIQUE
UNIQUE pot insa sa apara valori nule, unicitatea fiind
FOREIGN KEY verificata doar pentru valorile nenule de pe
CHECK coloanele cheii respective.
In exemplul anterior, daca s-a ales cheia
primara IdStud, pentru celelalte trei chei se
pot defini trei constrangeri de acest tip.
F. Radulescu. Curs: Baze de date, 51 F. Radulescu. Curs: Baze de date, 52
anul 4 CB. anul 4 CB.

CONSTRANGERI FOREIGN KEY – Cheie straina(1)


Sunt cazuri in care o multime de coloane ale
NOT NULL unei tabele contin valori care exista o cheie
PRIMARY KEY (primara/unica) a unei alte tabele. Sa
consideram o baza de date in care exista
UNIQUE urmatoarele doua tabele (cheile lor primare
FOREIGN KEY sunt cele subliniate):
CHECK Studenti(IdS, NumeStud, CodFacultate, IdTutor,
Medie)
Facultati(CodFacult, NumeFacultate, Adresa)

F. Radulescu. Curs: Baze de date, 53 F. Radulescu. Curs: Baze de date, 54


anul 4 CB. anul 4 CB.

9
FOREIGN KEY – Cheie straina(2) FOREIGN KEY – Cheie straina(3)
Coloana CodFacultate din tabela Studenti nu este  Rezulta implicit ca in momentul incarcarii cu date este
cheie in aceasta tabela (pot exista mai multi necesar sa fie completata intai tabela Facultati si apoi
studenti cu aceeasi valoare pe aceasta coloana, tabela Studenti, altfel operatia de incarcare cu date
fiind studenti ai aceleiasi facultati) dar in mod va esua din cauza violarii acestei constrangeri.
normal contine valori care pot fi doar dintre cele  In cazul multor SGBD-uri se poate specifica in
existente pe cheia primara CodFacult din tabela constrangere si stergerea automata a inregistrarilor
Facultati. ‘fiu’ in cazul stergerii inregistrarii ‘tata’: la stergerea
liniei corespunzatoare unei facultati se vor sterge
O constrangere activa de acest tip (numita si automat si liniile din tabela Studenti continand
constrangere referentiala) va avea ca efect studentii acelei facultati.
respingerea inserarilor/modificarilor in tabela  Constrangerile referentiale provin de obicei din
Studenti care ar face ca pe coloana CodFacultate transformarea asocierilor unare si binare unu-unu si
sa apara o valoare care nu este deja in tabela multi-unu (descrise in capitolul precedent).
Facultati. F. Radulescu. Curs: Baze de date, 55 F. Radulescu. Curs: Baze de date, 56
anul 4 CB. anul 4 CB.

CONSTRANGERI CHECK (1)


Acest tip de constrangere specifica
NOT NULL faptul ca valorile unei linii din tabela
PRIMARY KEY trebuie sa verifice o conditie (expresie
logica).
UNIQUE
Exemplu: Fie tabela
FOREIGN KEY
Studenti(IdS, NumeStud, CodFacultate,
CHECK
IdTutor, Medie)

F. Radulescu. Curs: Baze de date, 57 F. Radulescu. Curs: Baze de date, 58


anul 4 CB. anul 4 CB.

CHECK (1) TRANSFORMARE EA-


Studenti(IdS, NumeStud, CodFacultate, RELATIONAL
IdTutor, Medie)  In procesul de transformare vom pleca de la o
diagrama EA si vom obtine trei tipuri de scheme de
pe coloana Medie putem defini o relatie:
constrangere de acest tip specificand ca  a. Relatii provenite din entitati. Ele contin aceleasi
valoarea (daca exista o valoare nenula) informatii ca si entitatile din care au rezultat.
trebuie sa fie din intervalul [0, 10].  b. Relatii provenite din entitati si care contin chei
straine. Ele contin pe linga informatiile provenite din
Pe coloana NumeStud putem defini o entitatile din care au rezultat si atribute care in
verificare a lungimii numelui (ex.: alte entitati sunt identificatori. Este cazul acelor
entitati care au asocieri multi-unu si partial din
Lunginea >= 3). cele care au asocieri unu-unu cu alte entitati.

F. Radulescu. Curs: Baze de date, 59 F. Radulescu. Curs: Baze de date, 60


anul 4 CB. anul 4 CB.

10
TRANSFORMARE EA- ENTITATI
RELATIONAL Transformarea entitatilor
c. Relatii provenite din asocieri. Este Fiecare entitate a diagramei se
cazul celor care apar din transformarea transforma intr-o schema de relatie
asocierilor binare multi-multi si a avand:
asocierilor de grad mai mare ca doi.  Numele relatiei = Numele entitatii
Ele contin ca atribute reuniunea  Atributele relatiei = Atributele entitatii
identificatorilor entitatilor asociate plus  Cheia relatiei = Identificatorul
atributele proprii ale asocierilor. entitatii

F. Radulescu. Curs: Baze de date, 61 F. Radulescu. Curs: Baze de date, 62


anul 4 CB. anul 4 CB.

EXEMPLU ASOCIERI M-1 SI 1-1


Fiecare asociere (UNARA SAU
Marca Nume Prenume Varsta
BINARA) din aceasta categorie va
avea ca rezultat adaugarea de atribute
descriptive in unele dintre schemele
rezultate din entitati.
ANGAJATI
Aceste atribute care se adauga sunt
Rezulta: chei straine: sunt cheie in alta schema
Angajati(Marca, Nume, Prenume, Varsta) de relatie.

F. Radulescu. Curs: Baze de date, 63 F. Radulescu. Curs: Baze de date, 64


anul 4 CB. anul 4 CB.

ASOCIERI M-1 SI 1-1 (cont.) ASOCIERI M-1 SI 1-1 (cont.)


a. In cazul asocierilor multi-unu, se In cazul 1-1: Alegerea schemei in care
adauga identificatorul entitatii unu in se face adaugarea se poate face dupa
schema rezultata din entitatea multi doua criterii:
b. In cazul asocierilor unu-unu, se  fie in acea schema care defineste relatia cu
adauga identificatorul unei entitati in cele mai putine tupluri din cele doua,
schema rezultata din transformarea  fie pastrandu-se, daca exista, filiatia
celeilalte. naturala intre cele doua entitati:
identificatorul tatalui se adauga la fiu.

F. Radulescu. Curs: Baze de date, 65 F. Radulescu. Curs: Baze de date, 66


anul 4 CB. anul 4 CB.

11
EXEMPLU EXEMPLU (cont.)
ANGAJATI Marca, Nume, Prenume, Varsta
ANGAJATI (Marca, Nume, Prenume, Varsta,
..., Cod_Sectie)
Lucreaza_in Sef
SECTII(Cod_Sectie, Profil, ..., Marca_Sef)

SECTII Din asociere LUCREAZA_IN


Cod_Sectie, Profil
Din asociere SEF

F. Radulescu. Curs: Baze de date, 67 F. Radulescu. Curs: Baze de date, 68


anul 4 CB. anul 4 CB.

EXEMPLU (cont.) ASOCIERI M-M


Fiecare asociere binara multi-multi si fiecare
Pe atributul Cod_Sectie din relatia asociere cu grad mai mare ca doi se
transforma intr-o schema de relatie astfel:
ANGAJATI se va inregistra, pentru fiecare
angajat, codul sectiei in care acesta lucreaza  Nume relatie = Nume asociere
 Atribute relatie = Reuniunea
Re atributul Marca_sef din relatia SECTII
se va inregistra pentru fiecare sectie marca identificatorilor entitatilor
sefului de sectie. asociate la care se adauga
Pentru asociere SEF s-a aplicat primul atributele proprii ale asocierii
criteriu (relatia SECTII va avea mult mai  Cheia relatiei = Reuniunea
putine inregistrari decit ANGAJATI), dar si al identificatorilor entitatilor
doilea criteriu este indeplinit. asociate (cf. tabel ->)
F. Radulescu. Curs: Baze de date, 69 F. Radulescu. Curs: Baze de date, 70
anul 4 CB. anul 4 CB.

ASOCIERI DE GRAD > 2 Grad


Unare
Conectivitate
multi (E) - multi (E)
Cheia relatiei provenite din asociere
Cheie(E) + Cheie(E)
Binare multi (E1) - multi (E2) Cheie(E1) + Cheie(E2)
Fiecare asociere binara multi-multi si fiecare Ternare unu (E1) - unu (E2) - unu Cheie(E1)+Cheie(E2) sau
(E3) Cheie(E1)+Cheie(E3) sau
asociere cu grad mai mare ca doi se Cheie(E2)+Cheie(E3) sau
transforma intr-o schema de relatie astfel:
unu (E1) - unu (E2) - multi Cheie(E1)+Cheie(E3) sau
 Nume relatie = Nume asociere (E3) Cheie(E2)+Cheie(E3) sau
unu (E1) - multi (E2) - multi Cheie(E2)+Cheie(E3)
 Atribute relatie = Reuniunea (E3)
identificatorilor entitatilor multi (E1) - multi (E2) - multi Cheie(E2)+Cheie(E3)+Cheie(E1)
(E3)
asociate la care se adauga
Cheile schemelor de relatie rezultate din asocieri
atributele proprii ale asocierii Legenda:
X + Y: Multimea de atribute X impreuna cu multimea de atribute Y
 Cheia relatiei = Conform tabel (->)
F. Radulescu. Curs: Baze de date, 71 F. Radulescu. Curs: Baze de date, 72
anul 4 CB. anul 4 CB.

12
ALGEBRA RELATIONALA
Inca din primul sau articol in care introduce
modelul relational, E.F. Codd propune si un
set de operatori pentru lucrul cu relatii.
O relatie este o multime de tupluri => o
parte dintre acesti operatori provin direct din
teoria multimilor.
Ceilalti operatori, introdusi in aceasta algebra
pentru relatii (numita in literature de
specialitate algebra relationala) sunt
specifici acesteia si au la baza operatii uzuale
cu tabele – acestea fiind reprezentarea
intuitiva pentru relatii.
F. Radulescu. Curs: Baze de date, 73 F. Radulescu. Curs: Baze de date, 74
anul 4 CB. anul 4 CB.

ALGEBRA RELATIONALA (2) ALGEBRA RELATIONALA (3)


Dupa aparitia primelor sisteme de gestiune a In acest subcapitol: variante de operatori:
bazelor de date relationale s-a constatat insa Operatori ai algebrei relationale clasice:
ca aceasta algebra nu inglobeaza o serie de pornind de la una sau mai multe relatii
situatii care apar in practica: obtinem o relatie.
In cazul executiei unei cereri SQL pot sa Operatori ai algebrei pe multiseturi - lucreaza
apara tabele rezultat in care exista linii pe asa numitele multiseturi (in engleza bags)
duplicat. care sunt asemanatoare relatiilor dar in care
In plus, daca pe o tabela nu a fost definita o putem avea elemente duplicat.
cheie primara, putem sa avem in aceasta mai Operatori care lucreaza atat pe relatii cat si
multe linii identice. pe multiseturi. Ei sunt o extensie a algebrei
Problema liniilor duplicat intra in contradictie relationale si pe multiseturi si provin din
cu definitia unei relatii in care nu putem avea necesitatea de a putea rescrie orice cerere
doua tupluri identice. SQL in termeni al algebrei extinse.
F. Radulescu. Curs: Baze de date, 75 F. Radulescu. Curs: Baze de date, 76
anul 4 CB. anul 4 CB.

ALGEBRA RELATIONALA CLASICA REUNIUNEA


Reuniunea: Fiind date doua relatii R si S,
Exista mai multi operatori in cadrul reuniunea lor, notata R ∪ S este o relatie
care contine tuplurile care sunt fie in R, fie in
acestei algebre, unii dintre ei fiind S fie in ambele relatii. In rezultatul reuniunii
derivati (se pot rescrie in functie de alti nu apar tupluri duplicat.
operatori). Putem imparti acesti Pentru ca aceasta operatie sa poata fi
executata cele doua relatii care se reunesc
operatori in doua categorii: trebuie sa aiba scheme compatibile (acelasi
numar de coloane provenind din aceleasi
 Operatori derivati din teoria domenii (deci cu acelasi tip de date).
multimilor. Echivalent SQL: operatorul UNION prin care
 Operatori specifici algebrei relationale se pot reuni rezultatele a doua cereri SQL de
tip SELECT.
F. Radulescu. Curs: Baze de date, 77 F. Radulescu. Curs: Baze de date, 78
anul 4 CB. anul 4 CB.

13
REUNIUNEA (2) DIFERENTA
Diferenta: Fiind date doua relatii R si S,
diferenta lor, notata R - S este o relatie care
A B C A B C A B C contine tuplurile care sunt in R si nu sunt in
1 1 2 4 1 2 1 1 2 S.
2 1 3 2 1 3 2 1 3 Si in cazul diferentei cele doua relatii care se
1 3 2 1 3 2 1 3 2 reunesc trebuie sa aiba scheme compatibile.
5 1 7 4 1 2
5 1 7 Echivalent SQL: operatorul MINUS prin care
Relatia R Relatia S Relatia R ∪ S se poate face diferenta intre rezultatele a
doua cereri SQL de tip SELECT.

F. Radulescu. Curs: Baze de date, 79 F. Radulescu. Curs: Baze de date, 80


anul 4 CB. anul 4 CB.

DIFERENTA (2) INTERSECTIA


Intersectia: Fiind date doua relatii R
si S, intersectia lor, notata R ∩ S este o
A B C A B C A B C relatie care contine tuplurile care sunt si
1 1 2 4 1 2 1 1 2 in R si in S. De asemenea cele doua
2 1 3 2 1 3 relatii care se reunesc trebuie sa aiba
1 3 2 1 3 2 scheme compatibile.
5 1 7
Relatia R Relatia S Relatia R - S Echivalent SQL: operatorul INTERSECT
prin care se poate calcula intersectia
rezultatelor a doua cereri SQL de tip
SELECT.
F. Radulescu. Curs: Baze de date, 81 F. Radulescu. Curs: Baze de date, 82
anul 4 CB. anul 4 CB.

INTERSECTIA (2) INTERSECTIA (3)


Observatie: Intersectia este un
operator derivat. Putem rescrie orice
A B C A B C A B C
1 1 2 4 1 2 2 1 3
intersectie astfel:
2 1 3 2 1 3 1 3 2
1 3 2 1 3 2
R ∩ S = R – (R – S)
5 1 7
Relatia R Relatia S Relatia R ∩ S

F. Radulescu. Curs: Baze de date, 83 F. Radulescu. Curs: Baze de date, 84


anul 4 CB. anul 4 CB.

14
PRODUS CARTEZIAN PRODUS CARTEZIAN (2)
Produsul cartezian: Fiind date doua relatii
R si S, produsul lor cartezian, notata R × S • Daca in R si S avem atribute (coloane)
este o relatie ale carei tupluri sunt formate cu acelasi nume, in produsul cartezian R
prin concatenarea fiecarei linii a relatiei R cu × S vom avea atribute care au acelasi
fiecare linie a relatiei S. nume.
Rezulta de aici urmatoarele: • Pentru a le deosebi se prefixeaza
 Numarul de atribute (coloane) ale lui R × S este
egal cu suma numerelor de atribute ale lui R si S numele atributului cu cel al relatiei din
 Numarul de tupluri (linii) ale lui R × S este egal cu care provine (ex.: R.A si S.A, ca in
produsul numerelor de tupluri ale lui R si S exemplul urmator)

F. Radulescu. Curs: Baze de date, 85 F. Radulescu. Curs: Baze de date, 86


anul 4 CB. anul 4 CB.

PRODUS CARTEZIAN (3) PRODUS CARTEZIAN (4)


Echivalent SQL:
In clauza FROM a unei cereri SELECT Exemplu: Fie
apar doua (sau mai multe) tabele relatiile:
In cazul standardului SQL-3, se poate A B C A C D E
1 1 2 4 1 2 5
folosi clauza CROSS JOIN a unei cereri 2 1 3 2 1 3 1
de regasire de date de tip SELECT prin 1 3 2
care se poate efectua produsul
Relatia R Relatia S
cartezian a doua tabele.

F. Radulescu. Curs: Baze de date, 87 F. Radulescu. Curs: Baze de date, 88


anul 4 CB. anul 4 CB.

PRODUS CARTEZIAN (4) ALGEBRA RELATIONALA CLASICA


Rezultat:
Exista mai multi operatori in cadrul
acestei algebre, unii dintre ei fiind
R.A R.B R.C S.A S.C S.D S.E
1 1 2 4 1 2 5 derivati (se pot rescrie in functie de alti
1 1 2 2 1 3 1 operatori). Putem imparti acesti
2 1 3 4 1 2 5 operatori in doua categorii:
2 1 3 2 1 3 1
1 3 2 4 1 2 5  Operatori derivati din teoria
1 3 2 2 1 3 1 multimilor.
 Operatori specifici algebrei relationale
F. Radulescu. Curs: Baze de date, 89 F. Radulescu. Curs: Baze de date, 90
anul 4 CB. anul 4 CB.

15
PROIECTIA PROIECTIA (2)
Proiectia: Fiind data o relatie R si o Echivalent SQL: Clauza SELECT a unei
multime de atribute ale acesteia X=A1, cereri de regasire de date in care este
A2, … An, proiectia lui R pe multimea specificata lista de expresii care da
de atribute X este o relatie care se structura de coloane a rezultatului.
obtine din R luand doar coloanele din X
(in aceasta ordine) si eliminand Exemplu: din relatia R de mai jos dorim
eventualele tupluri duplicat. sa calculam π B, C, E (R)
Notatia pentru selectie este
urmatoarea:
πX(R) sau π A1, A2, … An (R)
F. Radulescu. Curs: Baze de date, 91 F. Radulescu. Curs: Baze de date, 92
anul 4 CB. anul 4 CB.

PROIECTIA (3) PROIECTIA (4)


A B C D E B C E Nota: in multimea de atribute pentru o
1 1 2 1 3 1 2 3 proiectie poate sa apara toate atributele
2 1 2 1 3 7 4 1
2 7 4 4 1 3 9 1 relatiei. In acest caz se obtine o relatie
2 3 9 2 1 3 7 1 cu acelasi continut cu cea initiala dar in
1 3 7 4 1
1 3 9 2 1 Rezultatul proiectiei π B, C, E (R)
care coloanele sunt permutate:
Observam ca s-au eliminat doua linii
Relatia R duplicat din rezultat (cele provenite din
liniile 2 si 6). π B, C, A, E, D (R)

F. Radulescu. Curs: Baze de date, 93 F. Radulescu. Curs: Baze de date, 94


anul 4 CB. anul 4 CB.

PROIECTIA (5) SELECTIA


Selectia (numita uneori restrictia):
A B C D E B C A E D
1 1 2 1 3 1 2 1 3 1 Fiind data o relatie R si o expresie
2
2
1
7
2
4
1
4
3
1
1
7
2
4
2
2
3
1
1
4
logica F (o conditie), selectia lui R in
2 3 9 2 1 3 9 2 1 2 raport cu F este o relatie care se obtine
1 3 7 4 1 3 7 1 1 4
1 3 9 2 1 3 9 1 1 2 din R luand doar liniile care verifica
expresia logica F.
Relatia R Rezultatul proiectiei π B, C, A, E, D (R)
Notatia pentru selectie este
urmatoarea:
σF(R)
F. Radulescu. Curs: Baze de date, 95 F. Radulescu. Curs: Baze de date, 96
anul 4 CB. anul 4 CB.

16
SELECTIA (2) SELECTIA (3)
Echivalent SQL: Clauza WHERE a unei
A B C D E A B C D E
cereri de regasire de date de tip 1 1 2 1 3 2 7 4 4 1
SELECT pe care se scrie conditia pe 2 1 2 1 3
care trebuie sa o indeplineasca liniile 2 7 4 4 1
2 3 9 2 1
pentru a trece mai departe spre 1 3 7 4 1
rezultat. 1 3 9 2 1
Exemplu: din relatia R de mai jos dorim
Relatia R Rezultatul selectiei σB+1 > A+C(R)
sa calculam σB+1 > A+C(R):

F. Radulescu. Curs: Baze de date, 97 F. Radulescu. Curs: Baze de date, 98


anul 4 CB. anul 4 CB.

JOIN JOIN (2)


Joinul general (numit si theta-join sau θ- Sa luam un exemplu concret pentru
join): fiind dare doua relatii R si S, joinul lor exemplificarea acestui operator: Sa
(notat RFS) se obtine din produsul cartezian consideram ca avem doua relatii, STUD
al relatiilor R si S urmat de o selectie dupa
conditia F (numita si conditie de join).
si SPEC avand schemele:
Denumirea de theta-join este folosita din  STUD(Matr, Nume, CodSpec, Media)
motive istorice, simbolul θ fiind folosit initial  SPEC(CodS, NumeS)
pentru a desemna o conditie.
Rezulta ca:
RFS = σF(R × S)
F. Radulescu. Curs: Baze de date, 99 F. Radulescu. Curs: Baze de date, 100
anul 4 CB. anul 4 CB.

JOIN (3) JOIN (4)


Sa consideram urmatoarele joinuri:
Matr Nume CodSpec Media CodS NumeS
101 Ionescu 10 8 10 Calculatoare si Tehnologia STUDSTUD.CodSpec=SPEC.CodSSPEC
Ion Informatiei
102 Popescu 11 9 11 Automatica si Informatica STUDSTUD.CodSpec>SPEC.CodSSPEC
Maria Industriala
302 Georgescu 10 9,50
Vasile
Relatia SPEC
Relatia STUD Rezultatul celor doua joinuri este
urmatorul:

F. Radulescu. Curs: Baze de date, 101 F. Radulescu. Curs: Baze de date, 102
anul 4 CB. anul 4 CB.

17
STUDSTUD.CodSpec=SPEC.CodSSPEC JOIN (5)
In cazul in care conditia de join este
Matr Nume CodSpec Media CodS NumeS una de egalitate, joinul se mai numeste
101 Ionescu Ion 10 8 10 Calculatoare si si echijoin (ca in cazul joinului
Tehnologia Informatiei
102 Popescu Maria 11 9 11 Automatica si precedent).
Informatica Industriala In restul cazurilor se foloseste sintagma
302 Georgescu Vasile 10 9,50 10 Calculatoare si
Tehnologia Informatiei
non-echijoin (joinul urmator).

F. Radulescu. Curs: Baze de date, 103 F. Radulescu. Curs: Baze de date, 104
anul 4 CB. anul 4 CB.

STUDSTUD.CodSpec>SPEC.CodSSPEC
JOIN (6)
Echivalent SQL:
In clauza FROM a unei cereri de
Matr Nume CodSpec Media CodS NumeS regasire de tip SELECT apar tabelele
102 Popescu Maria 11 9 10 Calculatoare si care participa la join +
Tehnologia Informatiei
In clauza WHERE se pune conditia de
join, conectata cu AND de celelalte
conditii care eventual sunt necesare in
cererea respectiva.

F. Radulescu. Curs: Baze de date, 105 F. Radulescu. Curs: Baze de date, 106
anul 4 CB. anul 4 CB.

JOIN NATURAL JOIN NATURAL (2)


Join natural: Joinul natural pentru Echivalent SQL: Clauza NATURAL JOIN
doua relatii R si S (notat RS )se din sintaxa SQL-3.
obtine: Observatie: deoarece SGBD-ul nu
facand joinul celor doua relatii dupa cunoaste semnificatia coloanelor,
conditia: “coloanele cu aceeasi conditia de join implicita in acest caz
semnificatie au valori egale” + este “coloanele cu acelasi nume au
 eliminand prin proiectie coloanele valori egale”
duplicat (cele dupa care s-a facut
joinul).
F. Radulescu. Curs: Baze de date, 107 F. Radulescu. Curs: Baze de date, 108
anul 4 CB. anul 4 CB.

18
JOIN NATURAL (3) JOIN NATURAL (4)
Exemplu: In cazul celor doua tabele de
mai sus, STUD si SPEC, joinul lor Matr Nume CodSpec Media NumeS
101 Ionescu Ion 10 8 Calculatoare si
natural va fi asemanator cu echijoinul Tehnologia Informatiei
anterior, lipsind insa coloana duplicat 102 Popescu Maria 11 9 Automatica si Informatica
SPEC.CodS (care are aceleasi valori ca Industriala
302 Georgescu Vasile 10 9,50 Calculatoare si
si coloana STUD.CodSpec) Tehnologia Informatiei
Obs: In cazul folosirii clauzei NATURAL
JOIN cele doua coloane trebuie sa aiba
acelasi nume
F. Radulescu. Curs: Baze de date, 109 F. Radulescu. Curs: Baze de date, 110
anul 4 CB. anul 4 CB.

JOIN EXTERN JOIN EXTERN (2)


Join extern: Asa cum s-a vazut din In unele cazuri se doreste insa ca
nonechijoinul anterior, in cazul in care o aceste linii sa apara in rezultat, cu valori
linie a unei tabele, oricare ar fi nule pe coloanele din cealalta tabela.
concatenarea ei cu o alta linie din
cealalta tabela, nu indeplineste conditia Aceasta operatie poarta numele de join
de join, linia respectiva nu are extern (in engleza outer join).
corespondent in rezultat. Cum la un join participa doua tabele,
Este cazul liniilor studentilor de la pot exista trei tipuri de join extern:
specializarea 10 si al liniei specializarii
11.
F. Radulescu. Curs: Baze de date, 111 F. Radulescu. Curs: Baze de date, 112
anul 4 CB. anul 4 CB.

JOIN EXTERN (3) STUDºL (STUD.CodSpec>SPEC.CodS)SPEC


 Join extern stanga (left outer join), in care in rezultat
apar toate liniile tabelei din stanga operatorului.
Notatia este: RºLS.
 Join extern dreapta (right outer join), in care in Matr Nume CodSpec Media CodS NumeS
rezultat apar toate liniile tabelei din dreapta 102 Popescu Maria 11 9 10 Calculatoare si
operatorului. Notatia este: RºRS.
 Join extern complet (full outer join), in care in
Tehnologia Informatiei
rezultat apar toate liniile tabelelor din stanga si din 101 Ionescu Ion 10 8 NULL NULL
dreapta operatorului. Notatia este: RºS.
302 Georgescu Vasile 10 9,50 NULL NULL
 De notat ca in rezultatul joinului extern sunt
intotdeauna continute tuplurile (liniile) din rezultatul
joinului general dupa aceeasi conditie.

F. Radulescu. Curs: Baze de date, 113 F. Radulescu. Curs: Baze de date, 114
anul 4 CB. anul 4 CB.

19
STUDºR(STUD.CodSpec>SPEC.CodS)SPEC STUDº (STUD.CodSpec>SPEC.CodS)SPEC

Matr Nume CodSpec Media CodS NumeS


Matr Nume CodSpec Media CodS NumeS 102 Popescu Maria 11 9 10 Calculatoare si
102 Popescu Maria 11 9 10 Calculatoare si Tehnologia Informatiei
Tehnologia Informatiei 101 Ionescu Ion 10 8 NULL NULL
302 Georgescu 10 9,50 NULL NULL
NULL NULL NULL NULL 11 Automatica si Vasile
Informatica Industriala NULL NULL NULL NULL 11 Automatica si
Informatica Industriala

F. Radulescu. Curs: Baze de date, 115 F. Radulescu. Curs: Baze de date, 116
anul 4 CB. anul 4 CB.

SEMIJOIN MULTISETURI
Semijoin: Fie doua relatii R si S. Atunci Asa cum am spus anterior, in practica
semijoinul lui R in raport cu S ( notat R ∝ S ) bazelor de date intr-o tabela sau un
este o relatie care contine multimea tuplurilor rezultat al unei cereri de regasire de
lui R care participa la joinul natural cu S. date pot sa apara linii duplicat.
Semijoinul este un operator derivat. Putem In acest caz nu mai putem vorbi de
scrie ca: relatii (care nu permit tupluri duplicat)
R ∝ S = πR (RS) ci de multiseturi (eng. bags).
Semijoinurile pot fi folosite in optimizarea Prezentam pe scurt efectul unora dintre
cererilor de regasire in baze de date operatorii de mai sus aplicati
distribuite. multiseturilor.
F. Radulescu. Curs: Baze de date, 117 F. Radulescu. Curs: Baze de date, 118
anul 4 CB. anul 4 CB.

REUNIUNE MULTISETURI EXEMPLU


Reuniunea: Efectul este asemanator
cu al reuniunii din algebra relationala A B C A B C A B C
dar din rezultatul final nu se elimina 1
1
1
1
2
2
1 3 2
2 1 3
1 1 2
1 1 2
duplicatele. 1 3 2 1 3 2
Multiset S 1 3 2
2 1 3
Multiset R Multiset R ∪ S

F. Radulescu. Curs: Baze de date, 119 F. Radulescu. Curs: Baze de date, 120
anul 4 CB. anul 4 CB.

20
ALTE OPERATII PROIECTIE MULTISETURI
Intersectia, diferenta, produsul Proiectia: Acelasi mod de calcul ca si
cartezian, selectia, joinul, joinul natural, in cazul relatiilor dar la final nu
joinul extern: acelasi mod de calcul ca si in eliminam liniile duplicat.
cazul relatiilor dar:
Multiseturile operand pot sa contina linii
duplicat
Din rezultat nu se elimina liniile duplicat
Observatie: in cazul acestor operatii nu pot
aparea linii duplicat decat daca operanzii
contin linii duplicat.
F. Radulescu. Curs: Baze de date, 121 F. Radulescu. Curs: Baze de date, 122
anul 4 CB. anul 4 CB.

EXEMPLU OPERATORI EXTINSI


A B C D E B C E Redenumirea
1 1 2 1 3 1 2 3
2 1 2 1 3 1 2 3 Eliminare duplicate
2 7 4 4 1 7 4 1
2
1
3
3
9
7
2
4
1
1
3
3
9
7
1
1
Grupare
1 3 9 2 1 3 9 1
Sortare
Multiset R Rezultatul proiectiei π B, C, E (R)
pentru multisetul R Proiectie extinsa
Observam ca nu s-au eliminat liniile
duplicat

F. Radulescu. Curs: Baze de date, 123 F. Radulescu. Curs: Baze de date, 124
anul 4 CB. anul 4 CB.

REDENUMIREA REDENUMIREA (2)


 Redenumirea: Exista doua modalitati de a Echivalent SQL pentru operatorul ρ :
face redenumirea tabelelor si/sau
Aliasurile de coloana si de tabela folosite
coloanelor:
in clauzele SELECT, respectiv FROM
1. Operatorul de redenumire ρ permite atat
redenumirea relatiilor/multiseturilor cat si a
dintr-o cerere de regasire de tip SELECT
atributelor acestora:
 Fiind data o relatie R, putem obtine o alta
relatie S = ρS(A1, A2, …, An) care are acelasi
continut ca si R dar atributele se numesc
A1, A2, … , An.
F. Radulescu. Curs: Baze de date, 125 F. Radulescu. Curs: Baze de date, 126
anul 4 CB. anul 4 CB.

21
REDENUMIREA (3) REDENUMIREA (4)
 Constructorul → care permite  Exemplu: Fie o relatie R=ABCDE.
redenumirea atributelor in rezultatul  In rezultatul proiectiei:
unei expresii relationale sau pe π B→Nume, C→Prenume, E→DataN (R)
multiseturi:
atributele nu sunt B, C si E ci Nume,
 Putem redenumi intr-un rezultat un Prenume si DataN
atribut prin constructia:
 Echivalent SQL: aliasul de coloana
 Nume_vechi → Nume_nou folosit in clauza SELECT a unei cereri
de regasire.

F. Radulescu. Curs: Baze de date, 127 F. Radulescu. Curs: Baze de date, 128
anul 4 CB. anul 4 CB.

ELIMINARE DUPLICATE ELIMINARE DUPLICATE (2)


Eliminare duplicate: Acest operator
se poate aplica doar pe multiseturi A B C A B C
(relatiile nu contin tupluri duplicat). 1 2 3 1 2 3
Efectul este eliminarea duplicatelor din 1 2 3 7 4 1
multiset. Notatia operatorului este 7 4 1 3 9 1
3 9 1 3 7 1
urmatoarea: 3 7 1
Fiind dat un multiset R, δ(R) este un 3 9 1
multiset fara duplicate (deci o relatie) Multisetul R Multisetul (relatia) δ(R)

Echivalent SQL: SELECT DISTINCT


dintr-o cerere de regasire de tip SELECT
F. Radulescu. Curs: Baze de date, 129 F. Radulescu. Curs: Baze de date, 130
anul 4 CB. anul 4 CB.

GRUPARE GRUPARE (2)


Grupare: Forma operatorului de grupare Acest operator se poate aplica atat relatiilor
este urmatoarea: cat si multiseturilor.
γLista_atribute_si_functii_statistice(R) Echivalent SQL: Functii statistice si grupare
cu GROUP BY
Atributele din lista sunt criterii de grupare. Ele
apar in rezultatul returnat de operator Un exemplu in acest sens este edificator: In
cazul relatiei STUD anterioare:
Functiile statistice din lista (ex.: MIN, MAX,
SUM, AVG, COUNT) se calculeaza la nivelul γCodSpec, Count(*)→NrStud, AVG(Medie)→Medie(STUD)
fiecarui grup si de asemenea apar in
rezultatul operatorului va returna o relatie avand urmatorul continut:
F. Radulescu. Curs: Baze de date, 131 F. Radulescu. Curs: Baze de date, 132
anul 4 CB. anul 4 CB.

22
GRUPARE (3) SORTARE (ORDONARE)
Sortare: Forma operatorului de sortare
este urmatoarea:
CodSpec NrStud Medie τLista_atribute(R)
10 2 8,75
Efectul este sortarea relatiei sau
11 1 9,00
multisetului R in functie de atributele
din lista.

F. Radulescu. Curs: Baze de date, 133 F. Radulescu. Curs: Baze de date, 134
anul 4 CB. anul 4 CB.

SORTARE (ORDONARE) - cont PROIECTIE EXTINSA


Cum atat in cazul relatiilor cat si a Proiectie extinsa: Acest operator este
multiseturilor nu este presupusa o analog proiectiei obisnuite dar permite
relatie de ordine, acest operator practic atribute (coloane) calculate pentru rezultatul
unei expresii pe relatii sau multiseturi. Forma
nu modifica argumentul (doar sa este urmatoarea:
rearanjeaza elementele).
π Expresie1, Expresie2, … Expresie-n (R)
Deci el are sens doar atunci cand este
Observatie: in functie de rezultatul dorit
ultimul aplicat unei expresii. (relatie sau multiset) dupa ce se calculeaza
Echivalent SQL: Clauza ORDER BY rezultatele duplicatele se elimina sau nu se
dintr-o cerere de regasire de tip SELECT elimina.

F. Radulescu. Curs: Baze de date, 135 F. Radulescu. Curs: Baze de date, 136
anul 4 CB. anul 4 CB.

PROIECTIE EXTINSA (2) PROIECTIE EXTINSA


Echivalent SQL: Ca si in cazul proiectiei
obisnuite, acest operator este Nume Dublu
implementat prin clauza SELECT a unei Ionescu Ion 16
cereri de regasire a informatiei Popescu Maria 18

Exemplu: Pentru expresia: Georgescu Vasile 19


π Nume, Medie*2→Dublu (STUD)
Rezultatul este:

F. Radulescu. Curs: Baze de date, 137 F. Radulescu. Curs: Baze de date, 138
anul 4 CB. anul 4 CB.

23
CALCUL RELATIONAL PE
CALCUL RELATIONAL
TUPLURI - CRT
Pe langa algebra relationala, cererile de In calcului relational pe tupluri o cerere
regasire a informatiei intr-o baza de se exprima printr-o expresie de forma:
date relationala pot fi exprimate si prin:
{ t | ψ(t) }
 calcul relational pe tupluri (CRT)
t este o variabila tuplu iar ψ o
 calcul relational pe domenii (CRD). formula.
Semnificatia expresiei este “multimea
tuturor tuplurilor t care verifica formula
ψ”.
F. Radulescu. Curs: Baze de date, 139 F. Radulescu. Curs: Baze de date, 140
anul 4 CB. anul 4 CB.

ATOMI APARITII
Formula este compusa din elemente (numite  Pe baza acestor atomi se poate defini
si atomi) care pot fi de trei tipuri:
Elemente de tip R(s) unde R este un nume de recursiv ce este o formula si ce sunt
relatie iar s o variabila tuplu. Semnificatia aparitii libere sau legate ale
este “s este un tuplu din R” variabilelor tuplu:
Elemente de tip s[i] θ v[j] unde s si v sunt
variabile tuplu iar θ un operator prin care se 1. Orice atom este in acelasi timp
poate compara componenta i a variabilei formula. Toate aparitiile unei variabile
tuplu s cu componenta j a variabilei tuplu v
s[i] θ a sau a θ s[i] prin care componenta i a
tuplu intr-un atom sunt aparitii libere
variabilei tuplu s se compara cu constanta a.

F. Radulescu. Curs: Baze de date, 141 F. Radulescu. Curs: Baze de date, 142
anul 4 CB. anul 4 CB.

APARITII (2) APARITII (3)


2. Daca ψ si φ sunt doua formule, atunci 3. Daca ψ este o formula atunci si (∃s)( ψ) este
ψ ∨ φ, ψ ∧ φ si ¬ψ sunt formule cu formula. Aparitiile variabilei tuplu s care sunt
semnificatia ψ sau-logic φ, ψ si-logic libere in ψ sunt legate in (∃s)( ψ). Celelalte
φ” si respectiv “not ψ”. aparitii de variabile tuplu din ψ raman la fel
Aparitiile de variabile tuplu sunt libere sau (libere sau legate) in (∃s)( ψ).
legate in aceste formule dupa cum ele Semnificatia acestei formule este urmatoarea:
sunt libere sau legate in componentele exista o valoare concreta a lui s care
acestora. Este permis ca o aceeasi inlocuita in toate aparitiile libere din ψ face
variabila tuplu sa aiba o aparitie libera ca aceasta sa fie adevarata.
in ψ si o alta legata in φ
F. Radulescu. Curs: Baze de date, 143 F. Radulescu. Curs: Baze de date, 144
anul 4 CB. anul 4 CB.

24
APARITII (4) APARITII (5)
4. Daca ψ este o formula atunci si (∀s)( ψ) 5. Parantezele pot fi folosite in formule
este formula. Aparitiile variabilei tuplu s care dupa necesitati.
sunt libere in ψ sunt legate in (∀s)( ψ).
Celelalte aparitii de variabile tuplu din ψ
raman la fel (libere sau legate) in (∀s)( ψ). Precedenta este: intai comparatiile, apoi ∃
Semnificatia acestei formule este urmatoarea: si ∀ si in final ¬, ∧, ∨ (in aceasta
orice valoare concreta a lui s pusa in locul ordine)
aparitiilor libere ale acestuia din ψ face ca ψ
sa fie adevarata.

F. Radulescu. Curs: Baze de date, 145 F. Radulescu. Curs: Baze de date, 146
anul 4 CB. anul 4 CB.

EXEMPLE (EXPRESII, FORMULE) EXPRESII SIGURE


 Exemple de expresii si formule: Din pacate unele din expresiile scrise in calcul
1. Expresia {t | R(t) ∨ S(t) } este echivalenta relational pe tupluri duc la rezultate infinite.
reuniunii a doua relatii din algebra  Exemplu: daca R este o relatie finita atunci
relationala. expresia {t | R(t) } este de asemenea finita
2. Analog {t | R(t) ∧ S(t) } reprezinta dar expresia {t | ¬ R(t) } este infinita
intersectia a doua relatii. (exista o infinitate de tupluri care nu
apartin lui R).
3. Expresia pentru proiectia lui R pe atributele Pentru a evita astfel de rezultate s-au
i1, i2, …, ik se poate scrie astfel: introdus asa numitele expresii sigure.
{ t(k) | (∃u)(R(u) ∧ t[1] = u[i1] ∧ t[2] = u[i2] ∧ … ∧ Pentru definirea lor este necesara definirea
t[k] = u[ik]) }
unui alt concept si anume domeniul unei
4. Formula (∃s)(R(s)) spune ca relatia R este formule
nevida
F. Radulescu. Curs: Baze de date, 147 F. Radulescu. Curs: Baze de date, 148
anul 4 CB. anul 4 CB.

DOM(ψ) EXEMPLU
Definitie: Daca ψ este o formula Fie formula ψ = R(t) ∧ t[1] > 100 care
atunci domeniul sau, notat cu DOM(ψ) reprezinta conditia pentru o selectie din
este multimea tuturor valorilor care fie R dupa conditia “valoarea pe prima
apar explicit in ψ sau sunt componente coloana este mai mare decat 100”.
ale tuplurilor relatiilor prezente in ψ. Atunci:
Cum orice relatie este finita rezulta ca
si domeniul oricarei formule este finit. DOM(ψ) = { 100 } ∪ {multimea
valorilor care apar in tuplurile lui R }

F. Radulescu. Curs: Baze de date, 149 F. Radulescu. Curs: Baze de date, 150
anul 4 CB. anul 4 CB.

25
EXPRESIE SIGURA EXEMPLE
Definitie: O expresie ψ se zice ca este Expresiile:
sigura daca rezultatul sau este compus {t | R(t) },
doar din valori apartinand lui DOM(ψ). {t | R(t) ∧ t[1] > 100 },
{t | R(t) ∨ S(t) }, {t | R(t) ∧ S(t) } sau
{ t(k) | (∃u)(R(u) ∧ t[1] = u[i1] ∧ t[2]
= u[i2] ∧ … ∧ t[k] = u[ik]) }
sunt sigure

F. Radulescu. Curs: Baze de date, 151 F. Radulescu. Curs: Baze de date, 152
anul 4 CB. anul 4 CB.

EXEMPLE – cont. ECHIVALENTA CRT CU AR


Expresiile: In literatura de specialitate se poate
{t | ¬ R(t) } gasi demonstratia faptului ca expresiile
{t | ¬R(t) ∧ ¬S(t) } sigure din CRT sunt echivalente cu
expresii din algebra relationala si
nu sunt sigure. reciproc.

F. Radulescu. Curs: Baze de date, 153 F. Radulescu. Curs: Baze de date, 154
anul 4 CB. anul 4 CB.

CALCUL RELATIONAL PE
ATOM
DOMENII - CRD
Un atom poate fi:
In calculul relational pe domenii nu
R(x1, x2, …, xn) unde R este o relatie
avem variabile tuplu ci variabile de
iar xi sunt variabile de domeniu sau
domeniu, ele constituind elementele
constante
care formeaza tuplurile.
x θ y unde x si y sunt variabile de
In acest caz rescriem trebuiesc rescrise
domeniu sau constante iar θ este in
regulile de formare pentru o formula in
continuare un operator de comparatie.
CRD

F. Radulescu. Curs: Baze de date, 155 F. Radulescu. Curs: Baze de date, 156
anul 4 CB. anul 4 CB.

26
FORMULE SI EXPRESII EXEMPLE – EXPRESII SIGURE
Formulele din CRD sunt construite Reuniunea a doua relatii R si S:
analog cu cele din CRT utilizand de {x1x2…xn | R(x1x2…xn) ∨ S(x1x2…xn) }
asemenea ¬, ∧, ∨ precum si ∃, ∀.
Notiunile de aparitie libera sau legata a Intersectia a doua relatii R si S
unei variabile de domeniu sunt analoge {x1x2…xn | R(x1x2…xn) ∧ S(x1x2…xn) }
cu cele din CRT Selectia dupa conditia “valoarea pe
Analog cu CRT se definesc: domeniul prima coloana este mai mare decat
unei variabile de domeniu DOM(x) si 100:
expresii sigure in CRD.
{x1x2…xn | R(x1x2…xn) ∧ x1 > 100 }
F. Radulescu. Curs: Baze de date, 157 F. Radulescu. Curs: Baze de date, 158
anul 4 CB. anul 4 CB.

EXEMPLE: EXPRESII NON-


ECHIVALENTA CRD CU AR
SIGURE
In literatura de specialitate se poate
{x1x2…xn | ¬R(x1x2…xn) } gasi demonstratia faptului ca expresiile
sigure din CRD sunt echivalente cu
{x1x2…xn | ¬R(x1x2…xn) ∧ ¬S(x1x2…xn) } expresii din algebra relationala si
reciproc.

F. Radulescu. Curs: Baze de date, 159 F. Radulescu. Curs: Baze de date, 160
anul 4 CB. anul 4 CB.

Sfârşitul
Capitolului 3

F. Radulescu. Curs: Baze de date, 161


anul 4 CB.

27

S-ar putea să vă placă și