Sunteți pe pagina 1din 59

ACADEMIA DE STUDII ECONOMICE BUCUREŞTI

FACULTATEA DE CIBERNETICĂ, STATISTICĂ ŞI INFORMATICĂ ECONOMICĂ

BAZE DE DATE
CURS 4
MODELUL DE DATE
RELAŢIONAL
MODELUL DE DATE RELAŢIONAL

1. Structura relaţională

2. Operatorii relaţionali

3. Restricţiile de integritate
1. STRUCTURA RELAŢIONALĂ

❑ Domeniu
❑ Relaţie
❑ Atribut
❑ Tuplu
❑ Cheie
❑ Schemă
DOMENIUL
• Reprezintă un ansamblu de valori, caracterizat
printr-un nume.
• Un domeniu se poate defini:
– explicit, prin enumerarea tuturor valorilor aparţinând
acestuia

– implicit, prin precizarea proprietăţilor pe care le au


valorile din cadrul domeniului respectiv
Exemplu:
D1 : {"F", "M" }
D2 : {x | x  N, x  [0, 100]}
D3 : {s | s=şir de caractere}
DOMENIUL
• Pentru un ansamblu de domenii D1, D2, ..., Dn
produsul cartezian al acestora reprezintă ansamblul
tuplurilor <v1, v2, ..., vm>, unde: v1 este o valoare
aparţinând domeniului D1, v2 este o valoare din D2
ş.a.m.d.

De exemplu, tuplurile:
<"Maria", "F", 50>,
<"Vasile", "M", 15>,
<"Vasile", "M", 20>,
<"Vasile", "F", 100>
aparţin produsului cartezian: D3 D1 D2.
RELAŢIA

• Relaţia reprezintă un subansamblu al produsului cartezian al


mai multor domenii, care este caracterizat printr-un nume şi
conţine tupluri cu semnificaţie.
• Într-o relaţie, tuplurile trebuie să fie distincte (nu se admit
duplicări).

Să presupunem că se acordă o anumită semnificaţie valorilor


domeniilor D1, D2, D3.
Numai unele dintre tuplurile produsului cartezian: D3 D1 D2 pot
avea o semnificaţie şi anume cele care conţin numele, sexul şi
vârsta aceleiaşi persoane
RELAŢIA

• R : {<a, 1, α >, <b, 2, β >}


• Reprezentare ca tabel bidimensional
D3 D1 D2
a 1 α
b 2 β

• Extensia unei relaţii: ansamblul tuplurilor care compun la un


moment dat relaţia
• Numărul tuplurilor dintr-o relaţie reprezintă cardinalul relaţiei, în
timp ce numărul valorilor dintr-un tuplu defineşte gradul acesteia.
ATRIBUTUL
Atributul reprezintă coloana unei tabele de date,
caracterizată printr-un nume. Numele coloanei (atributului)
exprimă, de regulă, semnificaţia valorilor din cadrul
coloanei respective.

TUPLUL
Tuplul reprezintă linia unei tabele de date şi nu are nume.

CHEIA
Cheia desemnează un atribut sau un ansamblu de atribute
care are rolul de a identifica o înregistrare dintr-o tabelă.
SCHEMA UNEI RELAŢII

• Aceasta este alcătuită din numele relaţiei, urmat de


lista atributelor, pentru fiecare atribut precizându-se
domeniul asociat.

• R (A1:D1, ..., An:Dm)


A1:D1 ... An:Dm
• R:
CÂND ESTE O TABELĂ RELAȚIE

• Rândurile conțin date despre instanțele unei entități

• Coloanele conțin date despre atributele unei entități

• Valorile celulelor sunt la nivel elementar

• Toate valorile dintr-o coloană au același tip de date

• Coloanele dintr-un tabel au nume distincte

• Ordinea coloanelor sau rândurilor nu are importanță

• Nu există rânduri duplicate


TERMINOLOGIE

Fișier Relație Tabelă


Câmp Atribut Coloană
Înregistrare Tuplu Rând
OPERATORII MODELULUI
RELAŢIONAL

❑ Operatori din algebra relaţională (AR);

❑ Operatori din calculul relaţional (CR).


ALGEBRA RELAŢIONALĂ

• Introdusă de E.F.Codd ca o colecţie de operaţii pe relaţii în care


