Documente Academic
Documente Profesional
Documente Cultură
BAZE DE DATE
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
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.
Proiecţia
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
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
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
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