Sunteți pe pagina 1din 22

Baze de Date în Economie

Cursul 6
Modelul relaţional: Elemente de teoria
naivă a mulţimilor. Modelului conceptual
versus model logic. Algebra relaţională
1

Conf. dr. Dan-Andrei Sitar-Tăut


E-mail: dan.sitar@econ.ubbcluj.ro
Departamentul de Informatică Economică, et. 4, Birou 432
2

Cuprins
1. Elemente de teoria naivă a mulţimilor din
modelul relaţional
2. Transformarea modelului conceptual în
model logic
3. Operaţiile algebrei relaţionale
Elemente de teoria naivă a mulţimilor
3 din modelul relaţional
Domeniu = mulţimea valorilor cu care se operează într-un atribut.

Produs cartezian al unui ansamblu de domenii: D1, D2, …, Dn, mulţimea


di  Di
ansamblurilor ordonate de forman <d1, d2, …, dn> cu proprietatea
 D
i
& se notează D1 x D2 x …x Dn = i  1

<d1, d2, …, dn> = n-tuplu sau tuplu; n = aritatea

Exemplu: n=2, D1={0,1}, D2 = {a,b,c}


 
Relaţie – submulţime a produsului cartezian.
Exemplu: R={(0,a), (1,b)}
Membrii unei relaţii = tuple
Observaţii.
1. Finititudinea
2. Izomorfism: relaţii finite – tabele; gestiunea tabelelor
Atribut – coloana din tabel; pentru simplificare
atribut = nume atribut.
4
Schema relaţională – mulţimea atributelor din relaţie.
Descrierile relaţiilor
 Tabelar
REL (A1, A2,…, An) – Ai – atribute: intensia/extensia
Exemplu:
ORAS STAT POPULAŢIE (mii)
SAN DIEGO TEXAS 4.490
MIAMI OKLAHOMA 13.800
PITSBURG IOWA 509
BUFFALO WASHINGTON 831

ORAŞE_SUA (ORAŞ, STAT, POPULAŢIE)


 Printr-o funcţie
(BUFFALO, WASHINGTON, 831) se descrie:
μ(ORAŞ) = ’BUFFALO’
μ(STAT) = ’WASHINGTON’
μ(POPULAŢIE) = 831
Observaţii
1.5 Diferenţa dintre funcţii în modelul relaţional şi din matematică.
2. Diferenţa dintre descrierea tabelară şi funcţională:
(STAT, POPULAŢIE, ORAŞ) ≠ (ORAŞ, POPULAŢIE, STAT)
→ submulţimi ale produsului cartezian – ordinea contează.
Funcţie: ordinea nu contează:
μ(POPULAŢIE) = 831
μ(ORAŞ) = ’BUFFALO’
μ(STAT) = ’WASHINGTON’
3. Orice funcţie poate fi descrisă printr-un tabel finit şi invers, orice
funcţie poate descrie un tabel cu respectarea unor restricţii referitoare
la ordine.
4. Funcţiile se notează μ(x); x – numele atributului
5.  2 moduri de abordare:
a. prin algebra relaţională – operaţii algebrice pe atribute
b. prin calcul relaţional – aplicarea unor funcţii (predicate) asupra
tuplelor / domeniilor atributelor.
2. Transformarea modelului conceptual
6 în model logic
Exemplu: Modelul E-R a firmei de desfacere cu amănuntul.
Modelul conceptual – se descrie cu un ansamblu de scheme
relaţionale. Ansamblul schemelor relaţionale formează -
schema BD / schema relaţională a BD (intensia BD).
Instanţierea schemelor BD va forma conţinutul BD (extensia BD).
În Modelul E-R s-au evidenţiat 2 tipuri de entităţi:
1. statice – relaţii între obiecte
2. dinamice – relaţii între entităţi.
Entităţile statice – atributele se preiau direct de la obiectele
componente ale entităţii. Exemplu: Schema relaţională CLIENT
va avea atributele (CNUME, CADRESA, BALANTA) preluate
din entitate.
 Identificare în scheme relaţionale – chei. În schema relaţională
cheie = ansamblu de atribute. Exemplu DEPARTAMENT are
cheia NR_DEP.
Cheie străină – cheie din altă schemă relaţională. Exemplu:
7MANAGER nu are cheie → ANUME (NUMESAL - cheie străină).
Cheie surogat – Exemplu MARCA, CNP, MATRICOLA – unei
persoane
Observaţie. În cazul entităţii dinamice care leagă entităţile (E1, E2,…,
En):
 schema relaţională se obţine prin reuniunea tuturor schemelor
relaţionale; dacă 2 sau mai multe atribute au acelaşi nume, se
schimbă numele;
 tuplele schemei obţinute vor fi formate din tuplele tuturor
schemelor relaţionale care compun noua schemă.
Observaţie. Ca în cazul schemelor relaţionale → entităţilor statice –
cheia relaţiei => 2 condiţii pentru cheie:
 nu există 2 instanţieri din relaţie cu aceeaşi valoare a cheii
 nici o submulţime care formează cheia nu satisface prima