operatorii descriu tipuri de prelucrări asupra relaţiilor, operanzii
sunt relaţii, iar rezultatul este, de asemenea, o relaţie.
– Operatori de bază:
➢ Universali: reuniunea, diferenţa, produsul cartezian
➢ Specifici: proiecţia, selecţia şi joncţiunea
– Operatori derivaţi: intersecţia şi diviziunea
– Extensii ale algebrei relaţionale standard: complementarea
unei relaţii, spargerea unei relaţii şi închiderea tranzitivă.
R A1 A2 A3 A4
PROIECŢIA

• Definită asupra unei relaţii R, proiecţia constă din construirea


unei noi relaţii P, în care se regăsesc numai acele atribute din
R specificate explicit în cadrul operaţiei.
• Implică efectuarea unor tăieturi verticale asupra relaţiei R şi
care pot avea ca efect apariţia unor tupluri duplicate, care se
cer a fi eliminate.
• Se trece de la o relaţie de grad n la o relaţie de grad p, mai
mic decât cel iniţial (p < n), adică de la un spaţiu de n
dimensiuni la unul cu mai puţine dimensiuni, ceea ce explică
şi numele de proiecţie.
PROIECŢIA

•  Ai,……, Am (R)
• R[Ai,..., Am]
• PROJECT(R, Ai,..., Am)
ANGAJATI  Varsta,salariu
Nume Varsta Salariu Varsta Salariu
Ion 25 3000 25 3000
Varsta Salariu
Mihai 30 2000 30 2000
25 3000
Anca 25 3000 25 3000
30 2000
Sofia 30 2000 30 2000
Mircea 30 2000 30 2000
EXEMPLU SQL

SELECT DISTINCT varsta, salariu

FROM angajati;
R A1 A2 A3 A4
SELECŢIA

• Reprezintă operaţia definită asupra unei relaţii R,


care constă din construirea unei relaţii S, cu
aceeaşi schemă ca R şi a cărei extensie este
constituită din acele tupluri din R care satisfac
condiţia menţionată explicit în cadrul operaţiei.
• Implică efectuarea de tăieturi orizontale asupra
relaţiei R, adică eliminarea unor tupluri ale
relaţiei.
SELECŢIA

• δcondiţie (R)
• R [condiţie]
• RESTRICT (R, condiţie)

ANGAJATI
Nume Varsta Salariu δ(salariu>2000 or nume=Mircea)
Ion 25 3000 Nume Varsta Salariu
Mihai 30 2000 Ion 25 3000
Anca 25 3000 Anca 25 3000
Sofia 30 2000 Mircea 30 2000
Mircea 30 2000
EXEMPLU SQL

SELECT *

FROM angajati

WHERE salariu>2000 or nume=‘Mircea’;


PRODUSUL CARTEZIAN

• Este o operaţie definită pe două relaţii, R1 şi R2.


• Pe baza relaţiilor R1 şi R2 se construieşte o nouă
relaţie, R3, a cărei schemă se obţine prin
concatenarea schemelor relaţiilor R1 şi R2 şi a cărei
extensie cuprinde toate combinaţiile tuplurilor din
R1 cu cele din R2.
PRODUSUL CARTEZIAN

• R1 x R2
• PRODUCT (R1, R2) Angajati x Comenzi
ID Nume NRC Data ID
• TIMES (R1, R2) 1 Ion 1 01.01.11 1
Angajati Comenzi
1 Ion 2 07.01.11 2
ID Nume NR Data ID
C 1 Ion 3 08.01.11 3
1 Ion
1 01.01.11 1 1 Ion 4 08.01.11 2
2 Mihai
2 07.01.11 2 1 Ion 5 09.01.11
3 Anca
3 08.01.11 3 2 Mihai 1 01.01.11 1
4 Sofia
4 08.01.11 2 2 Mihai 2 07.01.11 2
5 Mircea
5 09.01.11 …… ……. …… …… ……
EXEMPLU SQL

SELECT *
FROM angajati, comenzi;

SELECT *
FROM angajati CROSS JOIN comenzi;
JONCŢIUNE

• Reprezintă operaţia definită pe două relaţii, R1 şi R2,


care constă din construirea unei noi relaţii R3, prin
concatenarea unor tupluri din R1 cu tupluri din R2,
pe baza unei condiţii specificate explicit în cadrul
operaţiei.
• Extensia relaţiei R3 va conţine combinaţiile acelor
tupluri care satisfac condiţia de concatenare.
TIPURI DE JONCŢIUNI

❑ Internă (inner join)


➢ De egalitate
➢ Naturală
➢ De neegalitate

❑ Externă (outer join)


➢ La stânga
➢ La dreapta
➢ Completă
TIPURI DE JONCŢIUNI
JONCŢIUNEA DE EGALITATE

