Sunteți pe pagina 1din 62

ACADEMIA DE STUDII ECONOMICE BUCUREŞTI

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

BAZE DE DATE

Modelul de date relaţional


Modelul de date relaţional
Structura relaţională
Operatori relaţionali
Restricţiile de integritate
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, ..., vn>, 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 duplicate);
•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
•Intensia (schema) relatiei: R (A1:D1, ..., An:Dm)
•Reprezentare ca tabel bidimensional

A1:D1 A2:D2 A3:D3


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 primară
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)

•R: A1:D1 ... An:Dm


Operatori SQL
Operator Caracteristici
+, -, *, /, ** (op. Operatori aritmetici
exponenţial)
AND, OR, NOT Operatori logici
<, >, =, >=, <=, <>, != Operatori de comparaţie
BETWEEN ... AND ... Operator de verificare a apartenenţei la un interval
IN(listă) Operator de verificare a apartenenţei la o listă de
valori
LIKE Operator de comparare cu un şablon
% - oricâte caractere; _ - un caracter;
IS NULL Operator care verifică dacă o variabilă are valoarea
NULL
|| Operator de concatenare
& Operatori pentru adresarea variabilelor de
substituţie
:= Operator de atribuire
Operatorii modelului
relaţional
Operatori din algebra relaţională (AR);
Operatori din calculul relaţional (CR).
Algebra relaţională
•Reprezintă operaţii pe relaţii în care operatorii descriu
tipuri de prelucrări asupra relaţiilor, 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 PROIECTIE
SELECT DISTINCT varsta, salariul
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.
Selectia
δ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 SELECTIE
SELECT *
FROM angajati
WHERE salariul>2000 or nume=‘Raluca’
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 R 2
PRODUCT (R1, R2)
Angajati x Comenzi
TIMES (R1, R2)
ID Nume NRC Data ID
Angajati Comenzi
1 Ion 1 01.01.11 1
ID Nume NRC Data ID
1 Ion 2 07.01.11 2
1 Ion 1 01.01.11 1
1 Ion 3 08.01.11 3
2 Mihai 2 07.01.11 2
1 Ion 4 08.01.11 2
3 Anca 3 08.01.11 3
1 Ion 5 09.01.11
4 Sofia 4 08.01.11 2
2 Mihai 1 01.01.11 1
5 Mircea 5 09.01.11
2 Mihai 2 07.01.11 2
…… ……. …… …… ……
Exemplu PRODUS
CARTEZIAN
SELECT *
FROM angajati, comenzi;

SELECT *
FROM angajati CROSS JOIN comenzi;
Joncţiunea
•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 inegalitate
•Externă (outer join)
• La stânga
• La dreapta
• Completă (totala)
Tipuri de joncţiuni
Joncţiunea de egalitate şi
naturală
R1 ⋈R 2

JOIN (R1, R2, condiţie)


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 JONCTIUNE
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ă
Algebra relaţională
•Reprezintă 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
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
• 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 – R2
◦ MINUS (R1, R2)
Diferenţa

NU!
Clienti – Comenzi Clienti – Comenzi DE CE?

DA
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)
Intersecţia

Clienti  Comenzi
Alţi operatori
Diviziunea
Complementarea
Spargerea unei relaţii
Închiderea tranzitivă
Operatori ai calculului relational
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ă

EMITENTI
Simbol Cheie primară
Denumire
CUI Cheie candidata
Piata COTATII
Data_listarii
Simbol Cheie primară compusa
ISIN
Data_cot
Capital_social
Pret_Inchidere
Volum
http://www.bvb.ro/financialinstruments/markets/advancedsearch Pret_minim
Pret_maxim
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.

EMITENTI COTATII
Simbol Simbol Cheie externa
Denumire Data_cot
CUI Pret_Inchidere
Piata Volum
Data_listarii Pret_minim
ISIN Pret_maxim
Capital_social
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.
EMITENTI COTATII
Simbol Cheie primară Simbol Cheie primară compusa
Denumire Not Null Data_cot
CUI Cheie candidata, Not Null Pret_Inchidere Not Null
Piata Not Null Volum Not Null
Data_listarii Not Null Pret_minim Not Null
ISIN Cheie Candidata Pret_maxim Not Null
Capital_social
Alte restricţii de integritate
De domeniu
◦ Domeniul corespunzător unui atribut dintr-o tabelă trebuie să se
încadreze între anumite valori (CHECK);