condiţie.
Exemplu: LIVREAZĂ(FNUME, PNUME)
LIVREAZĂ(MERE, IONESCU)
8 LIVREAZĂ(PERE, IONESCU)
LIVREAZĂ(MERE, POPESCU)
Se alege cheia pentru LIVREAZĂ perechea (FNUME, PNUME)

Observaţii legate de transcrierea relaţiilor.


1. Cheile depind de schema relaţională şi nu de instanţieri – semantica
problemei.
2. Anumite relaţii pot avea 2 sau mai multe chei. Exemplu DEPARTAMENT
poate avea NRDEP# sau DNUME
3. Ordinea dictată de cheia primară – chei auxiliare, chei candidat.
4. Reguli de alegere a cheilor:
a. Dacă o relaţie provine dintr-o entitate statică → cheia relaţiei = cheia
entităţii.
b. Dacă o relaţie provine dintr-o legătură / relaţie m:n, în particular 1:1,
cheia primară a relaţiei = combinaţie a cheilor entităţilor combinate.
c. Dacă o relaţie este de tip n:1, cheia primară se alege ca şi combinaţie /
una din cheile entităţilor care au intrat în relaţie astfel ca să satisfacă
condiţiile de cheie primară. Exemplu: CONDUCE, cheia primară
(ANUME, DNUME). Dacă managerii au nume diferite se poate folosi
cheia primară ANUME.
d. Dacă 2 sau mai multe entităţi au o cheie candidat comună – schema
relaţională se poate aduce la o singură schemă care asigură economie
9 de spaţiu şi timp de acces.
DEPARTAMANT DNUME NRDEP CONDUCE DNUME ANUME
CEREALE 12 CEREALE ION
LACTATE 31 LACTATE POP
CARNE 5 CARNE ANCA

DNUME NRDEP ANUME


CEREALE 12 ION
LACTATE 31 POP
CARNE 5 ANCA

Dangling relations – DNUME există în ambele relaţii. Ce se întâmplă dacă


există departament fără şef sau invers, şef de departament care n-are
departament? → tuple cu valori necunoscute => 2 metode de rezolvare:
1. Prin restricţia existenţială – Dacă o valoare a a atributului A al unui
tuplu din relaţia R trebuie să intre în relaţie cu un atribut B din relaţia S,
valoarea a trebuie să existe în atributul B.
a. avantaj – metodă de securitate – legături false. Exemplu: părinte –
copil.
10 b. dezavantaj – se poate restrânge domeniul de aplicabilitate a BD –
se elimină anumite tuple care ar trebui formate.
2. Folosirea valorii nule - ┴ - nu reprezintă nicio valoare – nu poate intra
în cheia primară.
DNUME NRDEP ANUME
VINURI 16 ┴
Operaţiile algebrei relaţionale
11
Algebra relaţională – are la bază teoria naivă a mulţimilor
(TNM) + operaţii specifice (native) ale teoriei relaţionale
(TR).

Operaţii fundamentale (de bază)


1. (TNM) Reuniunea – R, S de aceeaşi aritate→ relaţie care
conţine toate, tuplele – comune o singură dată: R U S,
UNION(R,S).
2. (TNM) Diferenţa - R, S aceeaşi aritate → relaţie care
conţine toate tuplele din R care nu sunt în S: R-S,
MINUS(R,S)
3. (TNM) Produsul cartezian – RxS, R aritate m şi S aritate
n → o relaţie de aritate m+n - primele m atribute din R şi
următoarele n din S, PRODUCT(R,S).
4. Proiecţia – Π – relaţiei R pe un ansamblu de atribute constă în:
 reducerea lui R la atributele respective
12 eliminarea tuplelor care se repetă
Notaţie i1,i2 ,...,, in R , PROJECT(R,S)
Exemplu: R(a,b,c,d,e) – cum se proiectează pe c,a?
5. Selecţia, Restricţia – predicat (funcţie logică) F, care are 3 categorii
de obiecte:
 operanzi (constante, atribute)
 operatori relaţionali: <, <=, >, >=, = , <>
 operatori logici:  , ^, NOT.
Selecţia prin F aplicat lui R, notat cu, σF ( R), o nouă relaţie cu tuplele
pentru care valoarea lui F este adevărată – RESTRICT(R,F).

Exemple.
R: S:
 A, C R
A B C ?RUS, R-S, , , σB=b(R),
RxS A B C
a b c
d a f b g a
c b d d a f

Operaţii auxiliare din algebra relaţională

Rolul
13 operaţiilor auxiliare
1. (TNM) Intersecţia: R  S, INTERSECT(R,S) – ansamblul tuplelor
din R şi S
R  S = R-(R-S)
R S = S-(S-R)
→ nu este operaţie de bază, se exprimă prin -
2. Cât – R cu schema R(A1, A2, … , An) şi sub-relaţia S cu S(Ap+1, … ,
An) este Q(A1, … , Ap) – tuple de aritate p astfel încât, concatenate

