Baze de Date CURS

41
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

description

Baze de Date CURS

Transcript of Baze de Date CURS

  • 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