Sunteți pe pagina 1din 15

26.10.

2018

ACADEMIA DE STUDII ECONOMICE BUCUREŞTI


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

Modelul de date relaţional

BAZE DE DATE  Structura relaţională

 Operatorii relaţionali
MODELUL DE DATE RELAŢIONAL  Restricţiile de integritate

BUCUREŞTI
2018-2019

Conf.univ.dr. IULIANA BOTHA (ȘIMONCA)

Structura relaţională Domeniul


 Domeniu Reprezintă un ansamblu de valori, caracterizat
printr-un nume.
 Relaţie
Un domeniu se poate defini:
 Atribut
◦ explicit, prin enumerarea tuturor valorilor aparţinând
 Tuplu acestuia
 Cheie ◦ implicit, prin precizarea proprietăţilor pe care le au valorile
 Schemă din cadrul domeniului respectiv

1
26.10.2018

Domeniul Relaţia
Pentru un ansamblu de domenii D1, D2, ..., Dn Relaţia reprezintă un subansamblu al produsului cartezian al
produsul cartezian al acestora reprezintă ansamblul mai multor domenii, care este caracterizat printr-un nume şi
tuplurilor <v1, v2, ..., vm>, unde: v1 este o valoare conţine tupluri cu semnificaţie.
aparţinând domeniului D1, v2 este o valoare din D2 Într-o relaţie, tuplurile trebuie să fie distincte (nu se admit
ş.a.m.d. duplicări).

Relaţia
Atributul
R : {<a, 1, α >, <b, 2, β >} Atributul reprezintă coloana unei tabele de date,
caracterizată printr-un nume. Numele coloanei (atributului)
Reprezentare ca tabel bidimensional exprimă, de regulă, semnificaţia valorilor din cadrul coloanei
respective.
D3 D1 D2
a 1 α Tuplul
b 2 β
Tuplul reprezintă linia unei tabele de date şi nu are nume.
Extensia unei relaţii: ansamblul tuplurilor care compun
la un moment dat relaţia Cheia
Numărul tuplurilor dintr-o relaţie reprezintă cardinalul Cheia desemnează un atribut sau un ansamblu de atribute
relaţiei, în timp ce numărul valorilor dintr-un tuplu care are rolul de a identifica o înregistrare dintr-o tabelă.
defineşte gradul acesteia.

2
26.10.2018

Schema unei relaţii Operatorii modelului relaţional


Aceasta este alcătuită din numele relaţiei, urmat de
 Operatori din algebra relaţională (AR);
lista atributelor, pentru fiecare atribut precizându-
se domeniul asociat.
 Operatori din calculul relaţional (CR).

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

R: A1:D1 ... An:Dm

R A1 A2 A3 A4

Algebra relaţională Proiecţia


Introdusă de E.F.Codd ca o colecţie de operaţii pe relaţii Definită asupra unei relaţii R, proiecţia constă din
în care operatorii descriu tipuri de prelucrări asupra construirea unei noi relaţii P, în care se regăsesc numai
relaţiilor, operanzii sunt relaţii, iar rezultatul este, de acele atribute din R specificate explicit în cadrul
asemenea, o relaţie. operaţiei.
◦ Operatori de bază:
Implică efectuarea unor tăieturi verticale asupra relaţiei
 Universali: reuniunea, diferenţa, produsul
R şi care pot avea ca efect apariţia unor tupluri
cartezian
duplicate, care se cer a fi eliminate.
 Specifici: proiecţia, selecţia şi joncţiunea
◦ Operatori derivaţi: intersecţia şi diviziunea 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
◦ Extensii ale algebrei relaţionale standard: n dimensiuni la unul cu mai puţine dimensiuni, ceea ce
complementarea unei relaţii, spargerea unei relaţii şi explică şi numele de proiecţie.
închiderea tranzitivă.

3
26.10.2018

Proiecţia Exemplu SQL


 Ai,……, Am (R)
SELECT DISTINCT varsta, salariu
R[Ai,..., Am]
PROJECT(R, Ai,..., Am) FROM angajati;
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

R A1 A2 A3 A4