cu S dau tuplu din R. Notaţie R S sau DIVISION (R,S) → tuple de
aritate p astfel ca să conţină primele p componente din R cu
condiţia ca ultimele să fie din S.
T  R, V  (TxS )  R, Q  T V
1,2,..., p 1,2,..., p
Q = {( a1, a2, … , ap) | (ap+1, … , an) S, (a1, … , an) R}
  
Exprimarea cu diferenţa şi proiecţia:

Exemplu: R(4) a b c d S(2) R S(2)


a b e f 
e d c d
e c d a b
e d f
e f e d
3. Asociere, Uniune, Joncţiune (Join)
Calificare multi-atribut: R(A1, A2, … , An), S(B1, B2, … , Bm) şi predicatul
14 Q= Ai1 θ Bk1 α… α Aim θ Bkm,
unde θ – operator de comparaţie: =, >,<,>=,<=,<>, iar α – operator logic.

i. Teta join – Notaţie:


JOIN (R,S,Q)
R x S [Q]
Observaţie. JOIN = produs cartezian, selecţia conform predicatului.
Exemplu: Informaţii despre
CONTRACTANT (cod, banca, adresa)
şi obiectivele de investiţii
OBIECTIV_INVESTITIE(denumire, nr_cert_urb, adresa)
cu condiţia = contractantul şi proiectul la adrese diferite:
R = PROJECT (CONTRACTANT, cod, banca)
S = PROJECT(OBIECTIV_INVESTITIE, denumire, nr_cert_urb)
Rezultat = JOIN (R,S,OBIECT_INVESTITIE.sdresa<>CONTRACT.adresa).

ii. Join Natural: θ este operatorul = echijoin. Join natural: asocierea pe baza
atributelor cu acelaşi nume. Realizare:
 RxS
 Se proiectează coloanele comune, R.A şi S.A şi se notează atributele comune cu A
15
Notaţie JOIN(R,S)
Exemplu: Informaţii despre angajaţi şi departamente
Rezultat = JOIN (SALARIAT, DEPARTAMENT)

iii. Semijoin. Proiecţia JOIN(R,S) pe atributele lui R(A 1, A2, … , An) al JOIN.
Antisimetria.
Exemplu:
PERSOANA_FIZICA (nume, adresa, nr_CI) care investesc în agrement.
OB_INVEST(denumire, adresa, valoarea)
R=(SELECT(OB_INVEST, denumire=’cabana’ OR
denumire=’casa_vacanta’)
S= PROJECT(JOIN(PERS_FIZICA,R), nume,nr_CI)

iv. OuterJoin (Join extern): JOIN + tupluri care n-au corespondent completate cu NULL.
Outer stânga / dreapta – nesimetrică
Exemplu: Investitori inclusiv în activităţi agrement
R=(SELECT(OB_INVEST, denumire=’cabana’ OR denumire=’casa vacanta’)
Rezultat=OUTER(PERSOANA_FIZICA, R)
Expresiile algebrei relaţionale
16
Expresiile algebrei relaţionale = relaţii legate de operaţii
relaţionale
Reprezentare grafică = arborele expresiei = arborele algebric.
Rezultatul evaluării expresiei → evaluarea (rezultatul)
relaţiei. Relaţii echivalente – acelaşi rezultat.
Exemplu: 
VIN (NV, PODGORIE, PRODUCŢIE, ALCOOL)
CONSUMATOR (NC, NUME, ADRESA)
ABUZ (NC, NV, CANTITATE)
unde
NV – codul vinului
PRODUCTIE – anul producţiei
NC – codul consumatorului (CNP sau număr de carte de
identitate)
Cerere: Numele consumatorului & adresa - care a băut mai
PROJ(NUME, ADRESA)
17
 
JOIN(CONSUMATOR, NC)

PROJ(NC) CONSUMATOR(…)

 
 

JOIN (ABUZ, VIN, NV)

 
SELECT(ABUZ, SELECT(VIN,PODGORIE =”MURFATLAR” &
CANTITATE>10) PRODUCTIE=2010)
 
Exemple
18
Exemple
19
Exemple
20
21 Tematică laborator
Database Programming with SQL
 Section 2 – SELECT and WHERE
• 2-1 Columns, Characters, and Rows
• 2-2 Limit Rows Selected
• 2-3 Comparison Operators
 Section 3 - WHERE, ORDER BY, and Intro to
Functions
• 3-1Logical Comparisons and Precedence Rules
• 3-2 Sorting Rows
• 3-3 Introduction to Functions
22 Tematică laborator
Database Programming with SQL
 Section 4 - Single Row Functions Part I
• 4-1 Case and Character Manipulation
• 4-2 Number Functions
• 4-3 Date Functions

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