Baze de Date Radu Florin 2010-2011
-
Upload
oana-nicoleta-preda -
Category
Documents
-
view
58 -
download
2
Transcript of Baze de Date Radu Florin 2010-2011
-
qwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmrtyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmqwertyuiopasdfghjklzxcvbnmrtyuiopasdfghjklzxcvbnmqwertyuiopasdfghjkl
Departamentul de nvmnt laDistan i Formare Continu
Facultatea de tiine Economice
Coordonator de disciplin:Lect. univ. drd. Florin RADU
-
2Suport de curs nvmnt la distanMarketing , Anul I, Semestrul II
Prezentul curs este protejat potrivit legii dreptului de autor i orice folosire altadect n scopuri personale este interzis de lege sub sanciune penal
ISBN 978-9731955-04-92010-2011
Suport de curs nvmnt la distan Management, Anul I, Semestrul II
Suport de curs nvmnt la distan Management, Anul I, Semestrul II
Suport de curs nvmnt la distan
UVTBAZE DE DATE
-
3SEMNIFICAIA PICTOGRAMELOR
F= INFORMAII DE REFERIN/CUVINTE CHEIE
= TEST DE AUTOEVALUARE
= BIBLIOGRAFIE
= TIMPUL NECESAR PENTRU STUDIUL UNEI UNITIDE NVARE
= INFORMAII SUPLIMENTARE PUTEI GSI PEPLARFORMA ID
-
4CUPRINS - Studiu individual (S.I.)
MODUL 1. INTRODUCERE IN BAZELE DE DATE / pag. 6
Obiective / pag. 6UI.1. Concepte fundamentale privind bazele de date / pag. 7
1.1. Conceptul de baz de date / pag. 71.2. Utilizatorii bazei de date / pag. 9
UI.2. Modele de reprezentare a datelor / pag. 112.1. Modelul ierarhic / pag. 112.2. Modelul reea / pag. 132.3. Modelul relaional / pag. 142.4. Modelul obiectual / pag. 18
UI.3. Sisteme de gestiune a bazelor de date / pag. 213.1. Funciile unui SGBD / pag. 213.2. Arhitectura funcional a unui SGBD / pag. 253.3. Arhitectura operaional a unei aplicaii baze de date / pag. 27
Bibliografie / pag. 30
MODUL 2. ALGEBRA RELAIONAL / pag. 36
Obiective / pag. 36UI. 4. Caracterizarea general a limbajelor de programare / pag. 37
UI.5. Operatorii asambliti: Reuniunea, Intersecia, Diferena, Produsulcartezian / pag. 39
5.1. Reuniunea / pag. 395.2. Intersecia / pag. 405.3. Diferena / pag. 405.4. Produsul cartezian / pag. 41
UI. 6. Operatorii relaionali: Selecia, Proiecia, Jonciunea, Diviziunea/ pag. 43
6.1. Selecia / pag. 436.2. Proiecia / pag. 456.3. nlnuirea consultrilor / pag. 466.4. Jonciunea / pag. 486.5. Diviziunea / pag. 55
Bibliografie / pag. 67
MODUL 3. LIMBAJUL DE INTEROGARE RELAIONAL SQL / pag. 68
Obiective / pag. 69UI.7. Prezentare general; Elemente de baz ale interogrilor SQL / pag. 70
7.1. Prezentare general / pag.707.2. Elemente de baz ale interogrilor SQL / pag. 71
UI.8. Coloane expresii; Opiunea ORDER BY / pag. 79
-
58.1. Coloane expresii / pag. 798.2. Opiunea ORDER BY / pag. 80
UI.9. Operatorii LIKE, BETWEEN, IN / pag. 829.1. Operatorul BETWEEN / pag. 829.2. Operatorul LIKE / pag. 839.3. Operatorul IN / pag. 84
UI.10. Theta i echijonciunea / pag. 86
UI.11. Sinonime locale i jonciunea unei tabele cu ea nsi / pag. 89
UI.12. Subconsultri / pag. 91
UI.13. Funcii agregat: COUNT, SUM, AVG, MIN i MAX / pag. 9513.1. Funcia COUNT / pag. 9513.2. Funcia SUM / pag. 9613.3. Funcia AVG / pag. 9813.4. Funciile MAX i MIN / pag. 99
UI.14. Gruparea tuplurilor: clauza GROUP BY i clauza HAVING / pag. 10114.1. Clauza GROUP BY / pag. 10114.2. Clauza HAVING / pag. 103
Bibliografie / pag. 118
-
6MODUL IINTRODUCERE N BAZELE DE DATE
1. Cuprins2. Obiectiv general3. Obiective operaionale4. Dezvoltarea temei5. Bibliografie selectiv
Cuprins UI 1. Concepte fundamentale privind bazele de date: date
abstracte, modele de baze de date, independena datelor, limbaje de definirei manipulare a datelor n bazele de date
= 1 ore UI 2. Modele de reprezentare a datelor: modelul ierarhic,
modelul reea, modelul relaional i modelul obiectual
= 2 ore UI 3. Sisteme de gestiune a bazelor de date
= 1 ore
Obiectiv general: Dobndirea cunotinelor privind locul, roluli importana bazelor de date; dobndirea de cunotine privind modele dereprezentare a datelor
Obiective operaionale: nsuirea cunotinelor privindevoluia metodelor de stoacre a informaiilor; cunoaterea categoriilor depersonal implicat n crearea, dezvoltarea i exploatarea bazelor de date.nsuirea de cunotine specifice fiecrui domeniu: relaie, legturi,domeniu, tuplu, atibut, cmp, cheie primar, obiect
-
7UNITATEA DE NVARE 1CONCEPTE FUNDAMENTALE PRIVIND BAZELE DE DATE
1.1. Conceptul de baz de date
n cadrul oricrei ntreprinderi, datele constituie o resurs organizaional
crucial i n consecin ele trebuiesc gestionate similar altor active importante.
Fr date asupra funcionrii interne i asupra mediului extern ntreprinderile nu ar
putea s se menin n competiie sau s reueasc n afaceri. Volumul acestor sate
este n continu cretere. Organizarea i memorarea acestor date pe suporturi
tehnice adresabile (HDD, FDD, CD) este mult facilitat de faptul, c n
majoritatea cazurilor, se opereaz cu structuri de date.
Determinarea structurilor de date i a legturilor ntre realizrile acestora
nu este o activitate deloc uoar. Ea presupune utilizarea unor modele de date i
respectiv a unor formalisme de modelare a datelor i are ca obiectiv definirea
structurilor de date de gestionat n memoria secundar.
Organizarea datelor pe memoria extern a parcurs n timp mai multe etape:
fiiere, fiiere cu legturi i a culminat cu bazele de date actuale. Un fiier este un
ansamblu de nregistrri fizice, omogene din punct de vedre al coninutului i al
prelucrrii. Fiierele conin n cea mai mare parte elemente comune iar asocierile
dintre date nu sunt prea bine exploatate dat fiind faptul c fiierele sunt utilizate
izolat i independent unele de altele. Soluia fiierelor a fost specific anilor 60-
70, dar mai sunt ntlnite i n prezent n cadrul unor aplicaii economice care
folosesc limbaje clasice i ndeosebi limbajul COBOL.
Dominat n prezent este o alt soluie, care const n organizarea datelor
n baze de date. O baz de date este o colecie organizat de date folosit n
scopul de a modela un anumit tip de organizaie sau proces organizaional.
n gestiunea bazelor de date exist dou tipuri de baze de date:
operaionale i analitice.
Bazele de date operaionale constituie suportul a numeroase companii,
instituii i organizaii din ntreaga lume. Aceast categorie de baze de date este
utilizat n cazul prelucrrilor on-line a tranzaciilor (OLTP On Line Transaction
Processing), adic n acele situaii n care este necesar colectarea, modificarea i
ntreinerea zilnic a bazelor de date. Datele stocate ntr-o baz de date
operaional sunt date de tip dinamic, ceea ce nseamn c se modific n
permanen i reflect ntotdeauna informaii actualizate la zi.
Fdefiniia bazei dedate
-
8Contrar acestora, bazele de date analitice sunt folosite n special n
prelucrrile analitice on-line (OLAP On Line Analitical Processing), cnd este
necesar stocarea i urmrirea datelor istorice i dependente de timp. O baz de
date analitice este de un real folos atunci cnd este necesar urmrirea tendinelor,
vizualizarea datelor statistice aferente unei perioade mai lungi de timp sau
efectuarea de previziuni tactice sau strategice de afaceri. Acest tip de baz de date
stocheaz date statice, ceea ce nseamn c datele respective nu se modific
niciodat (sau foarte rar). Informaiile culese dintr-o baz de date analitic reflect
o fotografie a datelor la un anumit moment de timp.
Bazele de date analitice utilizeaz frecvent bazele de date operaionale ca
surs principal de date, deci poate exista o oarecare asociere ntre cele dou
tipuri; cu toate acestea, bazele de date operaionale i analitice satisfac tipuri de
necesiti foarte concrete privind prelucrarea datelor.
1. Care sunt etapele prin care a trecut organizarea datelor?(vezi pag. 31-35)
2. Ce este o baz de date analitic? (vezi pag. 31-35)
3. Ce este o baz de date? (vezi pag. 31-35)
4. Ce este o baz de date operaional? (vezi pag. 31-35)
5. Ce reprezint OLTP? (vezi pag. 31-35)
-
96. Ce reprezint OLAP? (vezi pag. 31-35)
7. Exist legtur ntre bazele de date operaionale i cele analitice?(vezi pag. 31-35)
1.2. Utilizatorii bazei de date
O baz de date poate avea unul sau mai muli utilizatori. n funcie de rolul
acestora distingem trei clase de utilizatori ai bazelor de date:
Programatorii de aplicaii, sunt cei care scriu programele ce utilizeazbazele de date. Indiferent de limbajul de programare utilizat (COBOL, C,
PASCAL), aceste programe asigur accesul la datele stocate n baza de date,
adugarea de noi date, tergerea sau modificarea datelor existente. Aceste funcii
se execut printr-o interogare adresat SGBD-ului.
Utilizatorii finali, cuprind dou categorii de utilizatori: Utilizatorul expert, informatician, cunoscnd limbajele deprogramare i limbajele bazelor de date;
Utilizatorul neinformatician, care nu este specialist n baze dedate.
Utilizatorii finali interacioneaz cu baza de date de la o staie de lucru sau
de la un terminal, utiliznd fie una din aplicaiile menionate la punctul precedent,
fie o interfa care face parte integrant din SGBD.
Majoritatea SGBD-urilor furnizeaz cel puin un procesor de limbaj de
interogare interactiv, care permite utilizatorului s adreseze SGBD-ului comenzi
de nivel nalt (ca SELECT, INSERT etc). Limbajul SQL este un limbaj tipic de
interogare. Unele sisteme ofer utilizatorilor si alte tipuri de interfee n care nu
pot adresa o comand explicit (ca SELECT), dar pot s aleag o comand dintr-
un meniu sau s completeze rubrici n structuri predefinite. Aceste meniuri sau
interfee grafice sunt mai uor de folosit de utilizatorii care nu au cunotine
formale n tehnologia informaiei.
F
F
-
10
Administratorul BD, care asigur administrarea unitar a datelor dinbaza de date.
Funciile asigurate de ctre administratorul bazei de date sunt: Definirea schemei conceptuale (n care sunt incluse i regulile care s
asigure integritatea datelor).
Definirea schemei interne. Definirea schemei externe (sau sprijinirea utilizatorului final n
definirea acestora).
Definirea procedurilor de salvare i restaurare. Definirea utilizatorilor bazei de date i a drepturilor de acces (la baza de
date sau la anumite obiecte ale bazei de date).
Supervizarea performanelor i asigurarea evoluiei bazei de date, etc.
8. Cine sunt utilizatorii bazei de date? (vezi pag. 31-35)
9. Care sunt funciile asigurate de administratorul bazei de date?(vezi pag. 31-35)
F
-
11
UNITATEA DE NVARE 2MODELE DE REPREZENTARE A DATELOR N BAZELE DE DATE
2.1. Modelul ierarhic
Primul model utilizat n bazele de date este modelul ierarhic, care are la
baz o structur arborescent, n care un nod printe poate avea mai multe noduri
fiu, n timp de un nod fiu nu poate avea dect un singur nod printe. Schema
ierarhiei are un singur nod rdcin, iar pentru reprezentarea relaiilor de tipul m:n
ntr-o structur de baz de date ierarhic se admite duplicate pentru instanele
nregistrrilor fiu.
Pentru a realiza reprezentarea acestui model se folosesc diagramele de
structur care sunt formate din dou elemente principale: dreptunghiuri pentru
tipurile de nregistrri i linii pentru legturi. Aceste diagrame se aseamn cu
o structur arborescent, locul liniilor fiind luat de tipurile de nregistrare.
Pentru a pune n eviden legturile care pot exista ntre tipurile de
nregistrri, se folosesc urmtoarele reprezentri grafice:
relaia 1:1 se consider tipurile de nregistrri CONTRIBUABIL iROL. ntre aceste dou tipuri de nregistrri exist urmtoarea legtur: orice
contribuabil aflat n evidena administraiei financiare are deschis un singur rol,
iar fiecare rol deschis la administraiei nu aparine dect unui singur contribuabil.
Reprezentarea grafic a acestei legturi este urmtoarea:
relaia 1:n se consider tipul de nregistrri COMAND i CLIENT.ntre aceste tipuri de nregistrri exist urmtoarea legtur: un client emite mai
multe comenzi, n timp ce o comand este emis de un singur client.
Reprezentarea grafic a acestei legturi este urmtoarea:
relaia m:n - se consider tipul de nregistrri COMAND iPRODUSE. ntre aceste tipuri de nregistrri exist urmtoarea legtur: o
comand poate conine mai multe produse, iar un produs poate fi inclus n mai
multe comenzi. Reprezentarea grafic a acestei legturi este urmtoarea:
CONTRIBUABIL ROL
CLIENT COMAND
COMAND PRODUSE
F
F
F
-
12
O baz de date ierarhic este constituit dintr-un grup de nregistrri
interconectate prin intermediul unor legturi. O nregistrare reprezint o colecie
de cmpuri, fiecare cmp coninnd o singur valoare, iar prin legtur se nelege
o asociere ntre cele dou cmpuri. Fiecare tip de nregistrare din diagrama de
structur are asociat n baza de date un anumit numr de realizri, ceea ce
nseamn c pentru fiecare tip de nregistrare printe pot exista nici una, una sau
mai multe nregistrri ale tipului de nregistrare fiu. De exemplu, un anumit client
nu a emis nici o comand.
Exemplu: Se consider o baz de date cu informaii despre studenii i
specializrile unei faculti. O specializare are mai muli studeni, n schimb, un
student nu poate urma dect o singur specializare. Reprezentarea modelul
ierarhic al exemplului este prezentat mai jos:
n acest exemplu, tipului de nregistrare printe SPECIALIZARE i
corespund patru nregistrri: (CIG, Contabilitate), (FB, Finane), (MG,
Management) i (MK, Marketing). Prima nregistrare, (CIG, Contabilitate) este
printe pentru (120, Popa Dan, Vaslui), care este o realizare a tipului de entitate
STUDENI, a doua nregistrare nu are nregistrri fiu, a treia nregistrare are doi
fii (322, Radu Ioana, Arad) i (187, Vlad Andrei, Iai), n timp ce ultima
nregistrare are un singur fiu (562, Sima Ileana, Titu).
10. Enumerai modelele de descriere a datelor. (vezi pag. 31-35)
F
-
13
11. Care sunt tipurile de relaii folosite n modelul relaional?(vezi pag. 31-35)
12. Ce este o baz de dat ierarhic? (vezi pag. 31-35)
2.2. Modelul reea
Este un model care are la baz o structur de tip reea. Acest model este
oarecum similar cu modelul ierarhic, n sensul c un nod printe poate avea mai
muli fii, deosebirea constnd n faptul c un nod fiu poate avea mai muli prini.
Ca i modelul ierarhic i modelul reea folosete diagramele de structur, care se
aseamn cu un graf, nodurile fiind nlocuite de tipurile de nregistrare.
Reprezentarea grafic a legturilor care pot exista ntre tipurile de nregistrri
(legturi 1:1, 1:n, n:m) este similar modelului ierarhic.
Exemplu: Se consider o baz de date cu informaii despre studeni,
specializarea urmat de acetia i bursele pe care acetia le primesc. O specializare
are mai muli studeni, n schimb, un student nu poate urma dect o singur
specializare; bursa poate fi obinut de mai muli studeni, n schimb, un student
poate obine o singur burs.
Reprezentarea modelul reea al exemplului este realizat n cele ce
urmeaz:
F
-
14
n acest exemplu, tipului de nregistrare printe SPECIALIZARE i
corespund patru nregistrri: (CIG, Contabilitate), (FA, Finane), (MG,
Management) i (MK, Marketing), tipului de nregistrare BURSE trei realizri
(Studiu, 1.200.000), (Social, 1.000.000) i (Merit, 1.900.000), iar tipului de
nregistrare STUDENI patru realizri (120, Popa Dan, Vaslui), (322, Radu
Ioana, Arad) , (187, Vlad Andrei, ) i (562, Sima Ileana, Titu). nregistrrile (CIG,
Contabilitate) SPECIALIZARE i (Studiu, 1.200.000) BURSE sunt prini
pentru (120, Popa Dan, Studiu) STUDENI. nregistrarea (FA, Finane) nu are
nregistrri fiu. nregistrarea (Social, 1.000.000) BURSE i (MG,
Management) SPECIALIZARE sunt prini pentru (322, Radu Ioana, Social).
Realizarea (187, Vlad Andrei, ) are drept printe (MG, Management), iar
nregistrarea (562, Sima Ileana, Merit) este copilul realizrilor (MK, Marketing) i
(Merit, 1.900.000).
13. Reprezentarea grafic a legturilor care pot exista ntre tipurile denregistrri (legturi 1:1, 1:n, n:m) n modelul reea este similarmodelului ierarhic? (vezi pag. 31-35)
2.3. Modelul relaional
Modelul relaional a fost introdus de E. F. Codd i reprezint astzi cel mai
utilizat model pentru gestionarea bazelor de date.
Modelul are la baz conceptul de relaie definit n teoria matematic a
mulimilor ca fiind o submulime a produsului cartezian al mai multor mulimi: R
a M1 x M2 x x Mn.Familia de mulimi pe care este definit relaia se numete domeniu, atunci
cnd M1 = M2 = = Mn se spune c relaia este omogen. Numrul n se numete
gradul relaiei, un element al relaiei t = (m1, m2, , mn) se numete tuplu, iar
numrul de tupluri indic cardinalitatea relaiei.
Schema unei relaii este format din numele relaiei, atributele acesteia i
restriciile de integritate.
Domeniul reprezint mulimea tuturor valorilor posibile care definesc o
anumit proprietate a unui obiect. Atributul reprezint mulimea valorilor
F
-
15
existente la un moment dat n coloana pe care acesta o desemneaz n cadrul unei
relaii. ntr-o relaiei pot exista mai multe atribute care s ia valori n acelai
domeniu.
Relaia STUDENI se scrie n felul urmtor
Relaiile se prezint sub forma unor tabele, supuse urmtoarelor restricii:
- fiecare coloan din tabel conine acelai fel de valori;
- n tabel ordinea liniilor nu este stabilit i n acelai timp nu se admit
valori duplicate;
- orice valoare este un numr sau un ir de caractere (nu are cum s fie un
ansamblu);
- orice coloan este identificat printr-un nume care reprezint atributul
relaiei.
O baz de date, privit din punct de vedere al modelului relaional, este
vzut ca o colecie de tabele (relaii), n care fiecare coloan reprezint un atribut
distinct, iar fiecare rnd, un tuplu distinct.
Tuplurile unei relaii se pot identifica n mod unic prin intermediul
valorilor unuia sau mai multor atribute, care joac rolul de cheie primar a relaiei
respective.
Orice relaie posed cel puin o cheie. Cnd aceast cheie este alctuit
dintr-un singur atribut, poart numele de cheie simpl, iar atunci cnd este format
din mai multe atribute ea se numete cheie compus.
Cheia primar a unei tabele este un atribut sau un grup de atribute care
permite identificarea fr ambiguitate a fiecrui tuplu din tabel. La alegerea unei
astfel de chei, administratorul bazei de date trebuie s aib n vedere criterii prin
care s asigure identificarea efectiv a tuplurilor (lungime, natur).
F
-
16
Cheia primar trebuie s verifice urmtoarele trei restricii:
- unicitatea: o cheie identific un singur tuplu al relaiei;
- compoziia minimal: atunci cnd cheia primar este compus, nici un
atribut cheie nu poate fi eliminat fr distrugerea unicitii tuplului n cadrul
relaiei;
- valorile non-nule: valorile atributului sau ale ansamblului de atribute care
desemneaz cheia primar sunt ntotdeauna specificate, deci nenule; nici un
atribut din compoziia cheii primare nu poate avea valori nule.
Dac ntr-o relaie exist mai multe combinaii de atribute care confer
unicitatea tuplului, acestea sunt denumite chei candidate. Atunci cnd o cheie
candidat nu este cheie primar este considerat cheie alternativ (secundar).
Legturile ntre tuplurile din relaii diferite se realizeaz prin atribute sau
combinaii de atribute numite chei strine (externe).
Reflectnd un aspect din realitate, relaiile se spun unor restricii, ce pot fi
de dou feluri:
restricii de integritate depind de semantica valorilor domeniilor iimpun relaiilor s se supun regulilor:
- integritatea entitii valorile cheii primare trebuie s fie diferite de zero,
pentru c altfel, cheia respectiv nu va mai fi identificator;
- integritatea referirii valorile unei chei externe trebuie s refere tuplurile
unei alte relaii.
alte restricii se aplic asupra domeniilor i reflect anumite corelaiide ordin valoric (egalitate, inegalitate).
Avantajele modelului relaional n comparaie cu celelalte tipuri de modele
sunt:
- independena sporit a programelor de aplicaie fa de modul de
reprezentare intern a datelor i de metodele de acces la date;
- definirea unei structuri conceptuale optime, minimaliznd redundana
datelor i erorile la actualizare;
- utilizarea unor limbaje procedurale bazate pe algebra relaional i a unor
limbaje neprocedurale care contribuie la mbuntirea comunicrii dintre sistem
i neinformaticieni.
14. Din ce este format schema unei relaii? (vezi pag. 31-35)
-
17
15. Ce este domeniul? (vezi pag. 31-35)
16. Ce este atributul? (vezi pag. 31-35)
17. Care sunt restriciile la care sunt supuse relaiile? (vezi pag. 31-35)
18. Ce este o cheie primar? (vezi pag. 31-35)
19. Care sunt restriciile pentru cheie primar? (vezi pag. 31-35)
20. Care sunt avantajele modelului relaional? (vezi pag. 31-35)
-
18
2.4. Modelul obiectual
Dei n prezent cel mai utiliza model este modelul relaional, el nu
permite: descrierea unor structuri de date complexe (documente electronice, date
n format multimedia); partajarea i reutilizarea structurilor de date; declararea
prelucrrilor aferente structurilor de date (datele sunt descrise separat de
prelucrri). Rspunsul la astfel de cerine l constituie modelul orientat obiect.
Modelarea orientat obiect se bazeaz pe urmtoarele concepte: obiect,
abstractizare, ncapsulare, motenire, polimorfism.
Obiectul este definit ca o entitate cu o identitate proprie, caracterizat
printr-o stare i un comportament. Orice entitate a lumii reale este un obiect, i
invers, orice obiect reprezint o entitate a realitii. Obiectele pot comunica ntre
ele prin intermediul mesajelor.
Identitatea unui obiect este proprietatea acestuia care l distinge de alte
obiecte, ea fiind o adres logic invariabil. Dac n modelul relaional datele sunt
identificate prin valorile cheilor primare definite de utilizato, n modelul orientat
obiect, identificarea obiectelor este fcut automat de sistem la crearea acestora i
este transparent utilizatorului. Dou obiecte O1 i O2 sunt identice (O1==O2) dac
au acelai identificator; n schimb dou obiecte sun egale (O1=O2) dac au
aceleai valori (O1==O2, implic O1=O2, reciproca nefiind valabil).
Starea unui obiect este definit de valorile atributelor sale (realizrile). Un
atribut se definete printr-un nume i poate lua valori elementare (numeric,
alfanumeric) sau complexe (referine spre alte obiecte).
Exemplu: Clientul CL1: Cod = 678
Denumire = S.C. N&L
Localitate = Trgovite
Comanda CDA1: Numr = 17865
Data = 10/12/2003
CotaTVA = 19%
Client = CL1.
Comportamentul unui obiect este definit ca un set de operaii aplicate
obiectului respectiv. Operaiile unui obiect reprezint modalitile de rspuns la
mesajele primite din exterior de obiectul respectiv; ele sunt de regul proceduri
sau funcii ce acioneaz asupra obiectului respectiv.
-
19
Abstractizarea este procesul prin care obiectele care au aceleai atribute i
comportament similar sunt grupate n tipuri abstracte de obiecte numite i clase.
Obiectele devin astfel instanieri (realizri) ale claselor; n timp ce obiectele
descriu entiti ale realitii, clasele sunt reprezentri abstracte ale acestor entiti.
Exemplu: Client, Comand, Student.
ncapsularea const n capacitatea obiectelor de a conine la un loc att
date ct i operaii, dar numai o parte a acestora este vizibil din exterior. Se poate
spune c n felul aceste obiectele apar ca nite cutii negre, care ascund detaliile
de implementare, ele oferind o interfa simpl de rezolvare a unei probleme.
Motenirea este procesul prin care toate atributele i metodele vizibile ale
unei clase (numit i clas se baz) sunt preluate n mod automat de o alt clas
nrudit cu aceast (numit i subclas sau clas derivat). Clasele derivate pe
lng acestea pot conine i atribute sau metode specifice. Motenirea se constituie
ca o cale de ncurajare a partajrii i reutilizrii structurilor de date; prin
intermediul ei se pot exprima relaii deosebit de importante ntre clase, cum ar fi:
clasificarea, generalizarea sau specializarea.
Exemplu: Se consider clasa PERSOANA definit prin atributele publice (vizibile
din exterior):
CNP, NumePrenume, DataNaterii, Sex
i metoda public
ReturneazVrsta(An).
Din clasa PERSOANA pot fi derivate clasele ANGAJAT i STUDENT,
de acelai fel cu ea, fiecare student angajat fiind descris prin CNP, nume i
prenume, data naterii, sex i vrst, calculat n funcie de anul naterii.
STUDENT poate conine ca atribute specifice NumrMatricol, AnStudiu iar ca
metod proprie MediaGeneral, n timp ce clasa ANGAJAT poate fi descris prin
atributele proprii Marca, DataAngajrii i metoda ReturneazVechime().
PERSOAN
ANGAJAT STUDENT
-
20
Polimorfismul reprezint posibilitate unui obiect, instan a unei clase, de a
rspunde n mod diferit la primirea aceluiai mesaj. Poate fi asigurat n dou
variante:
- redefinirea metodelor motenite n clasele derivate;
- crearea unor metode cu acelai nume sar cu parametri diferii
(suprancrcarea unei metode).
Polimorfismul mrete flexibilitatea modelului orientat obiect de a
reprezenta ct mai sintetic realitatea.
21. Care sunt conceptele pe care se bazeaz modelarea orientatobiect? (vezi pag. 31-35)
-
21
UNITATEA DE NVARE 3SISTEMUL DE GESTIUNE AL BAZELOR DE DATE
O baz de date este un ansamblu organizat i structurat de date. Acest
ansamblu trebuie s permit o reprezentare fidel a datelor cu minim de
constrngeri. SGBD-ul este un instrument care permite o astfel de organizare i
manipulare a datelor. Este un ansamblu de programe care permite descrierea,
memorarea, manipularea i restaurarea datelor pentru a asigura securitatea
acestora. Se numete aplicaie baz de date sau sistem de baz de date un
ansamblu de programe construite n jurul unei baze de date i integrnd un SGBD
pentru gestiunea informaiilor.
3.1. Funciile unui SGBD
n primul rnd trebuie menionate funciile eseniale, adic cele pentru care
SGBD-ul este conceput. Ele sunt n numr de patru: descrierea datelor,
introducerea, extragerea/interogarea i actualizarea.
Descrierea datelor este acea parte care permite, nainte de introducerea
datelor, de a defini numele acestor date, structura i coninutul lor. De exemplu
baza de date a unei biblioteci comport un ansamblu de date referitoare la cri.
nainte de a putea nregistra aceste date, trebuie definit cu precizie ansamblul
informaiilor care se dorete a fi administrat cu privire la aceste cri: numrul
(cota), titlul, numrul de exemplare, etc. Trebuie, de asemenea, estimat mrimea
sau cel puin s fie definit mrimea maxim admis: 30 caractere pentru titlu, 5
pentru numr, etc.
Odat definite structurile, funcia de introducere permite tuturor
utilizatorilor inserarea de date n baz. Aceast funcie de introducere trebuie, n
plus, s asigure toate controalele posibile, al acestor date. n cazul bibliotecii,
SGBD-ul trebuie s verifice dac numrul crii este n forma cerut, dac
mrimea titlului nu depete numrul maxim de caractere prevzut, dac numrul
de exemplare este un numr ntreg pozitiv, etc.
Extragerea datelor desemneaz toate operaiile regulate sau punctuale, de
cutare i de ieire pe ecran, pe suport de hrtie sau pe un alt suport, n ntregime
sau doar n parte a informaiilor din baza de date. Se va putea, de exemplu, s se
extrag toate crile care sunt scrise de un anumit autor sau toate crile aprute n
colecia Baze de date.
F
-
22
n fine, funcia de actualizare trebuie s asigure modificare sistematic a
informaiilor pe msur ce acestea evolueaz. La fiecare cumprare a unei cri,
trebuie modificat numrul de exemplare al titlului corespunztor din baza de date.
Pentru c datele sunt partajate de ctre mai multe aplicaii, dezvoltarea
funciilor descrise anterior, antreneaz i alte necesiti.
Punerea n comun a unui ansamblu de date are ca i consecin necesitatea
de a prevedea controlul accesului la date. Exist dou aspecte legate de protecia
datelor. Primul privete confidenialitatea: informaia nu poate fi cunoscut de
toi. Pentru fiecare tip de informaie trebuie stabilit lista persoanelor sau a
grupurilor autorizate a le consulta. Al doilea aspect se refer la integritate:
informaia nu poate fi modificat de toi. n acest caz, se convine la definirea unui
cerc de persoane, n general foarte mic, abilitate s actualizeze informaia. SGBD-
ul trebuie s permit personalizarea accesului la baza de date. Trebuie deci s se
poat identifica utilizatorii i controla aceast identificare, ceea ce se cheam
autentificarea accesului. Dup caz, protecia se poate face la mai multe nivele:
accesul la ntreaga baz, la o parte din ea sau la un singur element al bazei.
Protecia datelor este unul din aspectele unei funcii destul de importante
care este securitatea bazei de date. La aceast funcie se adaug i funciile de
rezisten n cazul unor pene, pe care trebuie sa le furnizeze SGBD-ul. Un
program nu poate mpiedica n totalitate apariia incidentelor sau a problemelor
majore. Totui, el trebuie s fie n msur s furnizeze mecanisme care s
faciliteze recuperarea datelor n cazul n care apar probleme grave. Bazele de date
sunt utilizate pentru a evita redundana informaiilor stocate. Uneori, pentru a
minimiza consecinele legate de eventualele probleme ce pot aprea, este necesar
efectuarea de salvri ale bazei de date. Aceste salvri nu sunt nimic altceva dect
date redundante, dar, n acest caz duplicarea informaiilor este controlat de
SGBD.
SGBD-ul este dedicat manipulrii datelor. Pentru aceasta trebuie s asigure
un acces optimal la date. Dincolo de organizarea fizic a datelor, SGBD-ul
trebuie s faciliteze cutarea acestora.
n aceeai ordine de idei, SGBD-ul trebuie s faciliteze accesul la date
pentru toate programele, dar i pentru toate categoriile de utilizatori. Pentru
aceasta, el trebuie s furnizeze instrumentele care s permit interfaarea
comunicarea SGBD-ului cu alte programe. Trebuie oferit un acces direct la date
-
23
sub o form compatibil cu categoriile de utilizatori, de exemplu o interfa
grafic pentru nespecialiti, un limbaj de acces puternic pentru informaticieni.
O alt funcie important este controlul concurenei. ntr-adevr o baz de
date trebuie s permit accesul simultan al mai multor utilizatori, fr nici un fel
de incident. S lum exemplu unui sistem de rezervare a locurilor pentru cursele
aeriene, fondat pe o baz de date. Aceasta trebuie s permit alocarea fiecrui loc
unei singure persoane i numai uneia. O agenie conectat la baza de date
respectiv, ntreab dac a mai rmas un loc liber pentru zborul 747. I se rspunde
c a mai rmas unul singur. O alt agenie pune imediat aceeai ntrebare, nainte
ca prima agenie s fi confirmat interesul su pentru locul rmas. Locul este nc
disponibil. Prima agenie l-a rezervat. A doua, de asemenea, a ntrebat. Se produce
n acest caz o problem zis de acces concurent pe care SGBD-ul trebuie s o
previn.
Realizarea unei baze de date are drept consecin punerea n comun i
partajarea unui ansamblu de informaii. Aceast punere n comun trebuie s
respecte dou principii de independen: respectiv independena fizic i
independena logic.
Independena fizic desemneaz principiul conform cruia un program
care acceseaz datele din baz, trebuie s manipuleze aceste date ntr-un mod
abstract, independent de organizarea lor fizic. Independena logic caracterizeaz
accesul simultan al diferiilor utilizatori sau programe la aceeai baz de date.
Fiecare program trebuie s poat lucra doar asupra prii de date care dorete.
Pentru aceasta la realizarea programului se vor folosi doare datele utile acestuia.
Trebuie s se poat utiliza pentru calificarea acestor date, termeni care sunt proprii
programului, eventual diferii de cuvintele care vor fi utilizate n alte programe
sau de ali utilizatori pentru a desemna aceleai date. Mecanisme precum sub-
schema n cazul bazelor de date reea sau vederile n cazul bazelor de date
relaionale permit ceast independen logic.
22. Care sunt funciile unui SGBD? (vezi pag. 31-35)
F
-
24
23. Ce presupune descrierea datelor? (vezi pag. 31-35)
24. n ce const extragerea datelor? (vezi pag. 31-35)
25. Ce implic protecia datelor? (vezi pag. 31-35)
26. Care sunt cele dou principii de independen? (vezi pag. 31-35)
-
25
3.2. Arhitectura funcional a unui SGBD
Un SGBD este format din diferite module fiecare avnd n sarcin una sau
mai multe din funciile descrise anterior.
Figura 1.1. Arhitectura funcional a unui SGBD
Ansamblul acestor module constituie puntea de legtur ntre baza de date
stocat pe unul sau mai multe discuri magnetice i ansamblul utilizatorilor. La cel
mai nalt nivel SGBD ul conine un ansamblu de instrumente administrnd
comunicarea direct cu utilizatorii. n funcie de SGBD, oferta n termeni de
interfee este mai mult sau mai puin bogat. Editorii de SGBD-uri tind s propun
diferite limbaje de acces la baza de date, adaptate gradului de competen sau
nevoilor categoriilor de utilizatori desemnai s lucreze cu datele, interfee
interactive dispun de instrumentele necesare punerii n legtur a programelor de
acces la date scrise n limbaje de programare clasice cu baza de date.
Instrumentele respective permit munca cu datele coninute n baza de date.
SGBD-ul ofer, n plus, o interfa care permite de a aciona asupra structurii
bazelor de date i/sau asupra aspectelor tehnice, cum ar fi optimizarea bazelor,
configurarea lor. Aceast interfa este numit interfaa de administrare. Ea este
rezervat, n general, informaticienilor dau utilizatorilor foarte avizai. Este
instrumentul de munc privilegiat al administratorului bazei de date.
SGBD SGBD Interfaa utilizator Interfaa de administrare
SGF SGBDGestiunea fiierelor Mecanisme specifice
SGBDGestiunea acceselor
SGBDGestiunea tranzaciilor
SGBDGestiunea discurilor
Discuri
F
-
26
Indiferent care ar fi interfaa de comunicare aleas pentru a accede la baza
de date, trebuie s existe un drept de acces la aceasta din urm. Drepturile sunt
atribuite de administrator i se concretizeaz ntr-o identificare (nume utilizator) i
o autentificare (parol). Modulul de gestiune a acceselor are n sarcin aceste
controale. El asigur n acelai timp i controlul integritii.
Altfel spus, el protejeaz datele verificnd dat toate actualizrile respect
un ansamblu de reguli numite constrngeri de integritate. Se mpiedic
modificrile care violeaz aceste constrngeri i avertizeaz utilizatorul de
problemele ntlnite. Tipurile de constrngeri admise de un SGBD vor fi descrie
mai trziu. n fine modulul de gestiune a acceselor asigur optimizarea acestora.
Astfel, n majoritatea SGBD-urilor, accesul la date este formulat n limbaje
evoluate precum SQL (Structured Query Language).
Modulul de gestiune a tranzaciilor este indispensabil pentru a asigura, n
acelai timp, buna execuie a acceselor simultane i pentru a realiza aciunile care
vor permite, n caz de pan, recuperarea datelor n cea mai bun stare posibil.
Rspunsul editorilor de SGBD-uri la aceste dou nevoi a fost cvasi unanim:
punerea la punct a unui mecanism numit tranzacie care permite definirea
ansamblului de executat totul sau nimic asupra bazei de date. Astfel, se asigur
c utilizatorii pot lucra simultan fr conflicte: cererea disponibilitii unui loc n
avion i rezervarea sa trebuie s fac pare din aceeai tranzacie. Prin acelai
mijloc, n caz de pan, nu se reia dect tranzaciile corect executate, adic
tranzaciile terminate i valide.
Toate modulele descrie pn acum sunt parte component a SGBD.
Totui, SGBD-ul nu este n relaie direct cu baza de date. Dup cum am vzut
baza de date este constituit dintr-un ansamblu de fiiere, mbogite cu structuri
zise de acces. Aceste fiiere sunt, n general, administrate de sistemul de gestiune
al fiierelor (SGF) care face parte din sistemul de operare al calculatorului: Unix,
Windows. Altfel spus, SGBD utilizeaz SGBD-ul xxx, dar poate, n anumite
cazuri, pune la dispoziie mecanisme suplimentare de organizare i acces la datele
stocate n aceste fiiere.
Ultimul strat reprezentat n figur nu este intern SGBD. El reprezint
sistemul de gestiune al intrrilor-ieirilor al sistemului de operare. El permite
convertirea comenzilor scrise n straturile superiore n ordinea citire, scriere,
deplasare i poziionare a capetelor pe discuri. Realizeaz, de asemenea, operaiile
necesare pentru cutarea i actualizarea datelor. De fapt, baze de date este stocat
-
27
pe disc. Totui, toate informaiile asupra datelor sunt efectuate n memoria
central. Gestiunea discurilor asigur deci toate transferurile ntre memoria
central i spaiul de stocare de pe disc.
27. Descriei grafic arhitectura funcional a unui SGBD(vezi pag. 31-35)
3.3. Arhitectura operaional a unei aplicaii baze de date
La nceput, SGBD-urile erau concepute pentru sisteme centralizate.
Utilizatorii conectai la aceste sisteme partajau aceleai date implantate pe acelai
disc i ncrcate n acelai spaiu de memorie central.
Apariia micro-informaticii n anii 1980 a dus la realizarea de SGBD la
nivel micro. Totui, utilizatorii i-au exprimat rapid dorina de a putea interaciona
cu baza de date centralizat prin intermediul microcalculatorului. Acestea nu avea
ns puterea i securitatea marilor sisteme.
F
-
28
La nceputul anilor 1990 apare conceptul de arhitectur client/server. Se
consider c o aplicaie informatic comport n general trei tipuri de tratamente:
gestiunea datelor (cutare, actualizare), logica aplicativ care nseamn calcule,
reflecii i n cele din urm prezentarea rezultatelor. Se vorbete de client/server
de ndat ce aceste tratamente sunt repartizate ntre cel puin dou calculatoare.
Este evident faptul c gestiunea datelor este mai bine asigurat de marile sisteme.
n schimb, prezentarea rezultatelor este mai mulumitoarea via un microcalculator.
Cea mai clasic arhitectur client/server poate fi descris dup cum
urmeaz:
- client este microcalculatorul care emite cererile de acces la baza de date
situat pe un server;
- cererea este executat pe server care remite clientului liniile rezultat;
- acest rezultat este afiat pe postul client, de exemplu prin intermediului
unui tabel.
Figura 1.2. Arhitectura client server
Acest tip de funcionare este eficace n msura n care fiecare dintre cei doi
efectueaz sarcina pentru care este cel mai adaptat: prezentarea rezultatelor este
efectuat de ctre client, gestiunea datelor (coerena, integritatea) este asigurat de
server.
Logica aplicativ poate fi executat fie de client, fie de server. Totui, n
primul caz, inconvenientul este c ansamblul de date uneori voluminos tranziteaz
reeaua. Dac numrul utilizatorilor este foarte mare, reeaua poate fi foarte
ncrcat.
Server
Client 1 Client 2 Client n
Cererea client ctre serverRspunsul serverului ctre client
-
29
n cazul n care logic aplicativ este efectuat de server, acesta poate fi
foarte solicitat de un mare numr de utilizatori simultan. n ciuda acestor
inconveniente, arhitecturi de acest tip sunt nc foarte utilizate n ntreprinderi. n
aceste configuraii, conexiunea ntre programe este realizat de programe de
comunicare numite middlewares.
Pentru a rezolva inconvenientul citat mai sus, de acum nainte se
realizeaz arhitecturi pe 3 niveluri. Cele 3 componente care sunt gestiunea datelor,
logica aplicativ i prezentarea rezultatelor sunt repartizate ntre trei calculatoare:
serverul de date, serverul de aplicaie i postul client:
Figura 1.3. Arhitectura pe 3 niveluri
28. Descriei grafic arhitectura client/server. (vezi pag. 31-35)
Server
Client 1 Client 2 Client n
Server de aplicaie
-
30
29. Descriei grafic arhitectura pe 3 niveluri. (vezi pag. 31-35)
BIBLIOGRAFIE SELECTIV
I. Tratate i monografii.
1. Michael Hernandez Proiectarea bazelor de date, Editura Teora,
Bucureti, 2003
2. Mariana Miloescu Baze de date n Visual FoxPro, Editura Teora,
2003
3. Marin Fotache, Proiectarea bazelor de date, Editura Polirom, Iai, 2005
4. Grupul BDASEIG, Baze de date. Fundamente teoretice i practice,
Editura Infomega, Bucureti, 2002
5. Florin Radu, Baze de date, Editura Bibliotheca, Trgovite, 2007
-
31
Rezolvarea testelor de autoevaluare
1. Care sunt etapele prin care a trecut organizarea datelor?
a.fiiereb.fiiere cu legturic.bazele de date actuale
2. Ce este o baz de date analitic?
Bazele de date analitice sunt folosite n special n prelucrrile analiticeon-line (OLAP On Line Analitical Processing), cnd este necesarstocarea i urmrirea datelor istorice i dependente de timp
3. Ce este o baz de date?
O baz de date este o colecie organizat de date folosit n scopul de amodela un anumit tip de organizaie sau proces organizaional
4. Ce este o baz de date operaional?
Baza de date operaional este utilizat n cazul prelucrrilor on-line atranzaciilor (OLTP On Line Transaction Processing), adic n acelesituaii n care este necesar colectarea, modificarea i ntreinereazilnic a bazelor de date
5. Ce reprezint OLTP?
OLTP On Line Transaction Processing
6. Ce reprezint OLAP?
OLAP On Line Analitical Processing
7. Exist legtur ntre bazele de date operaionale i cele analitice?
Bazele de date analitice utilizeaz frecvent bazele de date operaionaleca surs principal de date, deci poate exista o oarecare asociere ntrecele dou tipuri; cu toate acestea, bazele de date operaionale ianalitice satisfac tipuri de necesiti foarte concrete privind prelucrareadatelor.
8. Cine sunt utilizatorii bazei de date?
a.Programatorii de aplicaiib.Utilizatorii finalic.Administratorul BD
-
32
9. Care sunt funciile asigurate de administratorul bazei de date?a. Definirea schemei conceptualeb.Definirea schemei interne.c.Definirea schemei externed.Definirea procedurilor de salvare i restaurare.
10. Enumerai modelele de descriere a datelor
a.modelul ierarhicb.modelul reeac.modelul relaionald.modelul obiectual;
11. Care sunt tipurile de relaii folosite n modelul relaional?
a.relaia 1:1b.relaia 1:nc.relaia m:n
12. Ce este o baz de dat ierarhic?
O baz de date ierarhic este constituit dintr-un grup de nregistrriinterconectate prin intermediul unor legturi
13. Reprezentarea grafic a legturilor care pot exista ntre tipurile denregistrri (legturi 1:1, 1:n, n:m) n modelul reea este similarmodelului ierarhic?
DA
14. Din ce este format schema unei relaii?
Schema unei relaii este format din numele relaiei, atributele acesteiai restriciile de integritate.
15. Ce este domeniul?
Domeniul reprezint mulimea tuturor valorilor posibile care definesc oanumit proprietate a unui obiect
16. Ce este atributul?
Atributul reprezint mulimea valorilor existente la un moment dat ncoloana pe care acesta o desemneaz n cadrul unei relaii
17. Care sunt restriciile la care sunt supuse relaiile?
a. fiecare coloan din tabel conine acelai fel de valori;b.n tabel ordinea liniilor nu este stabilit i n acelai timp nu se admit
valori duplicate;c.orice valoare este un numr sau un ir de caractere;d.orice coloan este identificat printr-un nume care reprezint
atributul relaiei.
-
33
18. Ce este o cheie primar?
Cheia primar a unei tabele este un atribut sau un grup de atribute carepermite identificarea fr ambiguitate a fiecrui tuplu din tabel
19. Care sunt restriciile pentru cheie primar?
a.unicitateab.compoziia minimalc.valorile non-nule
20. Care sunt avantajele modelului relaional?
a.independena sporit a programelor de aplicaie fa de modul dereprezentare intern a datelor i de metodele de acces la date;
b.definirea unei structuri conceptuale optime, minimaliznd redundanadatelor i erorile la actualizare;
c.utilizarea unor limbaje procedurale bazate pe algebra relaional i aunor limbaje neprocedurale care contribuie la mbuntireacomunicrii dintre sistem i neinformaticieni.
21. Care sunt conceptele pe care se bazeaz modelarea orientat obiect?
Modelarea orientat obiect se bazeaz pe urmtoarele concepte: obiect,abstractizare, ncapsulare, motenire, polimorfism.
22. Care sunt funciile unui SGBD?
a.descrierea datelorb.introducerea datelorc.extragerea/interogarea datelord.actualizarea datelor
23. Care sunt cele dou principii de independen?
Independena fizic i independena logic
-
34
24. Descriei grafic arhitectura funcional a unui SGBD
25. Ce presupune descrierea datelor?
Descrierea datelor este acea parte care permite, nainte de introducereadatelor, de a defini numele acestor date, structura i coninutul lor. Deexemplu baza de date a unei biblioteci comport un ansamblu de datereferitoare la cri.
26. n ce const extragerea datelor?
Extragerea datelor desemneaz toate operaiile regulate sau punctuale,de cutare i de ieire pe ecran, pe suport de hrtie sau pe un alt suport,n ntregime sau doar n parte a informaiilor din baza de date.
27. Ce implic protecia datelor?
Exist dou aspecte legate de protecia datelor. Primul priveteconfidenialitatea: informaia nu poate fi cunoscut de toi. Pentrufiecare tip de informaie trebuie stabilit lista persoanelor sau agrupurilor autorizate a le consulta. Al doilea aspect se refer laintegritate: informaia nu poate fi modificat de toi. n acest caz, seconvine la definirea unui cerc de persoane, n general foarte mic,abilitate s actualizeze informaia.
-
35
28. Descriei grafic arhitectura client/server.
29. Descriei grafic arhitectura pe 3 niveluri.
-
36
M.2. ALGEBRA RELAIONAL
1. Cuprins2. Obiectiv general3. Obiective operaionale4. Dezvoltarea temei5. Bibliografie selectiv
Cuprins
UI. 4. Caracterizarea general a limbajelor de programare;
= 1 or UI. 5. Operatorii asambliti: Reuniunea, Intersecia,
Diferena, Produsul cartezian;
= 1 or UI. 6. Operatorii relaionali: Selecia, Proiecia, Jonciunea,
Diviziunea
= 10 ore
Obiectiv general: Dobndirea cunotinelor cu privire laoperatorii algebrei relaionale
Obiective operaionale: Cunoaterea modului de aplicare aoperatorilor asambliti (reuniune, intersecie, produs cartezian, diferen) ia celor relaionali (selecie, proiecie, jonciune, diviziune)
-
37
UNITATEA DE NVARE 4CARACTERIZARE GENERAL A LIMBAJELOR DE INTEROGARE
Bazele de date relaionale au ca principal obiectiv acoperirea nevoilor
informaionale ale conducerii firmei la toate nivelurile ierarhice. Pn la
consacrarea definitiv a SGBDR-urilor, extragerea informaiilor dorite din baza de
date se realiza n principal prin aplicaii dezvoltate exclusiv prin intermediul
limbajelor procedurale, n care se precizau att datele dorite, ct i metodele de
cutare i de extragere a acestora. Generalizarea SGBDR-urilor este strns legat
de elaborarea i implementarea unor limbaje performante pentru manipularea
bazelor de date limbajele de interogare.
Limbajele relaionale sunt limbaje neprocedurale, n sensul c utilizatorul
definete doar datele ce trebuie extrase din baza de date, sarcina cutrii i
extragerii fiind n sarcina exclusiv a SGBD-ului.
Limbajele de manipulare a datelor, plecnd de la cele dou modaliti de
definire a unei relaii (ca predicat aplicat asupra unor domenii i ca ansamblu de
tupluri), sunt grupate n dou mari categorii:
limbaje predicative bazate pe teoria predicatelor; limbaje asambliste bazate pe teoria ansamblurilor (a tuplurilor).La rndul lor limbajele predicative sunt mprite n:
limbaje care au la baz calculul relaional asupra tuplurilor; limbaje n care calculul relaional se aplic doar asupra domeniilor.Pentru limbajele de manipulare a datelor bazate pe calculul predicatelor,
elementul definitoriu l constituie noiunea de variabil, noiune ce poate fi
asociat att tuplurilor, ct i domeniilor.
O alt clasificare este cea care realizeaz o delimitare ntre limbajele non-
grafice i cele grafice. Prima categorie permite realizarea unei consultri, prin
dispunerea succesiv a operatorilor, atributelor i relaiilor, n timp ce a doua
categorie permite redactarea consultrii n mod interactiv, prin afiarea pe ecran a
unui sistem de meniuri i elemente de dialog din care opiunile pot fi selectate i
modificate uor cu ajutorul mouse-ului
Exist o serie de caracteristici comune tuturor limbajelor de interogare:
rezultatul consultrii este o nou relaie ce poate servi, n continuare, caargument ntr-o nou consultare;
F
-
38
operatoriile relaionali se aplic relaiilor considerate n totalitatea lor,adic tuturor tuplurilor care alctuiesc relaiile respective;
logica operatorilor se bazeaz pe valorile atributelor, aceasta constituindsingurul mod de acces la baza de date. Accesul total independent de limbaj este
asigurat prin compararea valorilor atributelor definite pe domenii compatibile.
Pentru a se realiza o consultare ntr-un limbaj relaional, nainte de toate
trebuie parcurs o faz de analiz, pentru determinarea rezultatului, a legturilor
dintre tabele precum i a eventualelor restricii ce trebuie respectate.
Algebra relaional cuprinde dou tipuri de operatori: asambliti
(REUNIUNE, INTERSECIE, DIFEREN, PRODUS CARTEZIAN) i
relaionali (SELECIE, PROIECIE, JONCIUNE, DIVIZIUNE).
ntr-o alt clasificare se face diferena ntre operatorii fundamentali,
ireductibili (reuniunea, diferena, produsul cartezian, selecia i proiecia) i
operatorii derivai, a cror funcionalitate poate fi realizat prin combinarea
operatorilor fundamentali (intersecia, jonciunea i diviziunea).
Pe parcursul acestui capitol se vor folosi notaiile:
t un tuplu al unei relaii (o linie a unei tabele) i t(A), un subtuplu al relaiei R, relativ la atributul A (valoarea atributului
A n linia t).
Ca i calculul relaional, algebra relaional, servete ca punct de referin
n caracterizarea unui limbaj ca fiind complet sau incomplet, din punct de vedere
relaional. Dac un limbaj permite exprimarea tuturor operatorilor amintii
anterior i ofer cel puin facilitii algebrei relaionale, se poate spune despre
respectivul limbaj c este un limbaj complet relaional.
F
-
39
UNITATEA DE NVARE 5OPERATORII ASAMBLITI
Trei dintre operatorii asambliti reuniune (), intersecie () idiferen () pot opera numai cu dou relaii unicompatibile.
Ce nelegem prin relaii unicompatibile?
Fie R1 (A1, A2, .., An) i R2 (B1, B2,.., Bm) dou relaii. Spunem
despre R1 i R2 c sunt unicompatibile dac:
1. n=m
2. " i (1, 2, ., n), Ai i Bi sunt de acelai tip sintactic.Relaiile R1 i R2 din figura 3.1. sunt unicompatibile deoarece:
1. ambele au acelai numr de atribute;
2. atributele C1, C2, C3 din R1 (R1.C1, R1.C2, R1.C3) corespund
sintactic atributelor C3, C4 i C5 (R2.C3, R2.C4, R2.C5).
R1 R2C1 C2 C3 C3 C4 C5100 AAA 500 500 BBB 300200 AAB 750 300 BAA 250400 ABA 250 400 BBA 300500 BBB 700 700 AAA 500900 ABB 400 900 ABB 400
Figura 1. Relaiile R1 i R2 unicompatibile
5.1. Reuniunea
Reuniunea a dou relaii R1 i R2, notat R3 R1 R2, este definitastfel:
R1 R2 = {tuplu t | t R1 sau t R2}.
Coninutul tabelei-reuniune R3 este prezentat n figura 2. Primele cinci
tupluri din aceast tabel sunt preluate din R1, iar ultimele trei din R2. R3 conine
opt tupluri deoarece dou din tupluri sunt comune tabelelor R1 i R2. Algebra
relaional elimin automat duplicatele (tuplurile identice), n felul acesta
asigurndu-se restricia de unicitate dup fiecare operaie.
Reuniunea este comutativ. Singura problem neclar ar fi legat de
numele atributelor n relaia rezultat, ns se poate institui regula conform creia
numele atributelor relaiei-reuniune s fie numele atributelor primei relaii
participante la operaie.
F
-
40
R3C1 C2 C3
100 AAA 500200 AAB 750400 ABA 250500 BBB 700900 ABB 400300 BAA 250400 BBA 300700 AAA 500
Figura 2. Reuniunea relaiilor R1 i R2
5.2. Intersecia
Intersecia a dou relaii R1 i R2, notat R4 R1 R2, este definitastfel:
R1 R2 = {tuplu t | t R1 i t R2}.
Coninutul tabelei-intersecie este prezentat n figura 3.3. Deoarece doar
dou tupluri sunt absolut identice i n R1 i n R2, tabela rezultat va fi alctuit
doar din dou linii.
Ca i reuniunea, intersecia este comutativ, iar numele atributelor relaiei
intersecie sunt extrase din prima relaia participant la operaie.
R4C1 C2 C3
500 BBB 700900 ABB 400
Figura 3. Intersecia relaiilor R1 i R2
5.3. Diferena
Diferena a dou relaii R1 i R2, notat R5 R1 R2, este definitastfel:
R1 R2 = {tuplu t | t R1 i t R2}.
Coninutul tabelei-diferen (figura 3.4.) conine doar tuplurile din R1,
care nu se regsesc n R2. Aadar, din rezultat sunt eliminate ultimele dou tupluri
din R1, deoarece valorile acestora se regsesc i n R2 (primul i ultimul tuplu din
R2).
Spre deosebire de reuniune i intersecie, diferena nu este comutativ.
Atributele relaiei-diferen sunt cele ale primei relaii, iar tuplurile care sunt
extrase din relaia-desczut nu se regsesc n relaia scztor. Pe lng asta, nu
F
F
-
41
exist restricii privind cardinalitatea (numrul tuplurilor) celor dou relaii n
sensul c nu este obligatoriu ca relaia desczut s conin mai multe tupluri dect
cea scztor.
R5C1 C2 C3
100 AAA 500200 AAB 750400 ABA 250
Figura 4. Diferena relaiilor R1 i R2
5.4. Produsul cartezian
Produsul cartezian dintre dou relaii R1 i R2, notat R6 R1 R2, esteansamblul tuturor tuplurilor obinute prin concatenarea fiecrei liniile din tabela
R1 cu toate linie din tabela R2. Este definit astfel:
R1 R2 = {(t1, t2) | t1 R1 i t2 R2}
Spre deosebire de celelalte trei operaiuni precedente, produsul cartezian
nu face apel la noiunea de relaii unicompatibile, iar relaia rezultat cumuleaz
atributele celor dou relaii argument.
n figura 3.5. este prezentat rezultatul produsului cartezian al tabelelor R1
i R2.
R6C1 C2 R1.C3 R2.C3 C4 C5100100100100100
AAAAAAAAAAAAAAA
500500500500500
500300400700300
BBBBAABBAAAAABB
300250300500400
200200200200200
AABAABAABAABAAB
750750750750750
500300400700900
BBBBAABBAAAAABB
300250300500400
400400400400400
ABAABAABAABAABA
250250250250250
500300400700900
BBBBAABBAAAAABB
300250300500400
500500500500
BBBBBBBBBBBB
700700700700
500300400700
BBBBAABBAAAA
300250300500
F
-
42
500 BBB 700 900 ABB 400900900900900900
ABBABBABBABBABB
4040404040
500300400700900
BBBBAABBAAAAABB
300250300400500
Figura 5. Produsul cartezian al relaiilor R1 i R2
Tabela-rezultat R6 are o structur nou cu ase atribute (trei preluate din
R1 i trei din R2). Deoarece exist un atribut cu nume comun C3, pentru a deosebi
cele dou apariii, acestea sunt prefixate, n antetul tabelei, cu numele relaiei din
care provine atributul respectiv (R1.C3 i R2. C3).
Prima linie din R6 este obinut prin unirea primului tuplu din R1 cu
primul tuplu din R2, a doua din primul tuplu din R1 cu al doilea din R2 .a.m.d.
Cum R1 are 5 tupluri i R2 tot 5, tabela-rezultat a produsului cartezian va avea 5 *
5 = 25 tupluri.
Nu prea exist situaii care s reclame folosirea direct i exclusiv a
produsului cartezian. Cel mai important merit al acestuia n algebra relaional
este c permite alipirea a dou relaii, fundamentnd astfel operatorul cheie care
este jonciunea.
-
43
UNITATEA DE NVARE 6OPERATORII RELAIONALI
Dac cei patru operatori prezentai n paragraful anterior sunt generali, cei
din paragraful de fa sunt specifici algebrei relaionale.
Sunt grupai n dou categorii:
- operatori unari de restricie, care permit decupajul unei relaii, pe
orizontal SELECIA i pe vertical PROIECIA;
- operatori binari de extensie: JONCIUNEA i DIVIZIUNEA.
6.1. Selecia
Selecia triaz dintr-o tabel numai tuplurile care satisfac condiia
specificat printr-un predicat.
Se noteaz
R1 SELECIE {R; expresie_logic}
unde:
- R este relaia R (A1, A2, ..., An) asupra creia se aplic selecia (Ai sunt
atributele sale);
- R1 este noua tabel obinut n urma seleciei, care va avea aceeai
schem relaional cu R R1(A1, A2, ..., An)
- expresie_logic este compus din operanzi care sunt nume de atribute
sau constante, operatori de comparaie aritmetic (>, , 500)
RC1 C2 C3900 ABB 500
Figura 6. Rezultat selecie exemplul 1
F
-
44
Exemplul 2. Care sunt liniile din R1 pentru care valorile atributului C3
sunt cuprinse n intervalul 250 350?R SELECIE (R1; C3 > = 250 AND C3 < = 350)
RC1 C2 C3400 ABA 250
Figura 7. Rezultat selecie exemplul 2
Exemplul 3. Care sunt liniile din R1 pentru care valorile atributelor C1 i
C3 sunt mai mari dect 300?R SELECIE (R1; C1 > 300 AND C3 > 300)
R
C1 C2 C3900 ABB 40
Figura 8. Rezultat selecie exemplul 3
Exemplul 4. Care sunt studenii Facultii de tiine Economice?
Pentru a afla aceast informaie, mai nti trebuie s identificm n baza de
date tabela (sau dup caz, tabelele) din care se extrage rezultatul. n cazul de fa,
tabela este STUDENT. Apoi se stabilesc atributele din tabel, asupra crora se va
aplica predicatul (atributul) de selecie. Se obine n felul acesta soluia:R SELECIE (STUDENT, facultate = Stiinte Economice)
Exemplul 5. Care sunt studenii Facultii de tiine Economice,
specializarea Contabilitate i Informatic de Gestiune?
Tabela n care va opera operatorul de selecie este STUDENT. Predicatul
de selecie va opera asupra atributelor facultate i sectia:R SELECIE (STUDENT, facultate = Stiinte
Economice AND sectia = CIG)
Exemplul 6. Ce burse au fost ridicate n luna februarie 2004?
Tabela n care va opera de aceast dat operatorul de selecie este tabela
BURSA, iar atributul folosit este data_incasarii.R SELECIE (BURSA; data_incasarii >= 01/02/2004
AND data_incasarii
-
45
6.2. Proiecia
Proiecia permite selectarea ntr-o tabel rezultat doar a atributelor dorite
spre deosebire de selecie care extrage anumite linii dintr-o tabel pe baza
condiiei ndeplinite de valorile unora dintre atribute. Cu alte cuvinte se realizeaz
decuparea pe vertical a unei relaii.
Proiecia relaiei R(A1, A2, , An) este o relaie care se obine dup
parcurgerea a doi pai:
1. eliminarea din Ai a acelor atribute care nu sunt specificate
2. suprimarea tuplurilor identice (dublurile).
Se noteaz:
R1 PROIECIE {R; Aj, Ak, , Ax}
Spre deosebire de R, schema relaiei R1 este alctuir numai din atributele
indicate: R1 (Aj, Ak, ..., Ax). Dac dup extragerea coloanelor nu exist tupluri
identice, R1 va avea acelai numr de linii ca i relaia R. n caz contrar, numrul
lor va fi mai mic, n funcie de numrul dublurilor.
Exemplul 7. Care sunt valorile atributului C3 n relaia R1?R PROIECIE (R1; C3)
RC3500750250700400
Figura 9. Rezultat proiecie exemplul 7
Exemplul 8. Care sunt valorile combinaiei atributelor C1 i C3 n relaia
R1?R PROIECIE (R1; C1, C3)
RC1 C3100200400500900
500750250700400
Figura 10. Rezultat proiecie exemplul 8
Exemplul 9. Care sunt facultile preluate n baza de date?
Tabela n care sunt preluate facultile este STUDENT. Singura coloan
care ne intereseaz n acest caz este facultate.
F
-
46
n prima faz se realizeaz decuparea pe vertical a coloanei respective,
obinndu-se o relaie temporar notat R, iar apoi prin eliminarea duplicatelor se
obine rezultatul final n relaia R.R PROIECIE (STUDENT; facultate)R
facultate
Stiinte Economice
Stiinte Economice
Colegiul Economic
Stiinte Juridice
Stiinte Economice
Stiinte Economice
Stiinte Economice
Stiinte Economice RStiinte Juridice facultate
Stiinte Economice Colegiul Economic
Colegiul Economic Stiinte Economice
Stiinte Economice Stiinte Juridice
Stiinte Economice
Colegiul Economic
Stiinte Economice
Stiinte Juridice
Stiinte Economice
Colegiul Economic
Stiinte Economice
Stiinte Economice
Figura 11. Rezultat proiecie exemplul 9
Exemplul 10. S se identifice cota, titlul, domeniul i numrul de
exemplare al fiecrei cri.
Tabela care intereseaz este CARTE, iar din aceasta se decupeaz patru
coloane: cota_carte, titlu, domeniu i nr_exemplare.R PROIECIE (CARTE; cota_carte, titlu, domeniu,
nr_exemplare)
6.3. nlnuirea consultrilor
Dup cum am vzut, rezultatul unei consultri este o tabel (relaie) nou.
Avnd n vedere acesta, pentru obinerea tabelei rezultat, se pot nlnui dou sau
mai multe operaii redactndu-se astfel interogri complexe.
Exemplul 11. Care este facultatea pe care o urmeaz studentul Barbu
Elena?
F
-
47
n cazul de fa soluia este relativ simpl. Folosind selecia se decupeaz
din tabela STUDENT doar studentul care se numete Barbu Elena. Se obine n
felul acesta o relaie nou, notat R1. Avnd n vedere c ne intereseaz doar
facultatea, se aplic asupra lui R1 o proiecie i se obine relaia R2, n care se afl
rspunsul la problema luat n discuie.R1 SELECIE (STUDENT, nume = Barbu Elena)R2 PROIECIE (R1, facultate)
Exemplul 12. Care sunt regiunile din care fac parte judeele Dmbovia i
Vlcea?
Tabela interogat este LOCALITATE. Pentru a rspunde la aceast
variant pot fi formulate dou soluii.
Soluia 1.R1 SELECIE (LOCALITATE; judet = Dambovita OR judet = Valcea)R2 PROIECIE (R1; judet, regiune)Soluia 2.R1 SELECIE (LOCALITATE; judet = Dambovita)R2 PROIECIE (R1; judet, regiune)R3 SELECIE (LOCALITATE; judet = Valcea)R4 PROIECIE (R3, judet, regiune)R5 R2 R4
Exemplul 13. Care sunt studenii Facultii de tiine Economice de la
specializrile CIG i FA?
Tabela interogat este STUDENT, iar rspunsul la aceast ntrebare poate
fi formulat n 2 moduri.
Soluia 1.R1 SELECIE (STUDENT; facultate = Stiinte
Economice AND sectia = CIG OR sectia =FA)
R2 PROIECIE (R1; nume, sectia)Soluia 2.R1 SELECIE (STUDENT; facultate = Stiinte
Economice AND sectia = CIG)R2 PROIECIE (R1; nume, sectia)R3 SELECIE (STUDENT; facultate = Stiinte
Economice AND sectia = FA)R4 PROIECIE (R2; nume, sectia)R5 R2 R4
Exemplul 14. Care sunt crile care au aprut i la editurile Eficient i
Macarie?
-
48
Tabela din care vor fi extrase datele este CARTE. Rezultatul se bazeaz pe
intersecia relaiei care conine crile aprute la editura Eficient (R2) cu crile
aprute la editura Macarie (R4).R1 SELECIE (CARTE; editura = Eficient)R2 PROIECIE (R2; titlu)R3 SELECIE (CARTE; editura = Macarie)R4 PROIECIE (R3; titlu)R5 R2 R4
6.4. Jonciunea
Dup cum am vzut, produsul cartezian permite fuzionarea a dou tabele
ntr-una singur ce conine toate atributele i liniile obinute prin combinarea
fiecrui tuplu dintr-o relaia cu fiecare tuplu din cealalt.
Jonciunea spre deosebire de produsul cartezian care este o fuziune
necondiionat a dou tabele, este o fuziune a dou relaii care au o proprietate
comun. Fie dou relaii R1(A1, A2, , An) i R2(B1, B2, , Bp) i Ai i Bj
dou atribute definite pe acelai domeniu i q ansamblul operatorilor decomparaie {=, , , , } ce pot fi aplicai celor dou atribute Ai i Bj.
Jonciunea relaiei R1, prin Ai cu relaia R2, prin Bj notat
R1 (Ai q Bj) R2este relaia ale crei tupluri sunt obinute prin concatenarea fiecrui tuplu al
relaiei R1 cu tuplurile relaiei R2, pentru care este verificat condiia q instituitntre Ai i Bj. Se noteaz:
R1 (Ai q Bj) R2 = {t | t R1 R2 i t(Ai) q t(Bj)}.Jonciunea este echivalent cu un produs cartezian urmat de o selecie.
Aceast jonciune este cunoscut n literatura de specialitate sub denumirea de
theta-jonciune. n lucrul cu bazele de date relaionale se utilizeaz cu precdere
echi-jonciunea, ce reprezint un caz particular al theta-jonciunii, atunci cnd qeste operatorul de egalitate =. Se noteaz:
R1 (Ai = Bj) R2 = {t | t R1 R2 i t(Ai) = t(Bj)}.Exemplul 15 Theta jonciune
Pentru exemplificarea acestui operator se folosesc aceleai dou tabele R1
i R2. Rezultatul jonciunii (theta - jonciunii) exprimat prin expresia
R JONCIUNE (R1, R2, R1.C1 > R2.C5),este obinut n 2 pai, dup cum se observ n figura urmtoare:
F
-
49
R1 R R1 R2C1 C2 C3 C1 C2 R1.C3 R2.C3 C4 C5100 AAA 500 100 AAA 500 500 BBB 300200 AAB 750 100 AAA 500 300 BAA 250400 ABA 250 100 AAA 500 400 BBA 300500 BBB 700 100 AAA 500 700 AAA 500900 ABB 400 100 AAA 500 300 ABB 400
200 AAB 750 500 BBB 300R2 200 AAB 750 300 BAA 250
C3 C4 C5 200 AAB 750 400 BBA 300500 BBB 300 200 AAB 750 700 AAA 500300 BAA 250 200 AAB 750 900 ABB 400400 BBA 300 400 ABA 250 500 BBB 300700 AAA 500 400 ABA 250 300 BAA 250900 ABB 400 400 ABA 250 400 BBA 300
400 ABA 250 700 AAA 500400 ABA 250 900 ABB 400500 BBB 700 500 BBB 300500 BBB 700 300 BAA 250500 BBB 700 400 BBA 300500 BBB 700 700 AAA 500
R = SELECIE (R; C1 > C5) 500 BBB 700 900 ABB 400C1 C2 R1.C3 R2.C3 C4 C5 900 ABB 400 500 BBB 300400 ABA 250 500 BBB 300 900 ABB 400 300 BAA 250400 ABA 250 300 BAA 250 900 ABB 400 400 BBA 300400 ABA 250 400 BBA 300 900 ABB 400 700 AAA 400500 BBB 700 500 BBB 300 900 ABB 400 900 ABB 500500 BBB 700 300 BAA 250500 BBB 700 400 BBA 300500 BBB 700 800 ABB 400900 ABB 400 500 BBB 300900 ABB 400 300 BAA 250900 ABB 400 400 BBA 300900 ABB 400 700 AAA 500900 ABB 400 900 ABB 400
Figura 12. Mecanismul de theta-joncionare exemplul 15
Exemplul 16 Echi jonciune
Pentru a fi o echijonciune, operatorul de comparaie dintre cele dou
atribute este, n mod obligatoriu, semnul de egalitate.R JONCIUNE (R1, R2; R1.C1 = R2.C5)
-
50
R1 R R1 R2C1 C2 C3 C1 C2 R1.C3 R2.C3 C4 C5100 AAA 500 100 AAA 500 500 BBB 300200 AAB 750 100 AAA 500 300 BAA 250400 ABA 250 100 AAA 500 400 BBA 300500 BBB 700 100 AAA 500 700 AAA 500900 ABB 400 100 AAA 500 300 ABB 400
200 AAB 750 500 BBB 300R2 200 AAB 750 300 BAA 250C3 C4 C5 200 AAB 750 400 BBA 300500 BBB 300 200 AAB 750 700 AAA 500300 BAA 250 200 AAB 750 900 ABB 400400 BBA 300 400 ABA 250 500 BBB 300700 AAA 500 400 ABA 250 300 BAA 250900 ABB 400 400 ABA 250 400 BBA 300
400 ABA 250 700 AAA 500400 ABA 250 900 ABB 400500 BBB 700 500 BBB 300500 BBB 700 300 BAA 250500 BBB 700 400 BBA 300500 BBB 700 700 AAA 500500 BBB 700 900 ABB 400900 ABB 400 500 BBB 300900 ABB 400 300 BAA 250900 ABB 400 400 BBA 300900 ABB 400 700 AAA 400900 ABB 400 900 ABB 500
R = SELECIE (R; C1 = C5)C1 C2 R1.C3 R2.C3 C4 C5500 BBB 700 700 AAA 500
Figura 13. Echi-jonciune exemplul 16
Exemplul 17 Jonciune natural
Jonciunea natural, pe lng faptul c presupune ca operatorul de
comparaie s fie semnul de egalitate, implic i denumirea identic a atributelor
de legtur ntre cele dou tabele.
R JONCIUNE (R1, R2; R1.C3 = R2.C3) sau se poate folosii forma simplificat, datorit faptului c ambele atribute au acelai nume
R JONCIUNE (R1, R2; C3)Avnd n vedere c cele dou atribute au acelai nume, se poate considera
c tabela rezultat pstreaz numai unul dintre cele dou atribute.
-
51
R1 R R1 R2C1 C2 C3 C1 C2 R1.C3 R2.C3 C4 C5100 AAA 500 100 AAA 500 500 BBB 300200 AAB 750 100 AAA 500 300 BAA 250400 ABA 250 100 AAA 500 400 BBA 300500 BBB 700 100 AAA 500 700 AAA 500900 ABB 400 100 AAA 500 300 ABB 400
200 AAB 750 500 BBB 300R2 200 AAB 750 300 BAA 250C3 C4 C5 200 AAB 750 400 BBA 300500 BBB 300 200 AAB 750 700 AAA 500300 BAA 250 200 AAB 750 900 ABB 400400 BBA 300 400 ABA 250 500 BBB 300700 AAA 500 400 ABA 250 300 BAA 250900 ABB 400 400 ABA 250 400 BBA 300
400 ABA 250 700 AAA 500400 ABA 250 900 ABB 400500 BBB 700 500 BBB 300500 BBB 700 300 BAA 250500 BBB 700 400 BBA 300500 BBB 700 700 AAA 500500 BBB 700 900 ABB 400900 ABB 400 500 BBB 300900 ABB 400 300 BAA 250900 ABB 400 400 BBA 300900 ABB 400 700 AAA 400900 ABB 400 900 ABB 500
R = SELECIE (R; R1.C3 = R2.C3)C1 C2 C2 C3 C4100 AAA 500 BBB 300500 BBB 700 AAA 500900 ABB 400 BBA 300
Figura 14. Jonciune natural exemplul 17
Deoarece selecia este un operator care se aplic doar unei singure tabele
(operator unar), este necesar fuzionarea tabelelor din care se dorete extragerea
datelor pentru obinerea unei relaii agregat, la care se aplic predicatul
suplimentar de selecie. Fuzionarea tabelelor este posibil numai prin jonciune.
Prin joncionarea tuturor relaiilor dintr-o baz de date se poate ajunge la o relaie
universal
Exemplul 18. S se afle pentru fiecare student bursier ce tip de burs
primete i care este valoarea acesteia.
Tabela STUDENT se joncioneaz cu tabela BURSA pe baza atributului
comun (nr_matricol) iar la tabela intermediar rezultat, se aplic selecia.
-
52
R1 JONCIUNE (STUDENT, BURSA, Nr_matricol)R2 PROIECIE (R1; nume, tip_bursa,
suma_incasata)
Exemplul 19. S se afle numele, facultate i secia studenilor care stau n
cminul Miclas.
Soluia 1.R1 JONCIUNE (STUDENT, STUDCAMIN; Nr_matricol)R2 SELECIE (R1; nume_camin = MICLAS)R3 PROIECIE (R2; nume, facultate, sectia,
nume_camin)Soluia 2.
Mai nti se aplic relaia asupra tabelei STUDCAMIN iar tabela
intermediar se joncioneaz cu STUDENT.R1 SELECIE (STUDCAMIN; nume_camin = Miclas)R2 JONCIUNE (STUDENT, R1; Nr_matricol)R3 PROIECIE (R2; nume, facultate, sectia,
nume_camin)
Care dintre cele dou variante este de preferat? A doua variant este mai
bun dect prima, deoarece jonciunea opereaz asupra a dou tabele mai reduse
ca dimensiuni (tabela STUDCAMIN deja a fost filtrat prin aplicarea predicatului
de selecie). Diferena este cu att mai vizibil atunci cnd tabela STUDENT
conine toi studenii dintr-o universitate. Iar dac ne gndim c naintea oricrei
jonciuni se realizeaz produsul cartezian apare ndreptit amnarea jonciunii,
pn cnd aceasta va opera asupra unor tabele cu un numr mai mic de linii i
coloane.
Exemplul 20. Care sunt crile scrise de Victor Stanciu ?
Elementul de noutate n cazul acestui exemplu l reprezint faptul c se
dorete obinerea unei informaii ce provine dintr-o relaie (atributul
nume_carte din tabela CARTE), pe baza unei condiii aplicate altei relaii(atributul nume_autor din tabela AUTOR), iar cele dou relaii nu sunt nraport de printe copil. n asemenea situaii se recomand folosirea i a altor
relaii, n cazul nostru tabela AUTORCARTE.
Soluia 1:R1 JONCIUNE (CARTE, AUTORCARTE; cota_carte)R2 JONCIUNE (R1,AUTOR; nume_autor)R3 SELECIE (R2; nume_autor = Victor Stanciu)R4 PROIECIE (R3; titlu)
-
53
Soluia 2:R1 SELECIE (AUTOR, nume_autor = Victor
Stanciu)R2 PROIECIE (R1; nume_autor)R3 JONCIUNE (R2,AUTORCARTE; nume_autor)R4 PROIECIE (R3; Cota_carte)R5 JONCIUNE (R4, CARTE; cota_carte)R6 PROIECIE (R5; titlu)naintea calculrii relaiei intermediare au fost eliminate nu numai tuplurile
ci i atributele de prisos.
Exemplul 21. Numele studenilor care au mprumutat cri din domeniul
Informatic.
i n acest caz se dorete obinerea unei informaii ce provine dintr-o
tabel (atributul nume din tabela STUDENT) pe baza unei condiii aplicate uneialte tabele iar ntre cele dou tabele nu exist legtur printe copil. De aceast
dat se folosete ca legtur tabela STUDCARTE.
Soluia 1:R1 JONCIUNE (STUDENT; STUDTCARTE; nr_matricol)R2 JONCIUNE (R1, CARTE; cota_carte)R3 SELECIE (R2; domeniu = Informatica)R4 PROIECIE (R3; nume)Soluia 2:R1 SELECIE (CARTE; domeniu = Informatica)R2 JONCIUNE (R1, STUDCARTE; cota_carte)R3 PROIECIE (R2; nr_matricol)R4 JONCIUNE (R3, STUDENT; nr_matricol)R5 PROIECIE (R4; nume)
Exemplul 22. Numele i secia studenilor facultii de tiine Economice
care au mprumutat cartea Informatic de gestiune n perioada 15-29 februarie
2004.
Relaia rezultat trebuie s conin valori ale atributelor nume i sectiadin tabela STUDENT. Predicatul de selecie se aplic ns asupra tabelei CARTE
(atributul nume_carte = Informatica de gestiune) i asupra tabeleiSTUDCARTE (atribut data_mprumut > = 15/02/2004 i < = 29/02/2004).
R1 SELECIE (CARTE; titlu = Informatica degestiune)
R2 JONCIUNE (R1, STUD_CARTE; cota_carte)R3 SELECIE (R2; data_imprumut > = 15/02/2004
AND data_imprumut < = 29/02/2004)R4 PROIECIE (R3; nr_matricol)
-
54
R5 JONCIUNE (R4; STUDENT; nr_matricol)R6 SELECIE (R5; facultate = Stiinte
Economice)R7 PROIECIE (R6; nume, sectia)
Exemplul 23. De la ce secii sunt studenii care au mprumutat i cartea
Informatic de gestiune i Contabilitate general?
Rezultatul conine atributul secia din tabela STUDENT, dar predicatul de
selecie se aplic asupra tabelei produse.
Soluia 1:R1 SELECIE (CARTE; nume_carte = Informatica de
gestiune)R2 JONCIUNE (R1, STUD_CARTE; cota_carte)R3 JONCIUNE (R2, STUDENT; nr_matricol)R4 PROIECIE (R3; sectia)R5 SELECIE (CARTE; nume_carte = Contabilitate
generala)R6 JONCIUNE (R5, STUDCARTE; cota_carte)R7 JONCIUNE (R6, STUDENT; nr_matricol)R8 PROIECIE (R7; SECTIA)R9 R4 R8Soluia 2:R1 SELECIE (CARTE; titlu = Informatica de
gestiune)R2 JONCIUNE (R1, STUD_CARTE; cota_carte)R3 JONCIUNE (R2, STUDENT; nr_matricol)R4 SELECIE (CARTE; nume_carte = Contabilitate
generala)R5 JONCIUNE (R4, STUDCARTE; cota_carte)R6 JONCIUNE (R5, STUDENT; nr_matricol)R7 JONCIUNE (R3; R6; sectia)R8 PROIECIE (R7, sectia)
n prima soluie s-a intersectat relaia seciilor studenilor care au
mprumutat cartea Contabilitate general (R8). n cea de-a doua variant s-a
operat direct jonciunea ntre R3 i R6.
Exemplul 24. n ce cmin sunt cazai studenii care au mprumutat crile
Informatic de gestiune i Contabilitate general, dar nu au mprumutat
cartea Economie politic?
Lucrurile n acest caz nu sunt att de complicate precum par la prima
vedere, deoarece vom folosi elemente din exemplul anterior, plus operatorul
diferen.
-
55
R1 SELECIE (CARTE; titlu = Informatica degestiune)
R2 JONCIUNE (R1, STUD_CARTE; cota_carte)R3 JONCIUNE (R2, STUDENT; nr_matricol)R4 JONCIUNE (R3, STUDCAMIN; nr_matricol)R5 PROIECIE (R4, nume_camin)R6 SELECIE (CARTE; nume_carte = Contabilitate
general)R7 JONCIUNE (R6, STUDCARTE; cota_carte)R8 JONCIUNE (R7, STUDENT; nr_matricol)R9 JONCIUNE (R8, STUDCAMIN; nr_matricol)R10 PROIECIE (R9; nume_camin)R11 SELECIE (CARTE; nume_carte = Economie
politica)R12 JONCIUNE (R11, STUDCARTE; cota_carte)R13 JONCIUNE (R12, STUDENT; nr_matricol)R14 JONCIUNE (R13, STUDCAMIN; nr_matricol)R15 PROIECIE (R14; nume_camin)R16 R5 R10 R15
Exemplul 25
Ce studeni studiaz la aceeai secie cu Dinescu Monica?
Fa de interogrile de pn acum, condiia de selecie n acest caz este una
indirect, n sensul c mai nti trebuie determinat secia la care studiaz Dinescu
Monica. Apoi trebuie extrase din tabela STUDENT, liniile pentru care secia are
valoarea seciei reper.R1 SELECIE (STUDENT; nume = Dinescu Monica)R2 PROIECIE (R1; sectia)R3 JONCIUNE (R2, STUDENT; sectia)R4 PROIECIE (R3; nume)
6.5. Diviziunea
Diviziunea este cel mai complex i mai greu de explicat dintre operatori.
Codd l-a imaginat ca un operator invers produsului cartezian. Pentru al defini se
pornete de la dou relaii R1(A,B) i R2(B). Diviziunea relaional R1R2 are carezultat o relaie definit ca ansamblul subtuplurilor R1(A), pentru care produsul
lor cartezian cu R2(B) este un subansamblu al R1(A,B).
Rezultatul expresiei R1R2 reprezint ctul diviziunii, ea fiind o relaie cepoate fi notat R3(A). ntr-o alt formulare ai R3 dac i numai dac " bi R2 $ (ai, bi) R1.
F
-
56
n continuare pentru simplitate A i B sunt considerate dou atribute, dei
ele pot fi i grupe de atribute. n figura de mai jos este prezentat diviziunea
relaional.
R1A Ba1 b1a2 b1a3 b1a1 b2a3 b2 R2a4 b2 Ba1 b3 b1 R3a3 b3 b2 Aa6 b3 b3 a1a1 b4 b4 a2a3 b4a4 b4a1 b5a2 b5a3 b5a5 b5
Figura 15. Diviziunea relaional
Determinarea relaiei R3 R1 R2 este sinonim cu a rezolva problema:care dintre a1, a2, a3, a4 i a5 apar n tupluri R1 mpreun cu toate valorilelui B din R2, respectiv b1, b2, b3, b4 i b5?
Toate valorile atributului A din R1 sunt parcurse pe rnd:
a1 apare cu b1 (n tuplul 1), cu b2 (n tuplul 2), cu b3 (n tuplul 7), cub4 (n tuplul 10) i cu b5 (n tuplul 13). Prin urmare a1 ndeplinete condiie i vafi inclus n relaia R3;
a2 apare cu b1 (n tuplul 2) dar nu apare cu b2 nu va face parte dinR3;
a3 apare cu b1 (n tuplul 3), cu b2 (n tuplul 5), cu b3 (n tuplul 8), cub4 (n tuplul 11) i cu b5 (n tuplul 15) ndeplinete condiia i ca fi inclus nR3;
a4 nu apare cu b1 nu va face parte din R3; a5 nu apare cu b1 nu va face parte din R3;
-
57
n urma acestui raionament, tabele R3 va fi alctuit din dou tupluri (a1i a3).
Diviziunea relaional este deosebit de util pentru formularea
consultrilor n care apare clauza " (oricare ar fi)
Test de evaluare
Se consider urmtoarea baz de date:PACIENT (codpacient, nume, prenume, datanasterii,localitate)PROGRAMARE (nrprogramare, dataprogramare,oraprogramare, codpacient)CONSULTATIE (nrconsultatie, tipconsultatie,codpacient, dataconsultatie)MEDICI (codmedic, numemedic, prenumemedic)MEDIC_CONSULTATIE (nrconsultatie, codmedic)TARIFE (tipconsultatie, tarif)Folosind operatorii algebrei relaionale s se determine:
1. Care sunt pacienii din Trgovite; (vezi pag. 63-67)
2. Care sunt pacienii din Trgovite i Titu; (vezi pag. 63-67)
3. Care pacieni nu sunt din Trgovite i Titu; (vezi pag. 63-67)
4. Care sunt pacienii care s-au nscut n anul 1989; (vezi pag. 63-67)
-
58
5. Care sunt tarifele mai mari de 25 RON; (vezi pag. 63-67)
6. Din ce localiti sunt pacienii din baz; (vezi pag. 63-67)
7. Care este nume i prenumele medicilor care ofer consultaii;(vezi pag. 63-67)
8. Care sunt tarifele practicate; (vezi pag. 63-67)
9. Din ce localitate sunt pacienii nscui n luna ianuarie 1990;(vezi pag. 63-67)
10. Care sunt orele pentru care sunt prevzute consultaii n data de09.02.2006; (vezi pag. 63-67)
-
59
11. Cum se numesc pacienii din Trgovite i Moreni;(vezi pag. 63-67)
12. Care este prenumele medicilor cu numele de familie Ghionea;(vezi pag. 63-67)
13. La ce data i la ce or are programare Popa Georgeta;(vezi pag. 63-67)
14. Care sunt datele la care au fcut programare pacienii dinTrgovite; (vezi pag. 63-67)
15. Numele pacienilor care au fost consultai n luna februarie 2006;(vezi pag. 63-67)
16. Data la care a fcut programare Dinescu Mircea i Vancea Ioan;(vezi pag. 63-67)
-
60
17. Numele medicilor care au acordat consultaii n data de 23.02.2006;(vezi pag. 63-67)
18. De ce medic a fost consultat Popa Georgeta; (vezi pag. 63-67)
19. Numele pacienilor consultai de Grecu Anca; (vezi pag. 63-67)
20. Nume pacienilor care au fcut programare i n luna ianuarie i nluna februarie 2006; (vezi pag. 63-67)
-
61
21. Care este tariful consultaiei pacientului Popa Georgeta;(vezi pag. 63-67)
22. Numele pacienilor care au fcut programare n data de 10.02.2006n intervalul 14-16; (vezi pag. 63-67)
23. Datele la care au efectuat consultaii Grecu Anca i Minea Ion nluna februarie 2006; (vezi pag. 63-67)
-
62
24. Numele i prenumele medicilor care au consultat pacieni dinTrgovite i Moreni dar nu din Titu; (vezi pag. 63-67)
25. Numele pacienilor consultai de Grecu Anca n luna februarie2006; (vezi pag. 63-67)
-
63
26. Data la care au fost consultai pacienii care au fcut programare ndata de 10.02.2006; (vezi pag. 63-67)
27. Nume pacienilor care au avut programare n data de 10.20.2006 nintervalul 12-14 i au fost consultai de ctre Grecu Anca.
(vezi pag. 63-67)
Rezolvare tem de autoevaluare
1. Care sunt pacienii din Trgovite;
R1 SELECIE(PACIENT; localitate=Targoviste)2. Care sunt pacienii din Trgovite i Titu;
R1 SELECIE(PACIENT; localitate=Targoviste orlocalitate=Titu)3. Care pacieni nu sunt din Trgovite i Titu;
R1 SELECIE(PACIENT; localitateTargoviste andlocalitateTitu)
sau
R1 SELECIE(PACIENT; localitate=Targoviste orlocalitate=Titu)R2 PACIENT R1
-
64
4. Care sunt pacienii care s-au nscut n anul 1989;
R1 SELECIE(PACIENT; datanasterii>= 01/01/1989 anddatanasterii25)
6. Din ce localiti sunt pacienii din baz;
R1 PROIECIE(PACIENT; localitate)7. Care este nume i prenumele medicilor care ofer consultaii;
R1 JONCIUNE(MEDICI; MEDIC_CONSULTATIE;codmedic)R2 PROIECIE(R1; numemedic, prenumemedic)8. Care sunt tarifele practicate;
R1 PROIECIE(TARIFE; tarif)9. Din ce localitate sunt pacienii nscui n luna ianuarie 1990;
R1 SELECIE(PACIENT; datanasterii>= 01/01/1990 anddatanasterii
-
65
15. Numele pacienilor care au fost consultai n luna februarie 2006;
R1 JONCIUNE(PACIENT, PROGRAMARE; codpacient)R2 JONCIUNE(R1, CONSULTATIE; nrconsultatie)R3 SELECIE(R2; dataconsultatie >= 01/02/2006 anddataconsultatie = 01/01/2006 anddataprogramare = 01/02/2006 anddataprogramare
-
66
21. Care este tariful consultaiei pacientului Popa Georgeta;
R1 SELECIE(PACIENT; nume = Popa and prenume =Georgeta)R2 JONCIUNE(R1, CONSULTATIE; codpacient)R3 JONCIUNE(R2, TARIFE; nrconsultatie)R4 PROIECIE(R3; tarif)
22. Numele pacienilor care au fcut programare n data de 10.02.2006n intervalul 14-16;
R1 SELECIE(PROGRAMARE; dataprogramare =10/02/2006)R2 SELECIE(R1; oraprogramare>= 14 and oraprogramare= 01/02/2006 anddataconsultatie = 01/02/2006 anddataconsultatie
-
67
25. Numele pacienilor consultai de Grecu Anca n luna februarie2006;
R1 SELECIE(MEDICI; numemedic = Grecu andprenumemedic =Anca)R2 JONCIUNE(R1, MEDIC_CONSULTATIE; codmedic)R3 JONCIUNE(R2, CONSULTATIE; nrconsultatie)R4 SELECIE(R3; dataconsultatie >= 01/02/2006 anddataconsultatie = 12 and oraprogramare
-
68
M.3. LIMBAJUL DE INTEROGARERELAIONAL SQL.
1. Cuprins2. Obiectiv general3. Obiective operaionale4. Dezvoltarea temei5. Bibliografie selectiv
Cuprins
UI.7. Prezentare general; Elemente de baz ale interogrilorSQL;
= 0,5 ore UI.8. Coloane expresii; Opiunea ORDER BY;
= 0,5 ore UI.9. Operatorii LIKE, BETWEEN, IN;
= 2 ore UI.10. Theta i echijonciunea;
= 3 ore UI.11. Sinonime locale i jonciunea unei tabele cu ea nsi;
= 1 ore UI.12. Subconsultri;
= 2 ore UI.13. Funcii agregat: COUNT, SUM, AVG, MIN i MAX);
= 2 ore UI.14. Gruparea tuplurilor: clauza GROUP BY i clauza
HAVING
= 1 ore
-
69
Obiectiv general: Dobndirea cunotinelor fundamentaleprivind limbajul relaional de interogare SQL
Obiective operaionale: nsuirea cunotinelor privindelementele de baz ale SQL, modul de operare al unei fraze SELECTimpreun cu clauzele obligatorii i cele opionale: FROM, WHERE,ORDER BY, GROUP BY sau HAVING
-
70
UNITATEA DE NVARE 7PREZENTARE GENERAL; ELEMENTE DE BAZ ALE
INTEROGRILOR
7.1. Prezentare general
n prezent SQL (Structured Query Language) este unul dintre cele mai
puternice limbaje structurate pentru interogarea bazelor de date relaionale.
Literele S de la Structured (structurat) i L de la Language (limbaj) sunt destul de
sugestive, n schimb, litera Q de la Query (interogare), dac este analizat din
punct de vedere literal, poate provoca unele confuzii n sensul c se limiteaz doar
la a pune ntrebri bazei de date. Din fericire, SQL face mult mai mult dect att:
se pot crea tabele, se adaug, se modific sau se terg date, se combin i se
memoreaz interogrile n cadrul bazei de date.
Istoria SQL ncepe n laboratoarele firmei IBM, unde limbajul a fost
dezvoltat n ultimii ani ai deceniului 8, odat cu lansarea proiectului System/R.
Dei este uor accesibil utilizatorilor nceptori, el nu rmne dator nici
programatorilor experimentai, punndu-le la dispoziie faciliti deosebite.
Datorit puterii sale relaionale, a uurinei n nelegere i utilizare, SQL a
fost ales de ANSI (American National Standards Organization Organizaia
pentru Standarde Naionale Americane) i apoi de ctre ISO (International
Standards Organization Organizaia pentru Standarde Internaionale) drept
limbaj standard pentru lucru cu baze de date relaionale.
Pe parcursul acestui curs standardul pentru SQL avut n vedere este
standardul ANSI-92. Standardul SQL-92 propune 3 niveluri de conformitate:
nivelul de intrare (entry level), nivelul intermediar (intermediate level) i nivelul
maximal (full level). Fiecare firm i declar nivelul de conformitate al propriului
SGBD n raport de SQL-92.
Limbajul SQL este un limbaj neprocedural (sau declarativ), termenul de
neprocedural fiind vzut mai degrab prin ce dect prin cum, n sensul c nu se
specific dect ce informaie este solicitat i nu cum este obinut aceast
informaie.
SQL poate fi utilizat autonom (manipularea interactiv a bazei de date) sau
poate fi utilizat prin inserare de comenzi SQL ntr-un limbaj de programare.
-
71
Instruciunile SQL n funcie de rolul avut n manipularea datelor i a
tranzaciilor se pot grupa astfel:
instruciuni pentru definirea datelor care asigur