• Operaţie definită pe două relaţii, R1 şi R2, prin care este


construită o nouă relaţie, R3, a cărei schemă este
obţinută prin reuniunea atributelor din relaţiile iniţiale;
• Extensia relaţiei R3 conţine tuplurile obţinute prin
concatenarea tuplurilor din R1 cu tuplurile din R2 care au
aceleaşi valori pentru atributele folosite în condiţia de
joncţiune.
JONCŢIUNEA DE EGALITATE

Angajati Comenzi
EXEMPLE SQL

SELECT *
FROM angajati a, comenzi c
WHERE a.id_ang=c.id_ang;

SELECT *
FROM angajati a JOIN comenzi c
ON a.id_ang=c.id_ang;

SELECT *
FROM angajati a JOIN comenzi c
USING (id_Ang);
JONCŢIUNEA NATURALĂ

• Presupune existenţa unor atribute având aceeaşi


denumire în ambele relaţii
SELECT * FROM angajati a NATURAL JOIN comenzi c;
JONCŢIUNEA EXTERNĂ

• Operaţie prin care din două relaţii, R1 şi R2, se obţine o


nouă relaţie, R3, prin joncţiunea relaţiilor iniţiale
• La noua relaţie R3 sunt adăugate şi tuplurile din R1 şi/sau
R2 care nu au participat la joncţiune.
• Aceste tupluri sunt completate în relaţia R3 cu valori
NULL pentru atributele relaţiei corespondente (R2,
respectiv R1).
– R1 ⋈ R2
– EXT-JOIN (R1, R2, condiţie)
JONCŢIUNEA LA STÂNGA
JONCŢIUNEA LA DREAPTA
JONCŢIUNEA COMPLETĂ
REUNIUNEA

• Este o operaţie definită pe două relaţii, R1 şi R2, ambele


cu aceeaşi schemă, prin care se obţine o nouă relaţie R3,
cu schema identică cu R1 şi R2, dar având ca extensie
tuplurile din R1 şi R2, luate împreună o singură dată.
– R1  R2
– OR (R1, R2)
– APPEND (R1, R2)
– UNION (R1, R2)
EXEMPLU UNION

Clienti  Angajati Clienti  Angajati


EXEMPLU UNION ALL

Clienti  Angajati
DIFERENŢA

• Este o operaţie definită pe două relaţii, R1 şi R2,


ambele cu aceeaşi schemă, prin care se obţine o nouă
relaţie, R3, cu extensia formată din acele tupluri ale
relaţiei R1 care nu se regăsesc şi în relaţia R2.

– R1 – R 2
– REMOVE (R1, R2)
– MINUS (R1, R2)
DIFERENŢA

NU!
DE CE?

Clienti – Comenzi
Clienti – Comenzi

DA
CE AFIŞEAZĂ?
INTERSECŢIA

• Reprezintă o operaţie definită pe două relaţii, R1 şi R2


ambele cu aceeaşi schemă, prin care se obţine o nouă
relaţie, R3, cu schema identică cu a relaţiilor operand şi
cu extensia formată din tuplurile din R1 şi R2.

– R1  R2
– INTERSECT (R1, R2)
– AND (R1, R2)
INTERSECŢIA

Clienti  Comenzi
CE AFIŞEAZĂ?
ALŢI OPERATORI

❑ Diviziunea
❑ Complementarea
❑ Spargerea unei relaţii
❑ Închiderea tranzitivă
CALCULUL RELAŢIONAL

• Introdus, ca şi algebra relaţională de către E.F. Codd.

• Este o adaptare a calculului cu predicate de ordinul 1


(domeniu al logicii matematice) la domeniul bazelor de
date relaţionale.

• Predicatul este o relaţie care se stabileşte între anumite


elemente şi care are drept argumente variabile care nu
sunt predicate.
CALCULUL RELAŢIONAL

• Variabila poate fi de tip tuplu (valorile sunt dintr-un


tuplu al unei tabele) sau domeniu (valorile sunt
dintr-un domeniu al unei tabele).

• Rezultă:
– Calcul relaţional orientat pe tuplu
– Calcul relaţional orientat pe domeniu
OPERATORI

❑ Conectivele (conectorii):
• Conjuncţia 
• Disjuncţia 
• Negaţia 

❑ Cuantificatorii:
• Cuantificatorul existenţial 
• Cuantificatorul universal 
RESTRICŢIILE DE INTEGRITATE

• Restricţiile de integritate, denumite şi reguli de


