Curs 1 28.02.13
Cap.1. Sisteme de baze de date
In activitatea curenta orice persoana se confrunta zilnic cu manipularea datelor din baze de date. De
ex. cautarea unui nr de tel in agenda telefonica reprezinta o cautare in bazele de date sau
rezervarea unui billet de calatorie repr accesarea in baza de date si completarea unor informatii in
ea.
Bazele de date pot avea dimensiuni, pot fi foarte variate, unele baze de date pot avea zeci sau sute de
inregistrari. Cum ar fi nr de tel din agenda, alte baze de date pot contine milioane de inregistrari
cum ar fi de exemplu baze de date pt evidenta pensionarilor dintr-o tara, a taxelor platite de
fiecare angajat etc.
Utilizatorii unei baze de date au posibilitatea de a efectua mai multe operatii la nivelul bazei de date:
- introduceraa de date sau inserare
- stergerea unor date existente
- actualizarea unor date memorate
- interogarea bazei de date pt. a regasi anumite informatii dupa un criteriu ales
In sens larg, o baza de date este o colectie de date corelate dpvdv logic care reflecta un anumit aspect al lumii reale si este destinat unui anumit grup de utilizatori. In acest sens, bazele de date
pot fi create si mentinute manual cum ar fi de ex. fisele de carti dintr-o biblioteca scrise pe hartie
sau computerizat asa cum regasim majoritatea bazelor de date actuale. In sens restrans, o baza de
date repr. o colectie de date creata si mentinuta computerizat care permite operatii de
introducere, stergere, actualizare si interogarea datelor. Simplele colectii de date care sunt scrise
pe hartie dar nu permit operatii de interogare prin prisma acestei definitii nu sunt considerate
baze de date.
COMPONENTELE UNUI SISTEM DE BAZE ( SBD)
- un sistem de baze de date este un sistem computerizat de mentinere a evidentei unei anumite
activitati folosind baze de date
- coponentele unui sistem de baze de date sunt:
Hardware
Software
Utilizatori
Date persistente
HARDWARE:
- sistemele de baze de date sunt instalate de obicei pe calculatorul de uz general
- sistemele complexe insa necesitand calculatoare foarte puternice
- performantele calc.(viteza de lucru, mem interna si externa, viteza de transfer a infomatiei)
influenteaza in mare masura functionarea sistemelor de baze de date
SOFTWARE:
- intre baza de date si utilizatori se gaseste nivelul software tradus prin sistemul de gestiune de baze
de date
UT, F PR. APL. SGBD -> BD
SGBD-ul receptioneaza cererile utilizatorilor de acces la baze de date pt operatii de introducere,
stergere, modificare sau interogare, apoi le interpreteaza, executa operatiile respective si
returneaza rezultatul utilizatorilor.
Ofera utilizatorilor o viziune a bazei de date la nivel inalt, scutindandui pe acestia de a cunoaste
organizarea particulara a sistemului in unitatea de memorie.
La nivel software, pe langa SGBD este necesara si existenta unui sistem de operare care permite
practic utilizarea de baza a calculatorului.
O aplicatie de baze de date este un program care ofera o anumita utilizare a unei baze de date
De ex programul cu ajutorul caruia se calc salariile intr-o organizatie pe baza unor date ce repr
informatii despre salariati este o aplicatie de baze de date.
Utilizatorii unui sistem de baze de date se pot impartii in programatori de aplicatii, utilizatori finali si
administratorii bazei de date.
Programatorii de aplicatii sunt cei care dezvolta aplicatiile de baze de date folosind limbaje de
programare de inalt nivel.
Aplicatiile rezultate pot fi aplicatii cu executie independenta(care pot functiona independent de
mediul de programare in care au fost concepute) sau pot fi aplicatii interactive sau online.
Utilizatorii finali sunt acei utilizatori care acceseaza baza de date prin intermediul unui program de
aplicatie, program ce le poate da drepturi diferentiate utilizatorilor in functie de calitatea lor fata
de programul respectiv.
Administratorul bazei de date este o persoana care are ca sarcina mentinerea functionalitatii bazei de
date prin stabilirea drepturilor de acces ale diferitelor categorii de utlizatori. Tot odata, acest
administrator efectueaza periodic activitati de salvare a datelor sau back up si monitorizarea
permanenta a sistemului, iar la nevoie opereaza refacerea bazelor de date in momentul aparitiei
unei defectiuni.
Datele memorate intr-o baza de date sunt date persistente, adica ele raman memorate in memoria
externa independent de executia programelor de aplicatii.
Datele intr-o baza de date se introduc sau se modifica pe baza unor date de intrare provenite de la
tastatura, citirea unor fisiere de date sau receptionarea unor mesaje.
Orice SGBD suporta doua categorii de limbaje conceptuale:
- limbaje de descriere a datelor
- limbaje de manipulare a datelor
Limbajele de descriere a datelor permit definirea conceptuala a datelor fara referire la modul lor de
memorare pe suport fizic.
Limbajele de manipulare a datelor permit specificarea operatiilor de introducere, actualizarea,
stergere, interogare a datelor.
ARHITECTURA INTERNA A SIST DE BAZE DE DATE
-contine trei nivele functionale:
Nivelul extern
Nivelul conceptual
Nivelul intern
- nivelul extern este o colectie de scheme externe ce sunt imagini ale diferitelor categorii de utilizatori existand cate o imagine individuala pt fiecare grup
- nivelul conceptual contine schema conceptuala/ logica a bazei de date
- nivelul intern contine schema interna sau fizica a bazei de date
-schema externa contine o subschema conceptuala, mai precis contine descrierea datelor ce sunt
folosite de acel grup de utilizatori.
-schema conceptuala a bazei de date corespunde unei reprezentari pt toti utilizatorii ce contine datele
stocate precum si asocierile dintre acestea
-schema interna sau fizica a bazei de date specifica modul de reprezentare a datelor pe suportul fizic
AVANTAJELE UTILIZARII SISTEMELOR DE BAZE DE DATE
- viteza mare de regasire si actualizare a informatiilor
- compactitate ridicata => volumul ocupat de bazele de date este mult mai redus decat volumul
ocupat de aceleasi informatii scrise in documente obisnuite sau in fisiere necorelate
- redundanta scazuta a datelor memorate => se obtine prin partajarea datelor intre mai multi
utilizatori si aplicatii
- posibilitatea de introducere a standardelor privind modul de stocare a datelor cea ce permite
schimbul de informatii intre diferite organizatii
- mentinerea integritatii datelor prin politica de securitate, prin gestionarea tranzactiilor si prin
refacerea datelor in caz de functionare defectuoasa a diferitelor componente hardware si software
- independenta datelor fata de suportul hardware utilizat
Sistemele de gestiune a bazelor de date ofera o imagine externa a datelor care nu se modifica cand se
schimba suportul de memorare fizic.
CURS 2 8.03.13
Clasificarea SGBD
Exista mai multe criterii de clasificare a SGBD:
1.dupa modelul de BD
-majoritatea BD utilizeaza modelul de date relational
-pe langa ele, cele mai moderne sunt S.D
-istoric,inainte de modelul relational, a mai fost cel ierarhic,retea.
2.dpdv al nr de utilizatori pot fi:
-multiutilizatori cu acces concurent(in acelasi timp)pt mai multi utilizatori
-monoutilizatori care suporta accesul unui singur utilizator
3.dpdv al stocarii datelor : identificam SGBD centralizate in care sist de date sunt stocate pe un
singur calc
-un sistem centralizat poate suporta unul sau mai multi utilizatori dar si in cazul cand sunt mai multi
utilizatori, datele si SG se gasesc pe un singur calc.
-in alte sisteme,SBD pot fi distribuite, sisteme sisteme in care atat datele cat si sistemul de baze de
date se gasesc pe mai multe calc interconectate intr-o retea de comunicatie.
-daca le privim dpdv client-server putem spune ca avem un singur server care raspunde cererilor unui
singur client daca sistemul este monoutilizatori si mai multor clienti daca este multiutilizatori.
-clientii sunt programe care utilizeaza respectiva BD.
-in general, aplicatiile client pot rula pe calc diferit dar interconectat in retea sau intr-un caz particular
pot rula pe server.
-o baza de date distinguita este o colectie de date care apartin logic aceluiasi sistem dar care fizic sunt
memorate pe mai multe calculatoare
-sistemul software care gestioneaza o BD distinguita se numeste SGBD D(distribuita)
-aplicatiile client functioneaza ca si in cazul anterior pe alte calculatoare accesand prin
intermediul retelei BD D.
-exista numeroase avantaje ale utilizatorului SGBD D
Cresterea capacitatii de stocare si prelucrare
Cresterea disponibilitatii si a partajarii de date
-principalul dezavantaj reprez cresterea complexitatii sist de baza
-cea mai importanta cerinta pe care trebuie s-o indeplineasca SGBD D este de a administra eficienta
BD printr-o transparenta crescuta la nivelul datelor.
-transparenta se refera la capacitatea sistemului distribuit de a ascunde detaliile de implementare a.i
utilizatorul sa poata accesa BD fara a cunoaste cu exactitate amplasarea ei sau modurile de
comunicare a datelor.
Modelarea datelor
*un model este o abstractizare a unui sistem care capteaza cele mai importante trasaturi(carac) ale sist relevante dpdv al scopului pt care se defineste modelul respectiv.
-tehnica de indentificare a trasaturilor caracteristice ale unui sistem se numeste ABSTRACTIZARE
-un model de date stabileste regulile de organizare si interpretare a unei colectii de date
-in general sunt utilizate 2 categorii de modele:
-conceptuale
-specializate
-un model conceptual de nivel inalt contine o descriere concisa a colectiilor de date care modeleaza activitatea dorita fara sa detalieze modul de reprez/prelucrare.
-modelele specializate de date (ierarhic,retea) impun anumite structuri speciale de reprez a multimilor de entitati si asocieri dintre ele, structuri pe baza carora sunt dezvoltate SGBD.
Modele conceptuale de nivel inalt
-cel mai utilizat este modelul ENTITATE-ASOCIERE care reprezinta schema conceptuala de nivel
inalt al BD prin multimi de entitati si asocieri intr ele.
-dezvoltarea acestui nivel a.i sa permita extinderea tipurilor de entitati este cunoscuta si sub numele
de modelul-entitate-asociere extins.
DEF: Modelul entitate-asociere este un model conceptual de nivel inalt al unei BD care defineste
multimea de entitati si asocierile dintre ele, dar nu impune niciun mod specific de
structura/prelucare a datelor.
-elementele esentiale sunt: ->CANTITATILE
->ASOCIERILE
-o ENTITATE se defineste ca orice poate fi identificat in mod distinctiv referindu-se la un aspect al
vietii sale reale care poate fi deosebit de restul universului, astfel o entitate poate fi un obiect, o
pers, un concept, etc.
-un ATRIBUT este o prop care descrie un anumit aspect al unei entitati.
-se aleg in momentul realizarii BD pe crietriul relevantei relativ la domeniul de interes a.i asigura dif
Rentierea acelei entitati fata de restul universului
-toate entitatile similare pot fi descrise prin atribute
EX: tipul de angajat reprez orice pers ce are statutul de salariat al unei organizatii
-acest tip de entitate poate fi descris prin mai multe atribute, dintre care o parte sunt atribute de
identificare (nume , CNP, data nasterii) in timp ce altele sunt legate de act. Pers (departament,
functie, salariu brut...)
-o asociere este o corespondenta intre entitati din 2 sau ai multe multimi
-gradul unei asocieri este dat de nr de multimi de entitati asociate
ASOCIERILE BINARE pot fi:
->1:1
->1: multe
->multe : multe
*ASOCIERILE 1:1 reprez asocierea prin care un element din multimea E1 ii coresp un singur
element din E2
*ASOCIEREA 1: multe reprez asocierea prin care un element din multimea E1 ii coresp mai multe
elemente din E2, dar unui elemnt din multimea E2 ii coresp un singur element din E1.
CARDINALITATEA (multiplicitatea) unei asocieri
fata de o multime de entitati este un nr maxim de elemente din aceea multime care pot fi asociate cu
un element din alta multime.
-raportul dintre val cardinalitatilor unei asocieri binare fata de cele 2 multimi de entitati se numeste
RAPORT DE CARDINALITATE
-diagrama entitate asociere reprez modelul entitate asociere prin multimea de entitati si asocierile
dintre ele.
-exista mai multe notatii, cea mai frecventa fiind utilizand rombul in centrul caruia se pune lit A
(asociere), iar in stg si dr se pun cardinalitatile:
-tipul de entitate sectie este un tip de entitate puternica care se caract prin atribute
-tipul de entitate angajat reprez o pers angajata in organizatie, este un tip de entitate puternica si
definita prin nume, prenume, adresa, salariu
-tipul de entitate proiect reprez o actualiz a organigramei este o entitate puternica caract prin
nume,buget
-tipul de entitate dependent reprez o pers aflata in intretinerea angajatului si este un tip de entitate
slaba pt ca se vor inregistra date doar daca angajatul are pers dependente
-asocierea sectiei angajat este de tipul 1:n daca se considera ca o sectie cuprinde mai multi angajati
iar un singur angajat apartine unei singure sectii
-asocierea angajat proiect este de tipul n:n dc se considera ca la fiecare proiect lucreaza mai multi
angajati si fiecare angajat poate lucra la mai multe proiecte
-asocierea angajat dependent este de tipul 1:n deoarece un angajat poate intretine mai multe persoane
iar o peroana dependenta este in intretinerea unui singur angajat.
Curs 3 15.03.13
Modelul entitate- asociere extins
-modelul extins permite definirea de subtipuri ale unui tip de entitati care mostenesc atribute de la
tipuri de entitate pe care il extind( prin care in aest caz se numeste supertip)
- prin denumirea tipurilor se pot crea ierarhii de tipul unei entitati de mai multe nivele:
modelul entitate- asociere in varianta sa simpla este suficient pt modelarea aplicatiilor de baza de date traditionale din domeniul economic si financiar
modelul entitate-asociere extins este utilizat in aplicatii de telecomunicatii, corectare tehnologica, sisteme de informatii geografice etc. Modelul entitate- asociere extins se reprezinta
printr-o diagrama entitate- asociere extinsa, iar ierarhiile de tipuri se pot crea prin specializare
sau generalizare
-specializarea este un proces de abstractizare a datelor prin care pornind de la un tip de entitate dat
se definesc unul sau mai multe subtipuri, diferentiate intre ele in functie de rolul specific pe care
il au in modelul de date ( de ex. pornind de la tipul de entitate angajat se definessc prin
specializare subtipurile secretara, tehnician si inginer pt a diferentia functiile avute de angajati in
firma respectiva. Litera D din marcajul de specializare indica o constrangere de disjunctie
impusa specializarii)
-subtipurile de entitati mostenesc atributele tipului initial, fiecare din ele avand deasemenea atribute
specifice rolului lor (de ex. atributele nume, prenume, data nasterii, adresa si salariu ale tipului
de entitate angajat sunt mostenite de fiecare din subtipurile acestora; ca atribute specifice
subtipul secretara are atributul numar limbi straine cunoscute care repr o masura a calificarii,
subtipul tehnician are atributul calificare care repr gradul de calificare, iar subtipul inginer are
atributul specialitate, sugerand domeniul la care lucreaza)
-generalizarea este procesul de abstractizare, invers specializarii prin care se creaza un supertip de
entitate pornind de la mai multe tipuri de entitati
-pt definirea unei generalizari se identifica atributele comune ale unor mai multe tipuri de entitati
urmand ca aceste atribute sa caracterizeze super tipul de entitate iar atributele care difera raman
caracteristice fiecarui tip
-de ex. daca au fost definite tipurile de entitati automobile (cu nr de inreg, marca, viteza maxima, pret
si numar de pasageri) si entitatea camion ( cu nr de inreg, marca, viteza maxima, pret si tonaj) se
poate definii in super tip al acestor tipuri numit vehicul ( numar inreg, viteza maxima, marca si
pret), acest tip va cuprinde toate atributele comune ale tipurilor initiale (automobil si camion) in
plus, fiecare dintre acestea contine atribute specifice cum ar fi nr de pasageri pt automobil si
tonaj pentru camion
-rezultatul obtinut prin generalizare este ca si in cazul specializarii o ierarhie de tipuri de entitati,
diferenta find data de modul in care se definesc nivelurile ierarhiei
-mostenirea atributelor este porprietate principala a ierarhiilor de tipuri de entitati creata prin
specializare sau generalizare, astfel atributele tipurilor de entitati de nivel ridicat sunt mostenite
de entitatile de nivel scazut
-mostenirea dinre subtipul de entitati si supertipul acestuia se repr in diagrama asociere extinsa printr-
o legatura intre subtip si supertip pe care este plasat un semicerc orientat catre subtip
-in modelul de date relational reprezentarea mostenirii dintre un subtip de entitate si supertipul extins
de acesta se face printr-o asociere 1 la 1, care implica faptul ca o entitate instana a unui subtip este asociata cu o entitate de baza subtip, impreuna reprezentand entitatea corespunzatoare din
realizarea bine modelata
-graficul sugereaza o entitate din realitatea modelata numita secretara si este reprezentata prin doua
instante sau entitati
-o instanta a subtipului secretara de ex S1 este in legatura cu o instanta a subtipului angajat A1 printr-
o corelatie de 1 la 1
CONSTRANGERI DE SPECIALIZARE SI GENERALIZARE
-in general, un supertip poate avea mai multe grupuri de super tipuri reprezentand o specializare dupa
anumite criterii astfel incat subtipurile sunt legate de supertipul respectiv prin legaturi impreuna
cu o litera d care semnifica constrangerea de disjunctie
A1
A2
A3
A4
A5
A6
A7
A8
ANGAJAT
T S1
S2
T1
T2
T3
TEHNICIAN
I1
I2
I3
INGINER
SECRETAR
A
-o specializare are proprietatea de disjunctie daca o entitate nu poate sa apartina decat unuia din
subtipurile specializarii
-daca o entitate poate apartine a doua sau mai multe subtipuri ale unei specializari, atunci acea
specializare se numeste specializare cu suprapunere
-in general in diagrama entitate- asociere specializarile disjuncte se reprezinta pin litera d plasata intr-un cerc. localizat de legatura specializari
-specializarile cu suprapunere se reprezinta similar insa utilizandu-se litera o( overlaping- suprapunere)
MODELE DE DATE SPECIALIZATE
-principalele modele de specializare sunt modeulul ierarhic, modelul retea, modelul relational,
modelul obiect, modelul obiect- relational
1. Modelul de date ierarhic: - o baza de date se reprezinta printr-o structura ierarhica de inreg de date conectate prin legaturi - acest model a fost primul model utilizat in dezvoltarea bazelor de date - cel mai cunoscut SGBD bazat pe modelul ierarhic este sistemul IMS (Information Management
System) dezvoltat de firma IBM in cadrul programului spatial Apollo din 60 - o inregistrare in modelul de date ierarhic este o instanta a unui tip de inregistrare si consta dintr-o
colectie de campuri, fiecare camp continand valoarea unui atribut
- un tip de inregistrare corespunde unui tip de entitate, iar o inregistrare corespunde unei entitati din modelul entitate- asociere
- un tip de legatura in modelul ierarhic este un tip de asociere cu raportul de cardinalitate 1 la n intre duoa tipuri de inregistrari
- tipul de inregistrare din parte cu multiplicitatea 1 a asocierii este numit parinte in timp ce t imp ce tipul cu multiplicitatea neste numit fiu
- schema conceptuala a unei baze de date in modelul ierarhic se reprezinta intr-un nr oarecare de scheme ierarhice
- o schema ierarhica este un arbore directionat reprezentat pe mai multe niveluri in care nodurile sunt tipurile de inregistrari, iar arcele sunt tipuri de legaturi
- fiecare nod cu exceptia nodului radacina are o singura legatura cu un nod de pe un nivel superior numit si nodul parinte, fiecare nod avand una sau mai multe legaturi catre nivelul inferior
Diagrama entitate- asoc.
Schema conceptuala a BD ierarhice
FACULTATE
N
1
FACULTATE
PROFI
FACULTATE
F1 F2.Fn
PROFI
STUDENTI
N
PROFI
P1 P2PM
STUDENTI
S1 S2SV
STUDENTI
M
Arbore de inreg, a datelor
- se poate stabili o corespondenta intre schema conceptuala ierarhica si diagrama entitatae- asociere in sensul ca tipurile de inregistrari corespund tipurilor de entitati, iar tipurile de entitati
corespund tipurilor de asocieri
- in modelul ierarhic sunt admise doar legaturi de tipuri parinte- fiu care corespund asocierilor 1 la 1 si 1 lan din modelul entitate- asociere
- asocierile de tipuri m la n din modelul entitate- asociere nu se pot repr direct in modelul ierarhic, ci doar prin multiplicarea inregistrarilor de tip fiu, atunci cand sunt referite mai multe
inreg de tip parinte => acest lucru conduce la un grad ridicat de redundanta a datelor
- pt exemplul anterior cu facultatea, profesori si studenti acest lucru ar insemna introduceera a multor entitati similare de genul S1 daca studentul S1 are mai multi profesori
- implementarea modeului ierarhic se realizeaza prin memorarea explicita a tuturor legaturilor de tip parinte- fiu, in fiecare inreg de tip parinte memorandu-se lista adreselor la inreg fiu cu care
este asociat => din acest motiv, prin utilizarea modelului ierarhic se pot rezolva doar interogarile
pt care au fost definite explicit legaturile necesare
- ca si avantaje identificam: simplitatea si eficienta in calcul dar cu toate acestea, datorita redundantei datelelor, modelul un mai este folosit
2. Modelul de date retea: - modelul retea foloseste o structura de graf pt definirea schemei conceptuale a bazei de date - nodurile grafului sunt tipuri de entitati iar muchile grafului repr explicit asocierile dintre tipurile
de entitati
- principala deosebire fata de modelul ierarhic este ca in acest caz legaturile de tipurile m la n se repr fara duplicarea inregistrarilor fiecare inreg find referita de mai multe inregistrari
- principalul dezavantaj este ca si in acest caz interogarile trebuie deifinite inca din faza de proiectare prin memorarea explicita a legaturilor intre tipurile de entitati
- in momentul actual, utilizarea acestui model este restransa find utilizat in modelarea scenelor tridimensionale in realitatea virtuala
CURS 4 22.03.13
3.Modelul de date relational:
- se bazeaza pe notiunea de relatie din matematica,care corepunde unei multimi de entitati de acelasi
tip si are o reprezentare usor de inteles si manipulat ce consta dintr-un tabel bidimensional
compus din linii si coloane.
- fiecare linie din tabel reprezinta o entitate si este compusa din multimea valorile,atributelor entitatii
respective,fiecare atribut corespunzand unei coloane a tabelului.
- modelul de date relational a fost propus de E.F CODD in anii 70 fiind realizat in cadrul IBM - chiar daca notiunile de table si relatie difera, in esenta lor cele doua denumiri se pot folosi in
general interschimbabil sugerand acelasi lucru.
Principalele caracteristici:
-datele sunt percecpute de utilizatori ca tabele si numai asa;
-operatorii care pot fi folositi pentru prelucrarea datelor genereaza un tabel rezultat din tabelele
operanzi;
-asocierea dintre tabele se realizeaza prin intermediul egalitatii valorilor unor atribute commune.
Acest lucru permite sa se poata crea orice interogare fara a fi nevoie in prealabil sa fie definite
legaturile explicite dintre cele doua tabele(asa cum e necesar in cadrul modelelor ierarhic si
retea).
Primul sistem de gestiune a bazelor de date relationale a fost System R rezvoltate de IBM in anii70. Pe langa avantajul unui model de date precis si simplu, sistemul de baze de date relational
beneficiaza si de un limbaj de programare unanim recunoscut si acceptat: SQL.
4. Modelul obiect (orientat-obiect)
Este un concept unificator in informatica fiind aplicabil in proramare, in proiectarea hard-ware-ului,a
interfetelor.
Sistemul de baze de date orientat-obiect se bazeaza pe limbaje de programare orientate obiect ce au
capacitate de persistenta in sensul ca datele sunt independente de tipul de viata al programelor
care le creaza/acceseaza prin memorare pe un support magnetic.Acest model a aparut deoarece
modelul relational a fost considerat insuficient de expresiv si cu performante de executie reduse.
Modelul de date orientat-obiect este utilizat in general pentru proiectarea asustata de
calculator,sistemul de informatii geografice sau medicale.
Caracteristicile fundamentale:
-abstractizarea
-mostenirea
-incapsularea
-modularitatea
In programarea orientate-obiect,programele sunt organizate ca si colectii de obiecte,fiecare obiect
fiind o instanta a unei clase.Fiecare clasa reprezinta abstractizarea unui tip de entitat din
realitatea modelata,iar clasele sunt membre ale unei ierarhii de clase corelate intre ele prin relatii
de mostenire.
Orice obiect este incapsulat, ceea ce inseamna ca reprezentare lui nu este vizibila utilizatorilor care au
acees doar la functiile pe care acel obiect este capabil sa le execute.
Clasele si obiectele unui program sunt grupate in modele ce pot fi expuse separate,ceea ce reduce
complexitatea de manevrare a datelor.
Pentru dezolvatea unui sistem de baze date se poate aborda una din urmatoarele strategii:
-extinderea unui limbaj de programare orientat-obiect cu capacitate de administrare a obiectelor
persistente;
-extinderea unui limbaj de programare relationala cu capacitatea de orientare spre obiect;
-dezvoltarea unui limbaj orientat-obiect pentru baze de date complet nou care sa asigure crearea si
interogarea obiectelor persistente.
Intre avantajele sistemului de baze de date orientat-obiect se evidentiaza capacitatea acestora de a
defini si manevra tipuri de date complexe care se pot extinde prin mecanismul de mostenire,ceea
ce duce la cresterea performantelor.
Principalul dezavantaj il reprezinta complexitatea mare a bazei de date si a aplicatiilor deoarece
programatorul trebuie sa prevada in structura obiectelor toate legaturile necesare tuturor
interogarilor.
Cu cat interogarile sunt mai complexe,cu atat sunt necesare mai multe legaturi intre obiecte si deci se
complica structura acestora.
5.Modelul obiect-relational
Reprezinta extinderea modelului relational cu caracteristici ale modelului obiect pentru prelucrarea
tipurilor de date complexe.
In esenta, pastreaza structura datelor in relatii reprezentate ca tabele,dar adauga posibilitatea definirii
unor noi tipuri de date pentru domeniile de valori ale atributelor.
Tipurile de date definite de utilizatori pot fi extinse prin mecanismul de mostenire si pentru fiecare
tip/subtip se pot defini metode pe care le pot executa obiectele de acel tip.
In general,dezvoltarea sistemului de baze de date se realizeaza prin extinderea sistemelor relationale
in mod gradat,adaugandu-se de la o versiune la alta cat mai multe caracteristici posibile ale
modelului obiect pastrand caracteristicile modelului relational.M.STONE BRAKER a oferit o
reprezentare in 4 cadrane a bazelor de date.
In cadrul din stanga sus sunt SGBD care prelucreaza tipuri de date simple,dar permite interogari
complexe.
In cadrul din dreapta jos sunt SGBD care prelucreaza tipuri de date complexe,dar in care rezolvarea
interogarilor este destul de dificila deoarece pentru fiecare interogare trebuie sa fie prevazute
legaturile necesare in structura obiectelor.
In cadrul dreapta sus sunt SGBD care permit interogari complexe,dar si prelucrarea datelor
complexe.Acest model este cel mai complet deoarece permite atat tipuri de date definite de
utilizator,cat si interogari complexe.
EXEMPLE DE SGBD DES INTALNITE:
1.SIST.ORACLE:
SGBD SGBD
RELATIONAL OBIECT-
RELATIONAL
SISTEM DE FISIERE SGBD
OBIECT
Sist.de gestiune a bazelor de date multiutilizator cu implrementari pe platformele windows,linux si
unix oferind performante de executie ridicate,precum si un grad ridicat de protectie si securitate a
datelor.
In toate versiunile, Oracle ofera implementarea completa a caracteristicilor modelului relational,iar
ultimele versiuni cuprind date obiect-relationl
2.SQL SERVER
Este un sist.de gestiune a bazelor de date relationale dezvoltat de Microsoft pt sistemul de operare
windows.
3.MICROSOFT ACCES
Este unul dintre cele mai cunsocute SGBD relationale pentru PC-uri. Dispune de interfata grafica
care faciliteaza interactiunea cu utilizatorul.
4.MY SQL
Este un SGBD relational cu implementari in sistemul de operare windows,unix,linux.
MODELUL DE DATE RELATIONAL
A avut inca de la aparitia sa din 1970 o popularitate destul de mare a.i. majoritatea SGBD care se
dezvolta la ora actuala sunt sisteme relationale.
1.relatii
O baza de date este compusa dintr-o multime de relatii, reprezentand un tip de entitate sau asociere
dintre doua sau mai multe tipuri de entitati. Din aceasta definitie rezulta ca intr-o baza de date
fiecare relatie este unica.O relatie se defineste prin intermediul atributelor sale, atributele unei
relatii, atributele tipului de entitate sau asociere pe care-l reprezinta relatia respective.Fiecare
atribut are un domeniu de definitie ce poate lua o singura valoare.
Curs 5 29.03.13
Un domeniu de definitie este o multime cu nume de valori atomice care au acelasi tip avand o
anumita semnificatie din care isi iau valori atributele relatiilor
-schema relatiei se noteaza cur (a1,a2...an) ;este compusa din numele relatiei si din lista ordonata a atributelor sale (a1,a2...an) fiecare atribut find definit pe domeniul sau de definitie notat cu
D(ai) -schema relatiei este folosita pt a descrie relatia respectiva si se mai numeste tipul sau intensitatea
relatilor
-nr de atribute ale schemei unei relatii se numeste gradul relatiei
-o relatia R definita de schema R(a1,a2,...an) este o multime de n tupluri, fiecare tuplu find o lista ordonata de nvalori, notata cu t= v1,v2,...vn, unde fiecare valoare corespunde unui atribut al relatiei
Observatii:
- din aceasta definitie rezulta ca intr-o relatie nu exista tupluri duplicate, adica doua sau mai multe
tupluri identice pt ca relatia este o multime matematica de tupluri
- tot din aceiasi definitie rezulta cardinalitatea relatiei repr de nr de tupluri
- o relatie corespunde in general unei unitati de entitati din diagrama entitate-asociere a unei baze de
date, iar un tuplu repr o entitate din multimea de entitati
- atributele tipului de identitate din modelul conceptual de nivel inalt devin atributele relatiei in
modelul relational
De ex.: relatia angajati se defineste prin angajati( nume, prenume, data_nasterii, adresa,
functie, salariu)
- domeniile de definitie ale atributelor se specifica prin numele domeniului, semnificatia acestuia,
tipuri de date si restrictia asupra valoriilor in cadrul tipului de date
De ex.:
domeniul coresp campului nume repr domeniul numelor de persoane repr printr-un sir de maxim 30 de caractere in care primul caracter este litera mare urmand ca celalalte litere sa fie mari sau
mici
campul data_nasterii este format din domeniul datelor calendaristice repr prin 3 numere intregi separate prin simbolul minus, primul nr repr anul, al doilea si al treilea luna si ziua; suplimentar
pt campul luna putem avea valori de 1 si 12;
domeniul pt campul salariu este repr printr-un nr zecimal
!Atentie: intr-o tabela nu este necesar ca fiecare atribut sa aiba un domeniu diferit, este posibil ca
unul sau mai multe domenii sa coincida, de ex.: domeniul apartinand campului data_nasterii
poate fi similar cu domeniul ce repr data_angajarii
REPREZENTAREA RELATIILOR PRIN TABELE
-o tabela este o reprezentare a unuei relatii si este compusa din urmatoarele parti:
Numele tabelei: este identic cu numele relatiei pe care o reprezinta
Numar de coloane egal cu nr de atribute ale relatiei, fiecare coloana reprezentand un atribut
Capul tabelei: aici se inscriu numele atributelor relatiei, fiecare atribut find inscris in coloana corespunzatoare
O multime de linii, fiecare linie corespunzand unui tuplu deci unei singure entitati; in fiecare element al unei linii inregistrandu-se valoare atributului corespunzator coloanei in care se afla
elementul respectiv
- notiunile de tabela si relatii sunt identice, sugerand acelasi lucru; notiunea de relatie find insa o
notiune abstracta
- reprezentarea unei notiuni abstracte cum este relatia intr-o forma usor de interpretat cum e tabela
reprezinta una dintre caracteristicele de baza ale modelului relational
- intr-o tabela nu este importanta ordinea tuplurilor deoarece tabela este defnita ca o multime de
tupluri
Ordonarea valorilor atributelor in tupluri:
TUPLUL este considerat o lista ordonata de n valori a atributelor, ordinea valorilor atributelor in
tuplu nefiind importanta atata timp cat se face o legatura intre atribut si valoarea acesteia
- daca presupunem schema relatiei definita ca o multime de atribute R(a1,a2...an), relatia R este o
multime de n tupluri; fiecare tuplu find compus dintr-o multime de n valori ordonate
t(a1,v1,a2,v2,....an,vn) unde vi reprezinta valoarea atributului ai din domeniul sau de definitie
=> in aceasta definitie ordinea atributelor nu mai conteaza, deoarece numele atributului si valoarea
lui sunt grupate impreuna si deaceea aceasta definitie este mai generala
Catalogul sistemului repr partea centrala a oricui SGBD in care se memoreaza descrierea bazelor de
date pe care acesta le administreaza
- catalogul sistemului este o mica baza de date in care sunt memorate date despre datele stocate,
aceste informatii find numite metadate
- in SGBD-urile relationale catalogul este compus din relatii care pot fi actualizate sau interogate
folosind chiar comenzi ale SGBD-ului
- in catalog sunt descrise relatiile, interogarile, procedurile stocate sau functiile definite de
utilizator
LIMBAJUL SQL
Limbajul SQL este un limbaj utilizat de majoritatea SGBD-urilor relationale pt definirea si
manipularea datelor
- a fost inventat in anii 70 in cadrul Companiei IBM, iar in 1987 Institutul American pentru Standarde a elaborat un standard pt limbajul SQL
- majoritatea SGBD-urilor actuale suporta standardul SQL 2, fiecare implementand un dialect specific
- in unele implementari ale limbajului pot lipsi unele comenzi standard, dar pot exista si extensii specifice care prin utilizare reduc gradul de portabilitate al programelor realizate( adica un
program realizat intr-un astfel de SGBD nu poate functiona pe un alt calculator unde exista un alt
tip de SGBD)
- limbajul SQL foloseste termenii de tabela, linie si coloana pt a desemna o relatie, un tuplu sau un atribut, deci este orientat catre reprezentarea datelor in tabele care este mult mai intuit iva pt
proiectanti si programatori
- limbajul SQL cuprinde atat componenta de descriere a datelor relationale cat si componenta de manipulare a datelor, ambele find absolut necesare in gestiunea bazelor de date
- pe langa aceste componete principale, standardul SQL mai cuprinde si urmatoarele componente:
1. Controlul tranzactiilor care contine comenzi pt specificarea tranzactilor 2. Controlul securitatii si al protectiei datelor care contine comenzi de administrare a bazelor de
date pt definirea utilizatorilor si a drepturilor acestora de acces la tabele
-aceasta componenta este puternic dependenta de SGBD, administrarea bazelor de date reprezentand
o activitate foarte complexa
-limbajul SQL este un limbaj neprocedual, o instructuine SQL specificand ce infromatii trebuiesc
setate sau obtinute, netrebuind sa fie specificate operatiile ce urmeaza sa le execute
- contine numai instructiuni de definire si de manipulare a datelor si nu contine instructiuni de control
al fluxului executiei
Instructiunea SQL este o secventa de elemente componente ce se termina in punct si virgula; fiecare
instrcutiune continand o comanda care specifica ce actiune se efectueaza, urmata de alte
elemente componente ce semnifica operatii, clauze sau parametrii
De ex.: comanda SELECT* FROM studenti contine comanda SQL SELECT, urmata de alte
elemente ale instructiunii
- un element al unei instructiuni poate fi un cuvant cheie, un identificator, o constanta sau un caracter
special
- cuvintele cheie sunt elemente componente cu semnificatie fixa in limbajul SQL, acestea putand fi
comenzi de ex.: SELECT, INSERT, UPDATE, DELETE; operatori de ex.: AND, LIKE; clauze
de ex.: WHERE, SET sau VALUES
-identificatorii sunt elemente componente care denumesc tabele, coloane sau alte obiecte ale bazei de
date
CURS 6 4.04.13
Pe langa acest tip de identificatori simpli, format de obicei dintr-un sg cuvant mai exista un tip de
identificatori numiti identificatori delimitati care sunt formati dintr-o secventa de caractere avand
la inceput si la sf simbolul ghilimele.
Constante : - pot fi siruri de caractere, nr intregi, nr reale sau nule.
O constanta sir de caractere consta intr-o secventa de caractere delimitate la inceput si la sfarsit de
simbolul (). Caracterele speciale : unele caractere speciale care nu sunt litere sau cifre pot avea rol de operatori
SQL sau pot avea o semnificatie speciala in cadrul comenzilor SQL.
De exemplu : simbolul ; e util pt delimitarea sf unei comenzi;
Simbolul . e util ca punct zecimal iar caracterul * e fol ca operator de inmultire sau
cand urmeaza specificarea tuturor coloanelor dintr-o tabela atunci urmeaza cuv SELECT.
Expresii, operatori si functii SQL
O expresie SQL consta din unul sau mai multi operanti , operatori si paranteze.
Un operant poate fi numele unei coloane dintr-o tabela, o constanta sau valoarea returnata de o fct in
timp ce parantezele sunt utilizate pt a preciza ordinea operatiilor in sit in care aceasta ordine este
diferita de cea implicate.
Operatorii de comparative SQL:
-A Between, MIN, AND, MAX compara a cu 2 val min si max
-A IN (v1,v2..vn) compara A cu o lista de valori v1,v2vn -A IS NULL- compara A cu valoarea nula
-A IS NOT NULL- compara A cu not null
-A LIKE Gr de caractere compara A cu un sir de caractere
Operatorii logici ai limbajului SQL sunt notati prin cuvintele cheie: AND, OR, NOT. Toti acesti
operatori se aplica unor variabile logice cu 3 valori Adevarat Fals Nul.
Valoarea null semnifica lipsa de informatie.
A B A & B A OR B
-adevarat
-adevarat
-adevarat
-fals
-fals
-nul
-adevarat
-fals
-nul
-fals
-nul
-nul
-adevarat
-fals
-nul
-fals
-fals
-nul
-adevarat
-adevarat
-adevarat
-fals
-nul
-nul
A NOT A
-adevarat
-fals
-null
-fals
-adevarat
-null
Operatorii relationali sunt notati prin cuvintele cheie cum ar fi UNION si INTERSELECT sau
MINUS.
Functiile definite in SQL sunt de 2 categorii:
-functii agregat
-functii scalare
Functiile agregat calculeaza un rezultat din mai multe linii ale unei tabele [SUM, MIN, MAX, AVG].
Functiile scalare primesc unul sau mai multe argumente si returneaza valoarea calculata sau null
in caz de eroare.
Tipuri de date si domenii
In limbajul SQL sunt definite mai multe tipuri de date:
- numerice (text) sir de caractere, sir de biti, date calendaristice si timp Tipul numeric include nr inreg de diferite dimensiuni cum ar fi numere reale reprezentate cu virgule
flatanta in diferite parti.
- sir de caractere- permite definirea sirurilor de caractere de lungime fixa sau variabila.
- duble tipuri pt repr siruri de n sau mai mici decat n caractere. In cazul celor cu lungimea fixa se
completeaza cu spatii libere sirul pana ajunge la lungimea n iar in cazul celor variabile se
memoreaza doar atatea caractere cate are sirul.
Tipul sir de biti- defineste secvente de cifre binare adica care pot lua vaoarea 0 sau 1 de lungime fixa
sau variabila.
Tipurile pt data calendaristica si timp sunt date ..Domeniile atributelor in SQL se specific ape baza tipurilor de date predefinite ale limbajului SQL deci observam ca sunt destul de diferite fata de
notiunea teoretica de domeniu fiindca nu se face nicio precizare a specificatiei domeniului.
Instructiuni SQL de definire a datelor
Componenta de definire a datelor, a limbajului SQL permite crearea modificarea si distrugerea
obiectelor bazei de date, a valorilor indexurilor sau a procedurilor.
Crearea se face cu ajut instructiunii CREATE avand urmatoarea sintaxa CREATE TABLE NUME
TABELA (coloana 1, domeniul 1 [constrangeri coloana 1]. Coloana n domeniul n [constrangeri coloana n] [constrangeri tabela] ).
De exemplu : CREATE TABLE STUDENTI (cod_matricol (text, (6), nume (text, (35)), specializare,
(text (20)).
Instructiunea CREATE TABLE defineste atat un tip de relatie cu atribute specificate cat si o variabila
relatie care initial este vida, adica nu contine niciun tuplu.
Tabelele create cu instructiunea CREATE TABLE sunt numite si tabele de baza, ele fiind memorate
in fisierele bazei de date si apoi putand fi accesate pt introducerea, modificarea sau inregistrarea
datelor.
Un tabel vedere este un tabel virtual care nu este memorat fixic in fisierele ce reprez o solutie dupa
un anumit criteriu al datelor memorate in unul sau mai multe tabele de baza.
Modificarea si stergerea tabelelor Comanda de modificare a tabelelor este ALTER TABLE. Ea permite adaugarea sau stergerea unor
atribute, modificarea domeniilor unor atribute precum si adaugarea, modificarea sau stergerea
unor constrangeri ale tabelei.
Pentru stergerea unei coloane dintr-o tabela se utilizeaza cuvantul cheie DROP, in comanda ALTER
TABLE. De exemplu daca dorim sa stergem coloana specializare din cadrul tabelei Studenti se
face prin ALTER TABLE studenti DROP specializare.
Instructiuni de manipulare a datelor
Instructiunile de manipulare contin una din comenzile SELECT, INSERT, UPDATE, DELETE.
Instructiunea SELECT este instructiunea de interogare a limbajului SQL prin care se regasesc
informatiile dorite din una sau mai multe tabele ale bazei de date.
Sintaxa instrucitunii SELECT este SELECT [DISTINCT] lista coloane FROM lista tabele [WHERE
conditie] [clause secundare].
Ca rezultat al intructiunii SELECT se obtine o tabela care contine coloanele din lista coloanelor ale
aceor linii din produsul cartezian al tabelelor din lista de tabele pt care expresia logica conditie
este adevarata.
In instructiunea SELECT se remarca 3 clauze fundamentale: SELECT FROM WHERE.
Clauza SELECT defineste coloanele care vor aparea in rezultat. FROM defineste tabelele in care se
gasesc aceste coloane iar WHERE def conditia pe care toate liniile din tabela rezultata trebuie sa
le respecte.
Clauzele secundare sunt ORDER BY, GROUP BY , HAVING.
Curs 7
12.04.13
Clauza SELECT introduce lista coloanelor unor tabele sau expresii care vor fi selectate si afisate.
Coloanele din lista trebuie sa apartina uneia din tabelele specificate in clauza FROM. (Ex:
SELECT nume FROM salariati=> va selecta toti salariatii din tabela acces si nume neexistand
conditie, obligatoriu fiind ca atributul nume sa se regaseasca in tabela salariati.) Interogarea de
mai sus poate da 2 sau mai multe linii identice in cazul in care avem mai multi salariati cu
aceeasi nume. In aceasta situatie daca se doreste afisarea fiecarui nume o singura data se va
utiliza parametrul distinct pt eliminarea liniilor duplicate in interogarea SELECT distinct nume
FROM salariati. Daca dupa clauza SELECT in locul numelor de coloane se foloseste simbolul
* atunci se vor selecta toate atributele produsului..al tabelelor specificate in clauza FROM.ex: SELECT * FROM angajati va afisa toate coloanele si toate valoriile stiind ca nu va
aveea conditie. In clauza SELECT se pot introduce functii totalizatoare numite si functii
agregate.
Principalele functii agregate sunt:
- COUNT- calc numarul de linii al rezultatelor - SUM- calc suma tuturor valorilor dintr-o coloana - MAX- calc valoarea cea mai mare dintr-o coloana - MIN- calc valoarea cea mai mica dontr-o coloana - AVG calc media aritmetica a valoriilor dintr-o coloana
Ex: SELECT COUNT(*) FROM angajati ne va da nr total de inregistrari din tabela angajati adica nr
angajatiilor
SELECT MAX (salariu) FROM angajati; SELECT MIN(salariu)FROM angajati=>calc val maxima
si minima a salariului pt toti salariati
SELECT AVG(salariu)FROM angajati=> calculeaza valoarea medie a salariilor
In clauza SELECT se pot revenii atributele sau se pot specifica nume ptr expresii folosind urm
sintaxa:
SELECT nume 1 nume 2 as nume_2 FROM lista de tabele WHERE contine EX:daca vrem sa
calculam salariu net pe baza salariului brut stiind ca salariul net repr 35%din sal brut il vom
avea: SELECT nume,sal_brut * 0.61 as sal_net as sal_net FROM angajati
OBSERVATII: nou_nume care urmeaza clauzei AS trebuie sa fie un singur sir de caractere daca sunt
mai multe cuvinte se va considera un nou_nume doar primul cuvant AS urmand ca celalate
cuvinte sa reprezinte o eroare de sintaxa.
CLAUZA FROM: Este obligatoriu daca una din clauzele SELECT WHERE sau evig apar nume de
coloane ale unor tabele. In acest caz lista de tabele care insoteste clauza FROM trebuie sa
contina numele tuturor tabelelor separate prin virgule, ale caror coloane se folosesc. Daca lista
contine mai mult de o tabela atunci numele coloanelor din clauza SELECT trebuie sa fie diferite
iar daca nu sunt diferite se va specifica numele tabelei in care face parte coloana respectiva. Ex:
daca avem si in tabela angajati si in tabela departamente campul nume si se doreste afisarea
numelui angajatului alaturi de numele departamentului in care lucreaza, vom avea: SELECT
angajati.nume, departamente.nume FROM angajati,departamente WHERE angajati.cod_dep =
departamente.cod_dep. In intructiunea prezentata de ex atat campul nume cat si cod_dep se
gaseste in ambele tabele.
CLAUZA WHERE: Restrictioneaza tuplurile sau linii returnate ca rezultat, la acele tupluri care
indeplinesc conditia introdusa de aceasta clauza sub forma unei expresii logice. O expresie
logica se contruieste din valori logice operator logici(AND or NOT) si paranteze. O valoare
logica se obtine in mod obisnuit ca rezultat al comparatiiei intre 2 operanti folosind un operator
de comparative. Un operant poate fi un atribut, o constanta, valoarea unei expresii logice sau
valoarea returnata de o functie. Ex: SELECT Nume FROM Angajati WHERE salariu > 1000
AND sal < 1500 AND functie=economist returneaza numele salariatiilor ce au salariu cuprins intre 1000-1500 si functie de economist.
CLAUZA ORDER BY: introduce numele atributului dupa care se face ordonarea liniilor in tabela
rezultat. Ordonarea se face implicit crescator cand campul respectiv este un numar, si alfabetic
cand campul este un cuvant si de caracter. In situtia in care se doreste ordonarea invers alfabetica
sau descrescatoare se va utiliza dupa numele campului respectiv cuvantul DESC. Ex: SELECT
Nume FROM Angajati ORDER BY Nume => se va afisa numele tuturor angajatiilor in ordine
alfabetica. Sau SELECT Nume,Salariu FROM Angajati ORDER BY Salariu => ne va afisa
numele salariatiilor pornind de la salariatul cu salariu cel mai mic pana la cel mai mare; sau
SELECT Nume,Salariu FROM Angajati ORDER BY Salariu DESC ne va face ordonarea
salariatiilor pornind de la sal cel mai mare ajungand la cel mai mic salariu.
CLAUZA GROUP BY: se foloseste ptr gruparea rezultatelor functiilor agregate in functie de
valoarea uneia sau a mai multor coloane. Ptr aceasta intrsuctiune SELECT se introduce valoarea
GROUP BY urmata de numele coloanei sau coloanelor dupa valoarea carora se doreste gruparea
rezultatelor functiei agregate. In acest caz functiia agregat se aplica separat doar pt acele linii
care au aceeasi valoare a atributelor specificate in grupare. Ex: SELECT COUNT(*), Cod_dep
FROM Angajati GROUP BY Cod_dep ne va afisa pt fiecare cod departament cati angajati avem.
CLAUZA HAVING: functiile agregat nu pot fi utilizate impreuna cu clauza WHERE. Pt folosirea
unor functii agregate intr-o conditie se va utiliza clauza HAVING care este asemanatoare cu
WHERE dar care permite utilizarea functiilor agregate in expresia conditionala. Ex: SELECT
Nume FROM Angajati HAVING Salariu= MAX Salariu-> va returna numele salariatiilor cu
salariu maxim.
SUBINTEROGARI: mai sunt numite si intructiuni SELECT imbracate. Instructiunile select se pot
imbraca de mai multe niveluri, o intructiune avand ca argument rezultatul a altor intructiuni
numite subinterogare. Cea mai cunoscuta sintaza este SELECT lista atribute FROM tabel1
WHERE coloanaX IN(SELECT coloanaX FROM tabele2 WHERE CONDITIE). IN
ACEASTA constructie valoarea de comapratie din clauza WHERE a primei intructiuni SELECT
se defineste prin o subinterogare care consta in alta instructiune SELECT. Ex: daca dorim sa
afisam numele salariatului cu sal cel mai mare dar ne utilizand HAVING putem utiliza o
subinterogare astfel SELECT Nume FROM Angajati WHERE Salariu=(SELECT
MAX(salariu)FROM angajati).
INSTRUCTIUNEA INSERT: se utilizeaza pt introducerea datelor in tabele avand urm sintaxa:
INSERT IN nume tabela( coloana1,coloana2,...coloanaN) VALUES (val1,val2....valn)
OBSERVATII: intre valori si numele de coloane trebuie sa exista o corespondenta de la 1 la 1 ptr ca
fiecare valoare sa intre in coloana dorita. Daca se cunoaste cu exactitate ordinea coloanelor nu
mai este necesara specificarea acestora in clauza INSERT ci este necesara doar introducerea
valorilor in aceeasi ordine. Ex: daca avem tabela salariati(cnp, nume, salariu)putem introduce
date utilizand INSERT. INSERT INTO table Angajati(sal,nume,cnp) VALUES (1000,ana popescu,230201080012)sau se pot introduce valoariile direct in ordinea coloanelor in tabela. INSERT INTO Salariati VALUES(2930201080012, ana popescu, 1000)
INSTRUCTIUNEA UPDATE: permite actualizarea valoriilor coloanelor din 1 sau mai multe linii
ale unui tabel.
UPDATE nume tabela SET coloana1=expresie1, coloana2=expresie2....[WHERE conditie]
CLAUZA WHERE sa fie facuta doare pt acele linii care definesc conditia data. Daca este omisa
clauza WHERE vor fi modificate valorile coloanei specificate dupa SET pt toate liniile tabelei.
Ex: UPDATE angajati SET salariu=1800 WHERE nume=ana popescu=> va modifica sal
angajatului ana popescu la valoarea 1800.
INSTRUCTIUNEA DELETE: permite stergerea uneia sau a mai multor linii, dintr-o tabela de
aceiasi forma:
DELETE FROM nume tabela[WHERE conditie] din tabela se sterg acele linii care respecta conditita
data din clauza WHERE. Daca clauza WHERE lipseste vor fi sterse toate inregistrarile din
tabela. Ex : daca dorim sa stergem din tabela angajati toti angajatii din cadrul departamentului
productie vom avea DELETE FROM angajati WHERE dep=linie deproductie
CONSTRANGERI DE INTEGRITATE -sunt reguli care se definesc la proiectarea unor baze de date si trebuie sa fie respectate de orice stare
a acesteia.
-relatiile unor baze de date reflecta realitatea modelata si de aceea valoriile pe care le contin trebuie
sa respecte anumite reguli care sa corespunda celor din realitate
-constrangeriile se pot clasifica dupa locul unde sunt definite si dupa modul in care sunt definite
-d.p.d.v. al locului unde sunt definite constrangeriile pot fi constrangeri INTRA RELATIE si
constrangeri INTER RELATIE
CONSTRANGERIILE INTRA RELATIE: sunt reguli care impun in cazul unei singure relatii si
care asigura integritatea datelor acestuia. La randul lor aceste constrangteri sunt de 3 feluri:
- constrangeri de domeniu- care se impun valoriilor atributelor si asigura integritatea domenilor atributelor
- constrangeri de domeniu tuplu care se impun asupra tuplurilor unei relatii asigurand identificarea corecta prin intermediul cheiilor PRIMARE sau CANDIDATE.
- constrangeri impuse prin dependente de date: sunt construite prin care valoriile unei atribute ale unei relatii determina valoriile altor atribute din cadrul aceleiasi relatii.
Sunt constrangeri care se impun intre 2 sau mai multe relatii. Cele mai importante sunt contrangeriile
de integritate referentiala care se realizeaza prin intermediul cheiilor straine si asigura asocierea
corecta a relatiilor. D.p.d.v. a modului de definire constrangerile unei BD, se pot calsifica in
constrangeri:
-inerente
-implicite
-explicite
CONSTRANGERILE INERENTE sunt constrangeri care apartin modelului de date. Ele nu trebuiesc
specificate prin care se fac definirea relatiilor,dar trebuie respectate atunci cand se fac o definire.
CONSTRANGERILE IMPLICITE sunt reguli care se definesc odata prin definire schemelor de
relatii, sunt memorate in baza de date iar sistemul de gestiune periferica si impune respectarea
lor. In aceasta categorie se incadreaza constrangeriile de domeniu, de tuplu, si cele de integritate
referentiala.
CONSTRANGERILE IMPLICITE sunt constrangeri suplimentare pe care trebuie sa respecte relatiile
unei baze de date si care nu sunt impuse automat de SGBD ci necesita proeduri speciale de
verificare si impunere a respectarii lor. Constrangerea de domeniu sunt conditii impuse valoriilor
atributelor astfel incat acestea sa corespunda semnificatiei pe care o au in realitatea modelata.
Dintre constrangeriile de domeniu constrangerile NOT NULL si constrangerile de val
EXPLICITA DEFAULT sunt constrangeri cu caracter general si se pot aplica oricarui atribut.
Curs 8 19.04.13
Constrangerile de tuplu: cheia primara si cheile secundare
Orice relatie este definita ca o multime de tupluri, ceea ce inseamna ca tuplurile trebuie sa fie
distincte, deci valorile continute in fiecare tuplu trebuie sa fie o combinatie unica pentru a
respecta unicitatea. Deobicei, intr-o schema de relatie exista o submultime de atribute SK (Super
Key) cu proprietatea ca nu exista doua tupluri distincte ale relatiei care sa aiba aceiasi combinatie
de valori a atributelor.
O super cheie(SK) a unei relatii este o submultime de atribute ale relatiei care prezinta proprietatea de unicitate, adica orice combinatie de valori ale atributelor super cheii este unica in
orice stare a relatiei. Acest lucur inseamna ca daca se cunoaste combinatia de valori ale
atributelor super cheii, atunci acel tuplu poate fi identificat in mod unic. Orice relatie are cel
putin o super cheie, cea formata din multimea tuturor atributelor sale.
O cheie candidata este o SK ireductibila. Conform definitiei de mai sus, aceasta inseamna ca o cheie candidata trebuie sa respecte urmatoarele doua proprietati:
Unicitate: nu exista doua tupluri diferite care sa contina aceiasi combinatie de valori ale atributelor cheii candidate
Ireductibilitate: nu exista nici o submultime proprie nevida a cheii candidate care sa aiba proprietatea de unicitate => acest lucru inseamna ca daca se elimina un atribut oarecare din
submultimea cheii candidate, noua submultime de atribute numai are proprietatea de unicitate
O cheie candidata este o SK minimala, adica o SK din care nu se poate elimina nici un atribut fara a
pierde proprietatea de unicitate.
Proprietatea cheii de a avea o valoare unica pt fiecare tuplu este o constrangere de integritate a
tuplurilor care trebuie respectata de orice stare a relatiei in orice moment.
O cheie candidat poate fi compusa dintr-un singur atribut, in acest caz numindu-se simpla sau
compusa din mai multe atribute, numindu-se compusa. De ex.: in relatia angajati( CNP, Nume,
Prenume, Salariu) nu se poate desemna ca si cheie submultimea formata din atributele Nume,
Prenume deoarece nu exista nici o garantie ca nu vor exista la un moment dat doua persoane cu
acelasi nume si prenume.
O cheie primara este o cheie candidata careia proiectantul ii confera un rol special de accesare si identificare a tuplurilor relatiei. Asupra cheii primare se impun urmatoarele restricitii:
Nici o valoare a atributelor cheii primare nu poate fi modificata prin operatii de actualizare a datelor
Nu se admit valori de nul pentru nici unul din atributele cheii primare
O cheie secundara este o cheie candidata care nu a fost desemnata de proiectant drept cheie primara, ea putand admite valori de nul, daca se respecta conditia de unicitate a valorilor.
Alegerea cheii primare din mai multe chei candidate este arbitrara, dar in mod obisnuit se alege cheia
cu nr cel mai mic de atribute. Deoarece conditia de unicitate se refera la fiecare tuplu nou
introdus, inseamna ca prin introducere, noul tuplu va fi comparat cu toate atributele cheilor
primare existente.
O cheie primara compusa din atributele existente ale tipului de entitate se numeste cheie naturala. In general cheile naturale sunt compuse din mai multe atribute, ceea ce duce la scaderea
eficientei bazei de date
In practica, de cele mai multe ori se folosesc chei artificiale.
De ex.: in relatia salariati ( Nume, Prenume, Adresa, Salariu, Departament) putem avea cheia naturala
formata din Nume, Prenume si Adresa, sau putem introduce o cheie artificiala cum ar fi de ex
Cod angajat. Atributul Cod angajat este o cheie artificiala prin care se identifica unic fiecare
tuplu.
In limbajul SQL , constrangerea de cheie primara se introduce prin comanada Create Table. Daca
cheia primara este simpla se specifica la definirea atributului, iar daca este compusa se specifica
dupa definirea atributelor, ca o constrangere de tabele
Constrangeri intre relatii- cheia straina
Asocierile intre tipurile de entitati definite in modelul conceptual, prin diagrama entitate- ascoiere se
realizeaza modelul relational prin intermediul cheilor straine
De ex.: daca presupunem relatii Salariati si Departamente, intre ele existand o asociere de tipul 1 la n,
putem introduce un atribut suplimentar, numit Cod sectie care va reprezenta identificatorul
sectiei in care lucreaza angajatul respectiv. Alt exemplu: vom avea tabelele Angajati(
Cod_angajat, Nume, Prenume, Adresa, Salariu si Cod_dep) si tabela Departamente (Cod_dep,
Denumire, Adresa). In momentul introducerii datelor, pentru orice angajat va trebui sa
introducem un Cod_dep care sa existe in tabela Departamente.
Cheia straina este o submultime de atribute ale unei relatii R1 care refera relatia R2 si satisface
urmatoarele conditii:
1.) Atributele cheii straine sunt definite pe domenii compatibile cu cele ale atributelor unei chei candidate din relatia R2.
2.) Combinatia de valori a atributelor cheii straine intr-un tuplu din relatia R1 fie este identica cu combinatia de valori ale atributelor cheii candidate a unui tuplu oarecare din starea curenta a
relatiei R2, fie ia valoarea nul.
Relatia care contine cheia straina se numeste relatia care refera, iar relatia care contine cheia
candidata se numeste relatia referita. D.p.d.v. relational doua domenii sunt compatibile daca ele
sunt compatibile semantic.
De ex.: campul Cod_dep repr pentru ambele tabele, Salariati si Departamente un identificator al
sectiei, pe de alta parte daca relatia salariati are campurile Nr_crt, Nume, Prenume, Salariu,
Cod_dep iar tabela Departamente are campurile Nr_crt, Nume, Denumire si Adresa, se observa
ca atributul Nr_crt are intelesuri semantice diferite pt cele doua tabele. Pe deoparte, pt tabela
Salariati reprezinta Nr_crt al salariatilor iar pentru tabela Departamente reprezinta Nr_crt al
departamentului. In acest caz, legatura logica dintre cele doua tabele se face cu ajutorul campului
Cod_dep din tabela Salariati care trebuie sa coincida cu Nr_crt din Departamente. Cheia straina
realizeaza asocierea n la 1 intre relatiile R1 si R2, reprezentand o constrangere intre doua relatii
numita constrangere referentiala.
Integritatea referentiala este proprietatea bazei de date care garanteaza ca orice valoare a unei chei
straine se regaseste printre valorile cheii candidate corespunzatoare din relatia referita sau cheia
straina are valoarea nula.
Observatii: Numele atributelor care fac legatura intre cele doua relatii nu trebuie sa fie identic.De ex.
tabela Salariati(Cod_sal, Nume, Prenume, Salariu, Cod_dep) si tabela Departamente(
Cod_departamente, Denumire, Adresa) au ca atribute de legatura logica Cod_dep si
Cod_departamente. Desi numele celor doua difera, in momentul introducerii datelor valorii
introduse in Cod_dep din tabela Salariati, trebuie sa se regaseasca in valorile campului
Departamente din Departamente .
Mentinerea integritatii referentiala a datelor
Operatiile de modificare a starii unei relatii ( stergere, modificare si introducere) pot afecta
integritatea referentiala a bazei de date, daca modificarile se fac intr-o singura relatie fara a tine
cont de referintele cu alte relatii.
Operatia de introducere se poate face fara restricitii intr-o relatie referita, in schimb la introducerea unui nou tuplu intr-o relatie care refera, trebuie sa se verifice ca in relatia referita
exista un tuplu care are valorile atributelor cheii referite egale cu valorile atributelor cheii straine
a tuplului de introdus.
De ex.: daca dorim sa introducem o noua inregistrare in tabela Departamente, introducerea se face
nemijlocit, dar daca dorim sa introducem in tebela Angajati un nou angajat, atunci va trebui sa
verificam daca valoarea introdusa la Cod_dep in tabela Angajati se regaseste in una dintre
valorile campurile Cod_dep din Departamente
Operatia de stergere: se face fara nici o restricite intr-o relatie care refera o alta relatie. Intr-o relatie referita, stergerea unui tuplu poate fi execuata in doua moduri: stergere restrictionata sau
stergere in cascada. Stergerea restrictionata interzice stergerea unui tuplu din relatia referita, daca
acesta este referit de un tuplu din relatia care o refera. Stergerea in cascada permite stergerea
unui tuplu din relatia referita daca tuplul sters era referit de unul sau mau multe, atunci se sterg si
acestea din relatia care o refera, iar daca tuplurile care trebuiesc sterse sunt la randul lor referite
de alte tupluri, atunci trebuie sterse si acestea s.a.m.d.
Operatia de actualizare: poate fi privita ca o stergere, urmata de o introducere, deci restrictiile de actualizare reprezinta combinatia restrictiilor de introducere si stergere.
Curs 9 26.04.13
Indexarea relatiilor
Unul dintre avantajele sistemului de gestiune este ca proiectantul bazei de date nu trebuie sa cunoasca
informatii detaliate despre organizarea datelor. Acest lucru se realizeaza prin independenta
datelor. Aceasta independenta a datelor nu este completa, a.i. in momentul actual creatorii
bazelor de date trebuie sa ia in considerare influenta modalitatii de stocare a datelor in
functionarea diferitelor aplicatii, astfel zona de gestionare a datelor poate conduce la scaderea
timpilor necesara executiei. Intr-o relatie care este privita ca o colectie de elemente NU sunt
admise elemente duplicate.
Operatiile de baza ca orice colectie de elemente sunt: cautarea, inserarea si stergerea. In timpul unei cautari se face parcurgerea tuturor elementelor pt a se verifica conditiile impuse. In cazul
unei multimi reprezentate printr-o colectie neordonata de elemente, timpul de cautare al unui
element creste proportional cu nr de elemente ale multimii, deoarece in cazul cel mai defavorabil
este necesara parcurgerea tuturor elementelor colectiei de date pt a se gasi elementul cautat.
Timpul de cautare in interiorul unei multimi este mult diminuat daca respectiva multime este
ordonata.
De ex.: pt inserarea unui element intr-o multime trebuie cautat mai intai elementul respectiv in
multimea data daca exista un element identic se interzice introducerea noului element, iar daca
nu exista se permite introducerea acestui element.
Un arbore binar este un arbore in care eticheta fiecarui nod este mai mare decat etichetele tuturor
nodurilor sub arborele stang si mai mica decat etichetele tuturor nodurilor subarborelui drept.
Reprezentarea unei multimi prinr-un arbore binar ordonat fiecare element al multimii corespunde
unui nod al arborelui, iar pozitia nodului este data de valoarea etichetei elementelui.
Tipul de cautare, inserare si stergere al unui element intr-un arbore binar coordonat este proportional
cu logaritmul numarului total de elemente al arborelui.
Un index al unei relatii este o structura auxiliara memorata in baza de date care permite accesul rapid
la inregistrari prin ordonarea acestora. La definirea unei relatii se stabilesc doua categorii de
indexuri: indexul primar al relatiei, care determina localizarea tuplurilor in fisierele bazei de date
si zero, unu sau mai multe indexuri secundare care nu modifica localizarea tuplurilor, dar sunt
folositi pt regasirea tuplurilor pt un criteriu dat .
Indexul primar: se defineste pe unul sau mai multe atribute ale relatiei si reprezinta cheia dupa care
ordoneaza tuplurile relatiei. Fiecare SGBD vede o anumita modalitate de reprezentare a
indexului primar. In general este utilizat termenul de eticheta de ordonare pt a un fi confundat cu
cheia relatiei. Majoritatea SGBD-lor definesc in mod implicit indexul primar pe cheia primara a
relatiei.
Operatiile de cautare sau stergere in care se specifica valoarea atributului index-primar se executa
eficient prin calcularea in primul rand al grupului caruia ii apartine tuplul prin aplicarea unei
functii de dispersie asupra valorii atributului index. Procesul continua cu cautarea pozitiei
tuplului in lista inlantuita corepsunzatoare tuplului.
De ex.: daca presupunem relatia salariati(Cod_sal, Nume, Adresa, Cod_dep, Salariu) si dorim
stergerea angajatului cu codul 127 se va gasi tuplul ce contine ca valoare 127 in atributul
Cod_sal, aceasta find valoarea indexului primar, dupa care se poate sterge.
Daca intr-o operatie de cautare sau stergere nu se specifica valoare atributului index-primar, atunci
cautarea unui anumit tuplu presupune parcurgerea tuturor listelor si tuturor grupurilor in cazul
cel mai nefavorabil al tabelei de dispersie.
De ex.: daca se doreste stergerea angajatului Popescu Alin din tabela Salariati, trebuie parcurse
tuplurile cautandu-se valoarea numelui sa fie egala cu valoarea Popescu Alin. Situatia ce mai
nefavorabila este aceea in care tuplul cu valoarea Popescu Alin este ultimul tuplu al relatiei, iar
pentru steregerea lui este necesara parcurgerea tuturor elementelor.
Indexurile secundare: aceste indexuri pe un atribut A al unei relatii este o structura care contine o
multime de perechi de forma (V,L) ordonate dupa V, fiecare pereche corespunzand unui tuplu al
relatiei V din valoarea atributului A, iar L este adresa tuplului in structura indexului primar al
relatiei.
Nodurile arborelui sunt ordonate dupa valorile atributelui indexat. Valorile Mihai Andrei Paul Vlad
al acestui atribut sunt in ordine alfabetica. Valorile etichetelor L1, L2, L3, L4 indica adresele
tuplurilor corespunzatore in strucutura indexului primar iar linile repr adresele nodului in
arborele de reprezentare a arborelui final.
De ex.: daca ne intrebam care este adresa salariatului Mihai, aceasta adresa poate fi aflata usor pe
baza indexului secundar definit pe atributul Nume. Astfel se cauta nodul arborelui indexului
secundar care are eticheta Mihai, valoarea L4 din acest nod indicand adresa prin indexul primar
care indeplineste conditia data.
Utilizarea indexului este facuta pt cresterea performantelor bazei de date si in general nu fac parte din
limbajul standard SQL dar cu toate acestea SGBD-urile incorporeaza indexuri continand
instructiuni pt crearea lor.
Securitatea si protectia
Securitatea si protectia prezinta doua aspecte fundamentale: pe de o parte aspecte si legal,
privind drepturile de acces la anumite informatii si pe de alta parte, elemente legate de
organizarea sistemelor informatice d.p.d.v. al posibiliatilor de acces la datele stocate. Unele
informatii stocate in bazele de date au in caracter strict privat si nu pot fi accesate de persoane
neautorizate. Diferitele reglementari guvernamentale sau legi stabilesc ce informatii privind
acivitatea persoanelor sau institutilor pot fi facute publice si in ce conditii.
In SGBD-urile cu utilizatori multiplii sistemul trebuie sa revada tehnici care sa specifice drepturile de
acces ale utilizatorilor la obiectele de baze de date sa verifice si sa impuna reflectarea acestor
drepturi. Aceste sarcini revin unei componente continute in majoritatea SGBD-urilor numit
subsistemul de autorizare ce prmite alocarea drepturilor diferitelor grupuri de utilizatori ale bazei
de date a.i. acestia sa poate accesa doar acele informatii la care au drepturi. D.p.d.v. al
implementarii subsistemului de autorizare din diferite SGBD-uri observam mari diferente,
elementele de baza find aceleasi.
Mihai L4
Andrei L2 Paul L3
Vlad L1
O tehnica utilizata in protectia datelor este criptarea datelor, prin care datele importante sunt codate folosind diferiti algoritmi de codare in momentul in care sunt transmise prin intermediul
retelelor de comunicatie. Interceptarea datelor criptate etse deosebit de dificila dar nu imposibila
daca nu este cunoscuta cheia de codare, in felul acesta infromatia poate fi declintata si
interpretata doar de cei care detin cheia de criptare.
In principiu, conectarea la o baza de date se realizeaza printr-o procedura de log in prin nume
utilizator, parola=>identificarea utilizatorului.
Conecatarea unui utilizator al unei baze de date nu este suficienta ca acel utilizator sa beneficieze de
toate functionalitatiile oferite de respectivul SGBD si el poate beneficia doar de ce acele drepturi
care i-au fost conferite de administratorul bazei de date. In general, in cele mai mult SGBD
exista doua niveluri de autorizare: nivelul contului si nivelul relatilor.
La nivelul contului se pot specifica drepturile generale pe care le are utilizatorul respectiv, independent de relatiile existente in baza de date. Astfel de drepturi sunt Create Table pentru crearea relatilor, Create View pentru crearea interogarilor, Alter Table pentru adaugarea sau
stergerea atributelor din relatii, Drop pt steregerea relatiilor, Insert, Select, Update, Delete pt operatiile la nivelul tabelului.
Al doilea nivel de drepturi se aplica fiecarei relatii sau vederi, in acest caz se specifica ce operatii poate efectua un anumit utilizator asupra relatiei respective. In unele SGBD-uri cele
doua niveluri nu sunt diferentiate cea ce creaza o dificultate sporita in acordarea drepturilor de
acces.
Curs 10 17.05.13
Transpunerea modelului entitate-asociere in model relational
Schema conceptuala de nivel inalt a unei baze de date reprezentata printr-o diagrama entitate-
asociere poate fi transpusa in schema conceptuala specifica oricarui model de date(ierarhic, retea,
relational, orientat obiect si obiect- relational)
In transpunerea unei scheme conceptuale de nivel inalt in schema conceptuala pt modelul relational
tipurile de entitati devin relatii iar asocierile dintre tipurile de entitati devin constrangeri inter-
relatii ce se realizeaza prin intermediul cheilor straine.
De ex.: tipurile de entitati utilizate in modelarea activitatii unei intreprinderi pot fi sectii Angajati si
Proiect. La acesetea se ma adauga entitatiile suplimentare Produse, Componente, Furnizori.
Pentru tipul Angajati se defineste o specializare disjuncta. Aceste subtipuri se afla la o asociere de 1
la 1 cu tipul de baza Angajati mostenind atributele acestuia si avand suplimentar atribute
specifice pentru Ingineri atributul specific find Specializarea iar pentru Secretare find limba
straina cunoscuta.
Asocierile dintre multimile de entitati se stabilesc in functie de modul in care se desfasoara activitatea
moderata.
De ex.: daca in intr respectiva activitatea este organizata in mai multe sectii fiecare angajat lucrand
intr-una dintre aceste sectii si numai in una, atunci intre multimile de entitati sectii si angajati
exista o asociere 1 la n. Asocierea Angajati Proiecte este o asociere n la m, daca se considera ca
la un proiect lucreaza mai multi angajati si fiecare angajat poate lucra la anumite proiecte. Un
produs este format din mai multe componente si fiecare componenta poate fi inclusa in mai
multe produse, de aceea asocierea Componente Produse este m la n. O componenta poate fi
achizitionata de la mai multi furnizori iar un furnizor poate oferi mai multe componente, astfel
asocierea Furnizori Componente este m la n. Pt aceasta asoicere se poate stabili ca ea sa contina
o referinta la angajatul care se ocupa de aceea achizitie, in acest caz asocierea find intre 3 entitati
Furnizori-Coponente-Angajati, find de forma n la n. Similar, si intre entitati Produse-Clienti-
Angajati se poate face asocierea n la n. O multime de entitati slabe se afla deobicei in asocieri de
Sectii
Angajati
Proiecte
Depend.
d
Ing.
Secr.
r.
Componente
Furnizori Clienti
tipul n la 1 cu entitatea puternica de care depinde. Intre entitatea Dependenti si Angajati
asocierea este de tipul n la 1.
Multimea de entitati de un subtip dat este deobicei de forma 1 la 1 cu multimea de entitati a
supertipului, asta insemnand ca un angajat poate fi un singur inginer si orice angajat este un
inginer. Pt transpunerea modelului entitate- asociere in model relational se parcurg in principal
doua etape:
1. Proiectarea relatiilor corespunzatoare unor entitati din diagrame entitate- asociere 2. Proiectarea asocierilor ce se repr prin chei straine sau prin relatii de asociere
Proiectarea relatiilor
-multimile de entitati puternice din diagrama entitate- asociere devin relatii cu atributele date de
atributele entitatilor
-numele fiecarei relatii trebuie sa fie unic intr-o baze de date iar numele unui atribut trebuie sa fie
unic in cadrul unei relatii
-pot exista insa atribute cu acelasi nume in relatii diferite
-in relatiile corespunzatoare multimilor entitatilor puternice, cheia primara se defineste ca o cheie
naturala ca o combinatie de atribute ce identifica unic fiecare tuplu ale relatiei fie ca o cheie
primara artificiala
-deobicei se utilizeaza chei primare artificiale cum ar fi cod_angajat, cod_sectie, cod_componenta
etc.
-cheia primara a relatiei dependente poate fi formata dintr-o combinatie din atributele unei chei
straine si alte atribute care asigura posibilitatea de identificare unica a unui tuplu sau poate fi o
cheie artificiala
-multimile de entitati care sunt subtipuri ale unui tip de entitate dat, devin relatii aflate in asociere 1 la
1 cu relatia corepsunzatoare multimii de entiati al tipului respectiv
- pt a realiza aceasta asociere, in relatia corespunzatoare supertipului se defineste o cheie straina care
refera cheia primara din relatia corespunzatoare supertipului de entitate
De ex.: asocierile Angajati- Ingineri si Angajati- Secretare sunt de tipul 1 la 1 in relatia Ingineri
atributul cod_anagajat este cheie straina care refera cheia primara care refera acelasi nume din
relatia Angajati si este in acelasi timp cheie primara
-asocierea binara de tipuri n la 1 dintre o multime de entitati puternice din diagrama entitate- asociere
se realizeaza in modelul relational prin intermediul unei chei straine in prima relatie,
multiplicitate n, cea care refera cheia primara din relatia referita
-asocierea binara 1 la 1 intre doua multimi de entitati puternice se poate transpune in modelul
relational in doua moduri: fie prin intermediul unei chei straine, find un caz particular al asocierii
1 la n, fie printr-o relatie asociere find un caz particular al asocierii n la n
-asocierea multipla n la n la p se realizeaza asemanator asocierii binare prin intermediul unei noi
relatii care se afla in asociere n la 1, p la 1, fiecare dintre relatiile date
De ex.: relatia Achizitii realizeaza asocierea dintre Componente- Furnizori si Angajati, continand 3
chei straine cod_componenta, cod_furnizor si cod_angajat
Angajati
Cod_angajat Nume Sal_brut Cod_sectie
Sectie
Cod_sectie Den Nume_sef
Proiecte
Cod_proiect Den Valoare
Activitati
Cod_activitate Cod_proiect Cod_angajat
Produse
Cod_prod Den Du
Componente
Cod_comp Den Du
Compozitii
Cod_compozitie Cod_componenta Cod_produs
Clienti
Cod_client Den Adr
Furnizor
Cod_furn Den Adr
Vanzari
Cod_vz Cod_clienti Cod_produs Cantitate Cod_angajat Data
Achizitii
Cod_ach Cod_furn Cod_componenta Cont Cod_angajat Data
SQL:
Pentru fiecare vanzare sa vedem numele clientului si denumirea produsului
SELECT Cod_vz, clienti.den, produse.den FROM vanzari, clienti WHERE
Cati angajati avem in fiecare sectie?
COUNT* cod_sectie, (COUNT*) GROUP BY Sectie
Care este denumirea proiectelor la care lucreaza angajatul Ion?
SELECT proiecte.den FROM Proiecte, Angajati, Activitati WHERE proiecte.cod_proiecte
AND.
Care este suma valorii tuturor achizitiilor?
SELECT SUM Den FROM Achiziti, Componente
WHERE achizitii.cod_componenta=achiziti.cod_componenta
Care este numele angajatilor care au facut vanzari luna aceasta?
SELECT Nume FROM Angajati, Vanzari WHERE angajat.cod_anagajat.
Curs 11 24.05.13
Normalizare cu forme normale
La prezentarea BD relationale se stabilesc entitatile din realitatea bine modelata. Modul in care
se pot stabili entitatile unei BD nu este unic si de aceea este necesar sa existe criterii de evaluare
a calitatii entitatilor a.i. acestea sa asigure integritatea datelor. Procesul de normalizare a fost
propus de E.F. Codd in 1970 urmarind executia asupra unei tabele a unor serii de teste pt a studia
apartenenta la forma normala. Codd a propus 3 forme normale ce au fost preluate apoi de Boyce,
dezvoltand forma normala de Boyce Codd. Normalizarea datelor poate fi privita ca un proces in
timpul caruia schemele de tabela nesatisfacatoare sunt descompuse prin impartirea atributelor in
mai multe tabele cu atribute mai putine si care poseda proprietatile dorite. Obiectivele procesului
de normalizare constau in asigurarea faptului ca tabela poseda o buna arhitectura oferind
posibilitatea de modificare prin eliminarea anormalilor ce pot aparea.
Forma normala ofera proiectantului baze de date:
Un schelet formal pt analiza relatilor bazat pe chei si pe dependenta functionala dintre atribute
Ofera o serie de teste ce pot elimina tabelele individuale a.i. baza de date relationala poate fi normalizata in orice grad
Forma normala de ordin 1:
- aceasta forma normala este considerata ca find parte a definitiei formale a unei tabele - ea nu permite atribute cu mai multe valori, atribute compuse sau cobinatii ale lor - aceasta stabileste ca domeniul atributelor trebuie sa contina numai valori atomice iar valoarea
oricarui atribut intr-un tuplu este o valoare unica in domeniul atributului respectiv
- nu permite un set de valori, un tuplu de valori sau combinatia acestora ca valoarea a unui atribut pt un tuplu
- cu alte cuvinte, forma normala 1 nu permite tabele in tabele sau tabele ca atribute ale tuplurilor - valorile admise de forma normala 1 sunt atomice sau indivizibile pt un domeniu specificat de
valori
De ex.: daca presupunem tabela Discipline cu campurile Cod_disciplina, Denumire, An_studiu,
Nume_profesor si avem inregistrarea M01 BD, 1, Radu Lixandroiu, Ion Popescu.
Aceasta tabela nu este in format totala 1, deoarece valorile introduse pt atributul profesor nu sunt
valori atomice. Pt ca tabela sa fie in format 1 este necesar ca inregistrarea datelor sa se faca cu
valori atomice
Astfel vom avea:
Forma normala de ordin 2:
- impune ca fiecare atribut sa fie dependent de fiecare parte a cheii principale
- o tabela indeplineste forma normala 2 daca ea indeplineste forma normala 1 si contine numai
atribute care dau informatii despre cheia tabela
De ex.: daca tabela Discipline ar contine campurile Cod_disciplina, Denumire, Ani, Profesor,
Nume_student, Nota, Data, Data_notei tabela nu ar fi in forma normala nr 2 pt ca campurile
Nume_student, Nota, Data_notei nu apartin de cheia primara. Pt a aduce tabela in forma normala
2 este necesara crearea a doua tabele suplimentare Studenti si Note. Cele 3 tabele vor avea
structura: Discipline(Cod_disc, Denumire, Ani, Profesori) Studenti (Cod_matricol,
Nume_student, Adresa, E-mail) si Note( Nota, Data, Cod_student, Cod_materii)
Cod_disciplina Denumire An_studiu Nume_profesor
M01 BD 1 Radu Lixandroiu
MO2 BD 1 Ion Popescu
Forma normala 3:
- pt a ajunge la forma normala 3 tabela trebuie sa fie deja in prima si a doua formula normala si inclus
toate campurile non- primare sa depinda numai de campuri primare.
De ex.: pt tabela Studenti daca avem ca atribut in tabel Data_nasterii numai este necesar un camp
suplimentar numit Varsta
Forma normala Boyce- Codd:
- este o forma stricta normala de gradul 3, intelegand prin asta ca orice tabela in forma normala
Boyce Codd este si in forma normala 3, vice versa ne find neaparat adevarata
- cele doua forme normale sunt asemanatoare, ambele punand conditia ca atributul care determina
functional alte atribute sa fie o cheie a tabelei
- forma normala Boyce-Codd etse mai restrictiva decat forma normala 3, deoarece in forma normala
Boyce-Codd se introduce aceasta conditie tuturor atributelor atat prime cat si neprime pe cand in
forma normala 3 conditia se impune doar atributelor neprime
- ATRIBUTELE PRIME: sunt atributele care apartin unei chei, iar celelalte se numesc atribute
neprime
- orice tabela formata din doua atribute este in forma normala Boyce- Codd in forma normala 2 si in
forma normala 3
- aceasta tabela compusa din 2 atribute este in forma normala 2 deoarece fie cheia ete formata din
ambele atribute si atunci nu exista atribute neprime, fie cheia este formata dintr-unul dintre
atribute, iar dependenta functionala a celuilalt atribut fata de cheie este totala
- aceasta tabela din doua atribute este in forma normala 3, deoarece este in forma normala 2 si nu
poate exista nici un atribut neprim care sa determine functional un alt atribut neprim pt ca o
tabela cu doua campuri poate avea cel mult un atribut neprim
Aplicatie:
MFIX
Cod_mfix Den Tip_mf Valoare Data_pf
M1 Masina Logan Auto 12.000 05.20.2009
M2 Masina Fi