Selecţia Selecţia
δcondiţie (R)
Reprezintă operaţia definită asupra unei relaţii R,
R [condiţie]
care constă din construirea unei relaţii S, cu aceeaşi
schemă ca R şi a cărei extensie este constituită din RESTRICT (R, condiţie)
acele tupluri din R care satisfac condiţia menţionată
explicit în cadrul operaţiei. ANGAJATI
Nume Varsta Salariu δ(salariu>2000 or nume=Mircea)
Implică efectuarea de tăieturi orizontale asupra Ion 25 3000 Nume Varsta Salariu
relaţiei R, adică eliminarea unor tupluri ale relaţiei. Mihai 30 2000 Ion 25 3000
Anca 25 3000 Anca 25 3000
Sofia 30 2000 Mircea 30 2000
Mircea 30 2000

4
26.10.2018

Exemplu SQL Produsul cartezian


Este o operaţie definită pe două relaţii, R1 şi R2.
SELECT *
Pe baza relaţiilor R1 şi R2 se construieşte o nouă
FROM angajati relaţie, R3, a cărei schemă se obţine prin
concatenarea schemelor relaţiilor R1 şi R2 şi a cărei
WHERE salariu>2000 or nume=‘Mircea’; extensie cuprinde toate combinaţiile tuplurilor din
R1 cu cele din R2.

Produsul cartezian Exemplu SQL


R1 x R2 SELECT *
PRODUCT (R1, R2) Angajati x Comenzi FROM angajati, 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 SELECT *
ID Nume NRC Data ID
1 Ion 3 08.01.11 3
1 Ion 1 01.01.11 1 FROM angajati CROSS JOIN comenzi;
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
…… ……. …… …… ……

5
26.10.2018

Joncţiune Tipuri de joncţiuni


Reprezintă operaţia definită pe două relaţii, R1 şi R2,  Internă (inner join)
care constă din construirea unei noi relaţii R3, prin  De egalitate
concatenarea unor tupluri din R1 cu tupluri din R2,  Naturală
pe baza unei condiţii specificate explicit în cadrul
 De neegalitate
operaţiei.
 Externă (outer join)
Extensia relaţiei R3 va conţine combinaţiile acelor
tupluri care satisfac condiţia de concatenare.  La stânga
 La dreapta
 Completă

Tipuri de joncţiuni Joncţiunea de egalitate şi naturală

R1 ⋈ R2

JOIN (R1, R2, condiţie)

JOIN (R1, R2, condiţie) = RESTRICT (PRODUCT (R1,


R2), condiţie)

6
26.10.2018

Joncţiunea de egalitate Joncţiunea de egalitate


Operaţie definită pe două relaţii, R1 şi R2, prin care Angajati Comenzi
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.

Exemple SQL Joncţiunea naturală


SELECT * Presupune existenţa unor atribute având aceeaşi
FROM angajati a, comenzi c denumire în ambele relaţii
WHERE a.id_ang=c.id_ang;
SELECT * FROM angajati a NATURAL JOIN comenzi c;
SELECT *
FROM angajati a JOIN comenzi c
ON a.id_ang=c.id_ang;

SELECT *
FROM angajati a JOIN comenzi c
USING (id_Ang);

7
26.10.2018

Joncţiunea externă Joncţiunea la stânga


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 dreapta Joncţiunea completă

8
26.10.2018

Reuniunea Exemplu UNION


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ă. Clienti  Angajati
Clienti  Angajati
◦ R1  R2
◦ OR (R1, R2)
◦ APPEND (R1, R2)
◦ UNION (R1, R2)

Exemplu UNION ALL 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
Clienti  Angajati R 2.

◦ R1 – R2
◦ REMOVE (R1, R2)
◦ MINUS (R1, R2)

9
26.10.2018

Diferenţa Ce afişează?

NU!
DE CE?

Clienti – Comenzi
Clienti – Comenzi

DA

Intersecţia 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.
Clienti  Comenzi
◦ R1  R2
◦ INTERSECT (R1, R2)
◦ AND (R1, R2)

10
26.10.2018

Ce afişează? Alţi operatori


 Diviziunea
 Complementarea
 Spargerea unei relaţii
 Închiderea tranzitivă