Temporare
◦ Valorile anumitor atribute se compară cu nişte valori temporare
(rezultate din calcule etc.) (TRIGGER  verific stocul curent);

EMITENTI COTATII
Simbol Simbol
Denumire Data_cot >data_listarii
CUI Pret_Inchidere >=pret_min, <= pret_maxi,
Piata ‘REGS’, ‘RGBS’,’XMBS’ Volum >=0
Data_listarii Pret_minim >=0
ISIN Pret_maxim >=0
Capital_social >10000
Restricţiile de integritate
(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ă;
•CHECK
• elimină valorile care nu satisfac anumite cerinţe (condiţii) logice.
Exemplificare SQL-Oracle
Exemplificare SQL-Oracle
Grila 1
Într-o bază de date relaţională, fie relaţia R1. În urma aplicării unei
operaţii pe relaţia R1 se obţine o nouă relaţie R2, care conţine doar o
parte dintre atributele relaţiei R1 şi tupluri distincte. Precizaţi ce
operator al algebrei relaţionale realizează această operaţie:
a)produsul cartezian
b)diferenţa
c)reuniunea
d)selecţia
e)proiecţia
Grila 2
•În modelul de date relaţional pentru BD:
a)atributele care au rol în realizarea legăturilor între tabele se numesc
chei compuse
b)există noţiunea de restricţia entităţii
c)legăturile între tabele se descriu în LMD
d)nu există noţiunea de schema tabelei
e)selecţia şi existenţa sunt operatori din algebra relaţională
Grila 3
Restricţii de integritate ale modelului relaţional sunt:
a)de domeniu, entităţii
b)cheie unică, de aplicaţie
c)temporară, existenţială
d)selecţie, cheie primară
e)cheie externă, de actualizare
Grila 4
•Fie două tabele COMEZI şi FIRME fiecare având câte 20 de înregistrări. O
firmă poate da mai multe comenzi, o comandă trebuie dată de către o
singură firmă. Care din următoarele afirmaţii este adevărată:
a)Un left join între COMEZI şi FIRME nu poate returna acelaşi număr de
înregistrări ca un right join între FIRME şi COMENZI
b)Un full join între cele două tabele nu poate returna acelaşi număr de
înregistrări ca un left join între FIRME şi COMENZI
c)Produsul cartezian între cele două tabele nu returnează mai multe
înregistrări decât un full join între aceleaşi tabele
d)Un inner join între FIRME şi COMENZI poate returna acelaşi număr de
înregistrări ca un right join între aceleaşi tabele
e)Toate afirmaţiile de mai sus sunt false
Grila 5
•Specificaţi care dintre următorii operatori nu face parte din grupa
operatorilor standard din algebra relaţională:
a)selecţia
b)proiecţia
c)joncţiunea
d)produsul cartezian
e)cuantificatorul existenţial
Grila 6
• Se consideră tabela: produse (codp number(3), denp varchar2(25), um varchar2(3))
Comanda SQL:
SELECT DISTINCT codp, denp
FROM produse
WHERE codp > 100
ORDER BY denp;
implementează următorii operatori din algebra relaţională:
a) proiecţie şi joncţiune
b) selecţie şi intersecţie
c) selecţie şi reuniune
d) selecţie şi proiecţie
e) ordonare şi selecţie
Grila 7
•Printre operatorii algebrei relaţionale se regăsesc:
a)reuniunea, produsul cartezian, intersecţia, disjuncţia;
b)intersecţia, diviziunea, joncţiunea, conjuncţia;
c)produsul cartezian, selecţia, proiecţia, reuniunea;
d)joncţiunea, proiecţia, negaţia, reuniunea.
e)intersecţia, diviziunea, diferenţa, conjuncţia.
Grila 8
•În modelul relaţional de date:
a)proiecţia, joncţiunea şi închiderea tranzitivă sunt operatori din algebra
relaţională
b)atributele care au rol în realizarea legăturilor între tabele se numesc
chei compuse
c)legăturile între tabele se descriu în LMD
d)există noţiunea de schema relaţiei
e)există noţiunea de extensia relaţiei
CURSUL 5...
Baze de date relaţionale

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