integritate, definesc cerinţele pe care trebuie să le
satisfacă datele din cadrul bazei de date pentru a
putea fi considerate corecte şi coerente în raport cu
domeniul pe care îl reflectă.
RESTRICŢIILE DE INTEGRITATE

❑ Restricţii structurale (minimale):


▪ De unicitate a cheii
▪ Referenţială
▪ Entităţii

❑ Restricţii de comportament:
▪ De domeniu
▪ Temporare
RESTRICŢIA DE UNICITATE A
CHEII

• Impune ca într-o relaţie R, care are cheia K, oricare


ar fi tuplurile t1 şi t2 să fie satisfăcută inegalitatea:
t1(K) ≠ t2(K).
• Această inegalitate semnifică faptul că într-o relaţie
nu pot exista două tupluri cu aceeaşi valoare pentru
atributele cheie.
• Cheia unei relaţii trebuie să fie minimală, în sensul
că nicio parte a sa nu trebuie să aibă proprietatea de
identificare unică a tuplurilor relaţiei.
RESTRICŢIA DE UNICITATE A
CHEII
❑ Cheia primară
▪ Simplă
▪ Compusă
❑ Cheia candidată
CLIENTI

Id_client Cheie primară RAND_COMENZI


Denumire
CUI Cheie candidată Id_produs Cheie primară
CNP Cheie candidată Nr_comanda compusă
Capital_social Cantitate
Nivel_venit Pret
Email

Într-o tabelă putem avea o singură cheie primară (care nu poate


accepta valori NULL) și mai multe chei unice.
RESTRICŢIA REFERENŢIALĂ

• Un atribut sau un grup de atribute dintr-o relaţie R1 ale


cărui/căror valori sunt definite pe acelaşi/aceleaşi
domeniu/domenii ca şi cheia primară a unei alte
relaţii, R2 şi care are rolul de a modela asocierea între
entităţile reprezentate cu ajutorul relaţiilor R1 şi R2.
• R1 şi R2 nu trebuie să fie neapărat distincte.
CLIENTI
COMENZI
Id_client Cheie primară
Nr_comanda Cheie primară Denumire
Data_comanda CUI Cheie candidată
Data_livrare CNP Cheie candidată
Modalitate_comanda Capital_social
Modalitate_livrare Nivel_venit
Id_client Cheie externă Email
RESTRICŢIA ENTITĂŢII

• Restricţia entităţii reprezintă restricţia de integritate


care impune ca într-o relaţie, anumite atribute sa fie
nenule.
CLIENTI COMENZI

Id_client Cheie primară Nr_comanda Cheie primară


Denumire Not null Data_comanda Not null
CUI Cheie candidată Data_livrare
CNP Cheie candidată Modalitate_comanda
Capital_social Modalitate_livrare
Nivel_venit Id_client Cheie externă
Email Not null RAND_COMENZI
Id_produs Cheie primară
Nr_comanda compusă
Cantitate Not null
Pret Not null
ALTE RESTRICŢII DE INTEGRITATE
❑ De domeniu
▪ Domeniul corespunzător unui atribut dintr-o
tabelă trebuie să se încadreze între anumite
valori;
❑ Temporare
▪ Valorile anumitor atribute se compară cu nişte
valori temporare (rezultate din calcule etc.).
COMENZI RAND_COMENZI
Nr_comanda Cheie primară Id_produs Cheie primară
Data_comanda Not null Nr_comanda compusă
Data_livrare > Data_comanda Cantitate Not null, > 0
Modalitate_comanda ‘online’, ‘direct’ Pret Not null, > 0
Modalitate_livrare ‘curier’, ‘ridicare personala’
Id_client Cheie externă
RESTRICŢIILE DE INTEGRITATE
SUPORTATE ÎN SQL-ORACLE

• NOT NULL
– nu permite valori NULL (nespecificate) în coloanele unei tabele;
• UNIQUE
– nu permite valori duplicat în coloanele unei tabele;
• PRIMARY KEY
– nu permite valori duplicate sau NULL în coloana sau coloanele definite astfel;
• FOREIGN KEY
– presupune ca fiecare valoare din coloana sau setul de coloane definit astfel să aibă o
valoare corespondentă identică în tabela de legătură, tabelă în care coloana
corespondentă este definită cu restricţia UNIQUE sau PRIMARY KEY;
• CHECK
– elimină valorile care nu satisfac anumite cerinţe (condiţii) logice.
EXEMPLIFICARE SQL-ORACLE
EXEMPLIFICARE SQL-ORACLE
EXEMPLIFICARE SQL-ORACLE
CURSUL 6...

• Proiectarea unei Baze de date relaţionale

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