Calculul relaţional Calculul relaţional


Introdus, ca şi algebra relaţională de către E.F. Variabila poate fi de tip tuplu (valorile sunt dintr-un
Codd. tuplu al unei tabele) sau domeniu (valorile sunt
dintr-un domeniu al unei tabele).
Este o adaptare a calculului cu predicate de ordinul
1 (domeniu al logicii matematice) la domeniul
bazelor de date relaţionale. Rezultă:
◦ Calcul relaţional orientat pe tuplu
Predicatul este o relaţie care se stabileşte între
anumite elemente şi care are drept argumente ◦ Calcul relaţional orientat pe domeniu
variabile care nu sunt predicate.

11
26.10.2018

Operatori Restricţiile de integritate


 Conectivele (conectorii): Restricţiile de integritate, denumite şi reguli de
• Conjuncţia  integritate, definesc cerinţele pe care trebuie să le
• Disjuncţia  satisfacă datele din cadrul bazei de date pentru a
• Negaţia  putea fi considerate corecte şi coerente în raport cu
domeniul pe care îl reflectă.
 Cuantificatorii:
• Cuantificatorul existenţial 
• Cuantificatorul universal 

Restricţiile de integritate Restricţia de unicitate a cheii


 Restricţii structurale (minimale): Impune ca într-o relaţie R, care are cheia K, oricare
 De unicitate a cheii
ar fi tuplurile t1 şi t2 să fie satisfăcută inegalitatea:
t1(K) ≠ t2(K).
 Referenţială
 Entităţii Această inegalitate semnifică faptul că într-o relaţie
nu pot exista două tupluri cu aceeaşi valoare
pentru atributele cheie.
 Restricţii de comportament:
Cheia unei relaţii trebuie să fie minimală, în sensul
 De domeniu
că nicio parte a sa nu trebuie să aibă proprietatea
 Restricţii procedurale de identificare unică a tuplurilor relaţiei.

12
26.10.2018

Restricţia de unicitate a cheii Restricţia referenţială


Un atribut sau un grup de atribute dintr-o relaţie R1 ale
 Cheia primară
cărui/căror valori sunt definite pe acelaşi/aceleaşi
 Simplă
domeniu/domenii ca şi cheia primară a unei alte relaţii,
 Compusă
R2 şi care are rolul de a modela asocierea între entităţile
 Cheia candidată reprezentate cu ajutorul relaţiilor R1 şi R2.
CLIENTI
R1 şi R2 nu trebuie să fie neapărat distincte.
CLIENTI
Id_client Cheie primară COMENZI
Denumire RAND_COMENZI Id_client Cheie primară
CUI Cheie candidată Nr_comanda Cheie primară Denumire
CNP Cheie candidată Id_produs Cheie primară Data_comanda CUI Cheie candidată
Capital_social Nr_comanda compusă Data_livrare CNP Cheie candidată
Nivel_venit Cantitate Modalitate_comanda Capital_social
Email Pret Modalitate_livrare Nivel_venit
Id_client Cheie externă Email

Restricţia entităţii Alte restricţii de integritate


Restricţia entităţii reprezintă restricţia de  De domeniu
integritate care impune ca într-o relaţie, anumite  Domeniul corespunzător unui atribut dintr-o
atribute sa fie nenule. tabelă trebuie să se încadreze între anumite
COMENZI
CLIENTI valori
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ă
COMENZI RAND_COMENZI
Email Not null RAND_COMENZI
Nr_comanda Cheie primară Id_produs Cheie primară
Id_produs Cheie primară
Data_comanda Not null Nr_comanda compusă
Nr_comanda compusă
Data_livrare > Data_comanda Cantitate Not null, > 0
Cantitate Not null
Modalitate_comanda ‘online’, ‘direct’ Pret Not null, > 0
Pret Not null
Modalitate_livrare ‘curier’, ‘ridicare personala’
Id_client Cheie externă

13
26.10.2018

Restricţiile de integritate Exemplificare SQL-Oracle


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

14
26.10.2018

CURSUL 5...
Baze de date relaţionale

15

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