Curs Baze Date

download Curs Baze Date

of 188

Transcript of Curs Baze Date

  • 8/14/2019 Curs Baze Date

    1/188

    Informaii Curs- Baze de date Anul III-Informatic

    Disciplin obligatorie; Anul III, Sem. 5, ore sptmnal, nvmnt de zi: 2curs, 2 laborator, total ore semestru 56; 6 credite; examen.

    I. CONINUTUL TEMATIC AL DISCIPLINEI

    Notiuni introductive n domeniul bazelor de date (entitate, relatie, atribut,limbaje pentru baze de date, componenete i arhitectura unui sistem degestiune a bazelor de date (SGBD), evoluia SGBD-urilor)

    Proiectarea bazelor de date simple Proiectarea bazelor de date relaionale(modelarea Entitate-Relaie, diagrama E/R, modelul relational, regulile luiCodd, caracteristicile modelului relational, normalizare, forme normale,dependene funcionale)

    Proiectarea bazelor de date relaionale orientate obiect (modelarea orientatape obiect cu UML, proiectarea diagramelor de clas i de obiecte cuprogramul Visio)

    Proiectarea bazelor de date relaionale cu programul ACCESS (tabele,formulare, interogri, rapoarte, comenzi macro, securitate)

    Limbaje de manipulare a datelor relaionale Concepte de baza ale limbajului SQL Limbajul SQL ACCESS - SQL

    SINTEZE ASUPRA PROGRAMEI ANALITICECursul este structurat n 3 pri, astfel:

    Partea I. Concepte ale bazelor de date relaionale Partea a_II-a. Access Partea a_III_a. SQL

    Partea I. Concepte ale bazelor de date relaionale

    n aceast parte se face o prezentare general a conceptelor bazelor de daterelaionale.O baz de date este o colecie de informaii interrelaionate gestionate ca o

    singur unitate. A ceast definiie este foarte larg, deoarece exist mari diferenentre concepiile diferiilor productori care pun la dispoziie sisteme de baze de date.

    De exemplu, Oracle Corporation definete o baz de date ca fiind o colecie defiiere fizice gestionate de o singur instan (copie) a produsului software pentru

    baze de date, n timp ce Microsoft definete o baz de date SQL Server ca fiind ocolecie de date i alte obiecte.

    Un obiectal bazei de date este o structur de date denumit, stocat n baz dedate, cum ar fi un tabel, o vizualizare sau un index.

    Exist mari diferene ntre implementrile furnizorilor de baze de date. nmajoritatea sistemelor de baze de date, datele sunt stocate n mai multe fiiere fizice,

  • 8/14/2019 Curs Baze Date

    2/188

    dar nMicrosoft Access toate obiectele bazei de date, mpreun cu datele care aparinunei baze de date sunt stocate ntr-un singur fiier fizic.(Un fiier este o colecie denregistrri nrudite stocate ca o singur untiate de sistemul de operare alcalculatorului.) Totui, unul dintre principalele avantaje ale bazelor de date relaionaleeste faptul c detaliile de implementare fizic sunt separate de definiiile logice ale

    obiectelor bazei de date, astfel nct majoritatea utilizatorilor bazei de date nu aunevoie s tie unde (i cum) sunt stocate obiectele bazei de date n sistemul de fiiereal calculatorului. De fapt , pe msur ce vei nva limbajul SQL , vei vedea c nueste nevoie s specificai numele unui fiier fizic ntr-o instruciune SQL dect atuncicnd definii sau modificai chiar obiectele bazei de date.

    Sistem de gestionare a bazei de date (DBMS)

    Un sistem de gestionare a bazei de date (DBMS database management system)este un produs software furnizat de productorul bazei de date. Produse software

    precum Microsoft Access, Microsoft SQL Server, Oracle Database,Sybase,

    DB2,INGRES, MySQL i Postgre SQL fac parte din categoria DBMS sau, mai corect,DBMS relaionale (RDBMS).

    RDBMS-urile sunt cunoscute i sub numele de SGBD-uri. Ambele prescurtrivor fi folosite n acest expunere.

    Bazele de date relaionale sunt definite i prezentate n seciunea urmtoare aacestu capitol.

    Sistemul DBMS pune la dispoziie toate serviciile de baz necesare pentruorganizarea i ntreinerea bazei de date, inclusiv urmtoarele:

    Transferarea datelor n i din fiierele fizice de date, n funcie de cerine.Gestionarea accesului concurenial la date al mai multor utilizatori , inclusiv

    prevenirea conflictelor care ar putea fi cauzate de actualizrile simultane.Gestionarea tranzaciilor, astfel nct toate modificrile fcute asupra bazei de

    date printr-o tranzacie s fie executate ca o singur unitate.Cu alte cuvinte, dactranzacia reuete, toate modificrile efectuate de tranzacie sunt nregistrate n bazde date; dac tranzacia eueaz, nici una dintre modificri nu este nregistrat n bazde date.Totui, reinei ca unele sisteme RDBMS nu asigur suportul pentru tranzacii.

    Accept un limbaj de interogare, care reprezint sistemul de comenzi folositde utilizator pentru a obine date din baz de date.SQL este principalul limbaj folosit

    pentru sistemele DBMS relaionale i subiectul principal al aceste cri.Funcii pentru salvarea bazei de date i pentru refacerea bazei de date n urma

    erorilor.

    Mecanisme de securitate pentru mpiedicarea accesului neautorizat la date imodificarea acestora.

    Baz de date relaional

    O baz de date relaional este o baz de date care respect modelul relaional,dezvoltat de Dr.E.F.Codd. Modelul relaional prezint datele sub forma familiarelortabele bidimensionale, similar cu o foaie de calcul tabelar. Spre deosebire de o foaiede calcul tabelar, nu este obligatoriu ca datele s fie stocate ntr-o form tabelar, iarmodelul permite i combinarea tabelelor (crearea uniunilor (joining), n terminologiarelaional) pentru formarea vizualizarilor, care sunt prezentate tot ca tabele

    bidimensionale. Flexibilitatea extraordinar a bazelor de date relaionale este dat de

  • 8/14/2019 Curs Baze Date

    3/188

    posibilitatea de a folosi tabelele independent sau n combinaii, fr nici o ierarhie sausecvena predefinita n care trebuie s se fac accesul la date.

    Un model este o reprezentare a obiectelor i evenimentelor lumii reale i aasocierilor dintre ele. De fapt, el reprezint o abstracie asupra aspectelor

    semnificative ale unei ntreprinderi, ale unui sistem real, ignornd proprietileaccidentale. Modelul este cel pe care utilizatorii trebuie s-l cunoasc; implementareaunui model este cea pe care utilizatorii nu este necesar s o cunoasc. Diferena dintremodel i implementare este, de fapt, un caz special i important al deosebirii uzualedintre logic i fizic.

    Modelele se impun prin sintaxa i prin semantica lor i, din acest punct devedere, exist trei tipuri fundamentale de modele:

    modele care descriu aspectele statice ale procesului modelat; modele care descriu aspectele dinamice ale procesului modelat; modele care descriu aspectele funcionale ale procesului modelat.Un model de date reprezint o colecie integrat de concepte necesare

    descrierii: datelor, relaiilor dintre ele, constrngerilor existente asupra datelor sistemului real analizat.Modelarea unei baze de date permite trecerea de la percepia unor fapte din

    lumea real la reprezentarea lor prin date. Modelul de date trebuie s reflecte fidelfenomene ale lumii reale, s urmreasc evoluia acestei lumi i comunicarea dintrefenomenele lumii reale.

    Modelul trebuie s asigure conceptele de baz care permit proiectantului bazeide date i utilizatorilor s comunice, fr ambiguiti, cunotinele lor privind

    funcionarea i organizarea modelului real analizat. Prin urmare, un model de datetrebuie s reprezinte datele i s le fac nelese.n esen, modelul de date are trei componente: mulime de reguli conform crora sunt construite bazele de date (partea

    structural); mulime de operaii permise asupra datelor, care sunt utilizate pentru

    reactualizarea sau regsirea datelor (partea de prelucrare); mulime de reguli de integritate, care asigur coerena datelor. Abordarea general a problemei modelrii semantice a datelor se face n

    patru etape. Se identific o mulime de concepte semantice care sunt utile n descrierea

    lumii reale. Se presupune c lumea real (modelul real analizat) esteformat din entiti care au anumite proprieti, c fiecare entitate are oidentitate, c exist legturi, corelaii ntre entiti. Conceptul de corelaie,ca i cel de entitate, este util, n mod intuitiv, la descrierea modelului.

    Se caut o mulime de obiecte formale, simbolice care sunt utilizate pentrureprezentarea conceptelor semantice anterioare.

    Se dau reguli de integritate formale i generale (constrngeri) care sreflecte restriciile la care este supus modelul.

    Se definete o mulime de operatori formali prin care pot fi prelucrate ianalizate obiectele formale.

  • 8/14/2019 Curs Baze Date

    4/188

    Modelul entitate-relaie

    Una dintre cele mai cunoscute abordri ale modelrii semantice (cu siguranuna dintre cele mai utilizate) este cea bazat pe modelul entitate-relaie (E/R).Acesta a fost introdus de ctre P.P. Chen n 1976 i rafinat de atunci n diverse moduride ctre acesta i de muli ali cercettori, ca un model de date conceptual, pentru auura proiectarea bazelor de date. Pentru reprezentarea grafic a modelului suntutilizate diagramele E/R, care sunt modele neformalizate pentru reprezentarea unuimodel, unui sistem din lumea real.

    Diagramele E/Rconstituie o tehnic de reprezentare a structurii logice a bazeide date, ntr-o manier grafic. Aceste diagrame ofer un mijloc simplu i inteligibilde comunicare a caracteristicilor importante ale designului unei anumite baze de date.

    Diagrama E/R este un model de date conceptual de nivel nalt, independent deplatforma hardware utilizat i de tipul SGBD-ului. Modelul este constituit dinconcepte care descriu structura bazei de date i tranzaciile de regsire sau

    reactualzare asociate.Popularitatea modelului E/R ca modalitate de abordare a proiectrii bazelor dedate poate fi atribuit n principal tehnicii de realizare a diagramelor E/R. Aceasttehnic, ca i modelul E/R nsui, a evoluat de-a lungul timpului datorit noilor

    problematici care au aprut n proiectarea bazelor de date.Baza de date poate fi definit ca o mulime de date ce modeleaz un sistem

    real. Acest sistem este format din obiecte legate ntre ele. Modelul E/R mparteelementele unui sistem real n dou categorii: entiti i relaii (legturi, asocieri)ntre aceste entiti. Entitiile i legturile au anumite caracteristici, numite atribute.

    Nu trebuie confundat conceptul de relaie, n sensul de asociere, care intervine ndefinirea diagramei E/R cu conceptul de relaie care este specific modelului relaional.

    EntitateEntitatea este un obiect sau un concept, care este semnificativ pentru modelul

    real analizat. O entitate poate fi dependent (slab), existena sa depinznd de altentitate sau independent (tare), caz n care ea nu depinde de existena altei entiti.

    Entitatea poate fi persoan, loc, concept, activitate etc. Prin urmare, ea poate fiun obiect cu existen fizic, real sau poate fi un obiect cu existen conceptual,abstract.

    Cheia primar este un identificator unic n cadrul entitii, fcnd distincientre valori diferite ale acesteia.

    Cheia primar: trebuie s fie unic i cunoscut la orice moment; trebuie s fie controlat de administratorul bazei; trebuie s nu conin informaii descriptive, s fie simpl, fr ambiguiti; s fie stabil; s fie familiar utilizatorului.

    Observaii Entitile devin tabele n modelele relaionale.

    n general, entitile se scriu cu litere mari.

  • 8/14/2019 Curs Baze Date

    5/188

    Entitile sunt substantive, dar nu orice substantiv este o entitate. Trebuieignorate substantivele nerelevante.

    Pentru fiecare entitate este obligatoriu s se dea o descriere detaliat.Nu pot exista, n aceeai diagram, dou entiti cu acelai nume, sau o aceeai

    entitate cu nume diferite.

    lucreaza_in conduceapartine_la

    atasat_la

    RelaieRelaia (asocierea) este o comunicare ntre dou sau mai multe entiti. O

    valoare a unei relaii este o comunicare ntre valorile entitilor pe care le leag.Relaia exprim un raport care exist ntre aceste entiti. Gradul unei relaii

    este dat de numrul de entiti participante ntr-o relaie (de exemplu, relaie binar,ternar, cvadrupl, n-ar).

    Existena unei relaii este subordonat existenei entitilor pe care le leag.

    ntre dou entiti pot exista mai multe relaii.O relaie n care aceeai entitate particip mai mult dect o dat n diferite

    roluri definete o relaie recursiv. Uneori, aceste relaii sunt numite unare.Observaii: n modelul relaional, relaiile devin tabele speciale sau coloane speciale

    care refer chei primare. Relaiile sunt verbe, dar nu orice verb este o relaie. Pentru fiecare relaie este important s se dea o descriere detaliat. n aceeai diagram pot exista relaii diferite cu acelai nume. n acest caz,

    ele sunt difereniate de ctre entitile care sunt asociate prin relaia

    respectiv. Pentru fiecare relaie trebuie stabilit cardinalitatea (maxim i minim)

    relaiei, adic numrul de tupluri ce aparin relaiei.

    poate (cardinalitate maxim) trebuie (cardinalitate minima)

    EXEMPLE:

    Ci salariai pot lucra ntr-un departament? Muli!n cte departamente poate lucra un salariat? In cel mult unul!

    DEPARTAMENT

    SALARIAT

    SARCINA

    PROIECT

  • 8/14/2019 Curs Baze Date

    6/188

    Relaia SALARIAT_lucreaza_in_DEPARTAMENT are cardinalitateamaxim many-one (n:1).

    Exemplu:

    Ci salariai trebuie s conduc un departament? Cel puin unul!Cte departamente trebuie s conduc un salariat? Zero!

    Relaia SALARIAT_conduce_DEPARTAMENT are cardinalitatea minimone-zero (1:0).

    Asupra entitilor participante ntr-o relaie pot fi impuse constrngeri caretrebuie s reflecte restriciile care exist n lumea real asupra relaiilor. O clas deconstrngeri, numite constrngeri de cardinalitate, este definit de numrul denregistrri posibile pentru fiecare entitate participant (raport de cardinalitate). Celmai ntlnit tip de relaii este cel binar, iar n acest caz rapoartele de cardinalitate sunt,n general, one-to-one (1:1), one-to-many (1:n) sau many-to-many (m:n).

    AtributAtributul este o proprietate descriptiv a unei entiti sau a unei relaii. De

    exemplu, numele , genul unei film, sunt atribute al entitii FILM.Atributele pot fi simple (pretul de nchiriere a unui film), compuse (de

    exemplu, numele filmului), cu valori multiple (de exemplu, limbile n care e tradus unfilm), derivate (de exemplu, vrsta unei persoane se obine din data naterii).

    Observaii Trebuie fcut distincia ntre atribut care uzual devine coloan n modelele

    relaionale i valoarea acestuia, care devine valoare n coloane. Atributele sunt substantive, dar nu orice substantiv este atribut.

    Fiecrui atribut trebuie s i se dea o descriere complet n specificaiilemodelului (exemple, contraexemple, caracteristici). Pentru fiecare atribut trebuie specificat numele, tipul fizic (integer, float,

    charetc.), valori posibile, valori implicite, reguli de validare, constrngeri,tipuri compuse.

    Diagrama entitate- relaiePentru proiectarea diagramei entitate-relaieau fost stabilite anumite reguli entitile sunt reprezentate prin dreptunghiuri; relaiile dintre entiti sunt reprezentate prin arce neorientate; atributele care reprezint chei primare trebuie subliniate sau marcate prin

    simbolul # sau (pk), plasat la sfritul numelui acestor atribute; cardinalitatea minim este indicat n paranteze, iar cardinalitatea maxim

    se scrie fr paranteze; nu este necesar s fie specificate, n cadrul diagramei, toate atributele.

  • 8/14/2019 Curs Baze Date

    7/188

    1

    11 M

    Diagrama Entitate/relaie

    Cazuri speciale de entiti, relaii, atribute i modul lor de reprezentare ncadrul diagramei entitate-relaie.

    1. Entitate dependent nu poate exista n mod independent (SARCINAdepinde de PROIECT). Cheia primar a unei entiti dependente include cheia

    primar a sursei (nr_proiect) i cel puin o descriere a entitii (nr_sarcina).Entitatea dependent se deseneaz prin dreptunghiuri cu linii mai subiri.

    2. Motenirea atributelor. Subentitate (subclas) submulime a unei alte

    entiti, numit superentitate (superclas) (SALARIAT < >PROGRAMATOR). Subentitatea se deseneaz prin dreptunghiuri incluse nsuperentitate. Exist o relaie ntre o subentitate i o superentitate, numitISA, care are cardinalitatea maxim 1:1 i minim 1:0. Cheile primare,atributele i relaiile unei superentiti sunt valabile pentru orice subentitate.Afirmaia reciproc este fals.

    3. ntr-o diagram E/R se pot defini relaii recursive.

    4. Relaie sau atribut? Dac un atribut al unei entiti reprezint cheia primar aunei alte entiti, atunci el refer o relaie (cod_departament n tabelulSALARIAT).

    5. Entitate sau relaie? Se cerceteaz cheia primar. Dac aceasta combin cheileprimare a dou entiti, atunci este vorba de o relaie. (cheia primar a relaiei

    conduce lucreaza_inapartine_la

    SALARIATcod_salariatnume

    prenumesexsalariu

    PROIECTnr_proiectdescriere

    buget_alocat

    DEPARTAMENTcod_departamentnumenr_cladirecod_salariat

    SARCINAnr_proiectnr_sarcinadata_inceperiistare

    atasat_la

    data_initialafunctia

    1 M(0)

    1(0)

    M(0) M(0)

  • 8/14/2019 Curs Baze Date

    8/188

    asociat_la combin cod_salariat cu nr_proiect, prin urmare,SALARIAT_asociat la_PROIECTva defini o relaie i nu o entitate).

    Probleme1.S se creeze modelul E/R pentru gestiunea activitilor de mprumut dintr-obibliotec

    S-a presupus (restrictiv) c ntr-o zi un cititor nu poate mprumuta, demai multe ori, aceeai carte.

    Entitile i relaiile care intervin n acest model sunt urmtoarele:1. CARTE (entitate independent) orice carte care se gsete n inventarul

    bibliotecii. Cheia primar este atributul codel.

    2. CITITOR (entitate independent) orice cititor care poate mprumutacri. Cheia primar este atributul codec.

    3. DOMENIU (entitate independenta) domeniul cruia i aparine o carte.Cheia primar este atributul coded.

    4. IMPRUMUTA relaie avnd cardinalitatea m:m care leag entitileCITITOR i CARTE.

    5. APARTINE relaie care leag atributele CARTE i DOMENIU. Relaiaare cardinalitatea maxim m:1, iar cardinalitatea minim 1:1.

    2.Evidena colilor de oferi din Romania. Completai relaiile (lucreaza_la,conduce, sustine, asista, instruieste) dintre entiti i specificai cardinalitatea!

    CITITORcodec#

    numedep

    CARTEcodel#titluautor

    pretnrex

    DOMENIUcoded#intdom

    imprumuta

    apartine

    M(1) M(0)

    M(0) 1

    SCOALAcod_scoala#

    CLIENTcod_client#

  • 8/14/2019 Curs Baze Date

    9/188

    3. Campionatele de fotbal ale diferitelor ri

    M(1) sustine M(1) M(1)

    2

    joacaM(1)

    M(1)

    apartine_de1

    M(1)atasata_la1

    Modelul relaional

    Modelul relaional a fost conceput i dezvoltat de E.F. Codd. El este un modelformal de organizare conceptual a datelor, destinat reprezentrii legturilor dintre

    INSTRUCTORcod_instructor#

    MASINAcod_masina#

    EXAMENcod_examen#

    EXAMINATORcod_examinator#

    ECHIPA

    Cod_echipa#NumeOras

    SPONSOR

    Cod_sponsor#Nume

    MECITara#

    Nr_etapa#

    Cod meci#

    ETAPATara

    Nr_etapa

    CAMPIONATTara#

  • 8/14/2019 Curs Baze Date

    10/188

    date, bazat pe teoria matematic a relaiilor. Modelul relaional este alctuit numai dinrelaii i prin urmare, orice interogare asupra bazei de date este tot o relaie.Cercetarea n domeniu 3 mari proiecte (System R,INGRES,PRTV)

    Caliti: este simplu;

    riguros din punct de vedere matematic;

    nu este orientat spre sistemul de calcul.

    Modaliti pentru definirea unui SGBD relaional:

    prezentarea datelor n tabele supuse anumitor operaii de tip proiecie,selecie, reuniune, compunere, intersecie etc.

    un sistem de baze de date ce suport un limbaj de tip SQL StructuredQuery Language;

    un sistem de baze de date care respect principiile modelului relaionalintrodus de E.F. Codd.

    Caracteristicile unui model relaional:

    structura relaional a datelor;

    operatorii modelului relaional;

    regulile de integritate care guverneaz folosirea cheilor n model.

    Aceste trei elemente corespund celor trei componente ale inginerieisoftware:informaie, proces, integritate.

    Structura datelorDefinirea noiunilor de domeniu, relaie, schem relaional, valoare null i

    tabel vizualizare (view).

    Conceptele utilizate pentru a descrie formal, uzual sau fizic elementele de bazale organizrii datelor sunt date n urmtorul tabel:

    Formal Uzual Fizic

    relaietupluatribut

    domeniu

    tablouliniecoloan

    tip de dat

    fiiernregistrarecmp

    tip de dat

    Reguli de integritate sunt aseriuni pe care datele coninute n baza de datetrebuie s le satisfac.

    Exist trei tipuri de constrngeri structurale (de cheie, de referin, de entitate)ce constituie mulimea minimal de reguli de integritate pe care trebuie s le respecteun SGBD relaional. Restriciile de integritate minimale sunt definite n raport cunoiunea de cheie a unei relaii.

    O mulime minimal de atribute ale cror valori identific unic un tuplu ntr-o

    relaie reprezint o cheie pentru relaia respectiv.

  • 8/14/2019 Curs Baze Date

    11/188

    Fiecare relaie are cel puin o cheie. Una dintre cheile candidat va fialeas pentru a identifica efectiv tupluri i ea va primi numele de cheie primar. Cheia

    primar nu poate fi reactualizat. Atributele care reprezint cheia primar sunt fiesubliniate, fie urmate de semnul #.

    O cheie identific linii i este diferit de un index care localizeaz liniile. O

    cheie secundar este folosit ca index pentru a accesa tupluri. Un grup de atribute dincadrul unei relaii care conine o cheie a relaiei poart numele de supercheie.

    Fie schemele relaionaleR1(P1, S1) iR2(S1, S2), undeP1 este cheie primarpentruR1, S1 este cheie secundar pentruR1, iarS1 este cheie primar pentruR2. nacest caz, vom spune c S1 este cheie extern (cheie strin) pentruR1.

    Modelul relaional respect trei reguli de integritate structural. Regula 1 unicitatea cheii. Cheia primar trebuie s fie unic i

    minimal.

    Regula 2 integritatea entitii. Atributele cheii primare trebuie s fie

    diferite de valoarea null. Regula 3 integritatea referirii. O cheie extern trebuie s fie ori null n

    ntregime, ori s corespund unei valori a cheii primare asociate.

    Transformarea entitilor

    Entitile independente devin tabele independente. Cheia primar nuconine chei externe.

    Entitile dependente devin tabele dependente. Cheia primar aentitilor dependente conine cheia primar a entitii de care depinde(cheie extern) plus unul sau mai multe atribute adiionale.

    Subentitile devin subtabele. Cheia extern se refer la supertabel, iarcheia primar este aceast cheie extern (cheia primar a subentitiiPROGRAMATOR este cod_salariatcare este o cheie extern).

    Transformarea relaiilor

    Relaiile 1:1 i 1:n devin chei externe. Relaia conduce devine coloan ntabelul DEPARTAMENT, iar relaia lucreaza_in devine coloan n tabelulSALARIAT. Simbolul indic plasamentul cheii externe, iar simbolul exprim faptul c aceast cheie extern este coninut n cheia primar.Relaia 1:1 plaseaz cheia extern n tabelul cu mai puine linii.

    Relaia m:n devine un tabel special, numit tabel asociativ, care are douchei externe pentru cele dou tabele asociate. Cheia primar estecompunerea acestor dou chei externe plus eventuale coloane adiionale.Tabelul se deseneaz punctat.

    Relaiile de tip trei devin tabele asociative. Cheia primar estecompunerea a trei chei externe plus eventuale coloane adiionale.

    Transformarea atributelor

    Un atribut singular devine o coloan.

  • 8/14/2019 Curs Baze Date

    12/188

    Atributele multiple devin tabele dependendente ce conin cheia primar aentitii i atributul multiplu. Cheia primar este o cheie extern, plus unasau mai multe coloane adiionale.

    Entitile devin tabele, iar atributele lor devin coloane n aceste tabele. Cedevin atributele relaiilor? Pentru relaii 1:1 i 1:n, atributele relaiilor vor aparinetabelului care conine cheia extern, iar pentru relaii m:n i de tipul trei, atributele vorfi plasate n tabelele asociative.

    Schemele relaionale corespunztoare acestei diagrame conceptuale sunturmtoarele:

    SALARIAT(cod_salariat#, nume, prenume, sex, job_cod, cod_sot,forma_plata, nr_depart);

    DEPARTAMENT(cod_departament#, nume, numar_cladire, cod_sal);

    ATASAT_LA(cod_salariat#, nr_proiect#, functia);

    PROIECT(nr_proiect#, descriere, buget_alocat);

    SARCINA(nr_proiect#, nr_sarcina, data_inceperii, stare);

    PROIECTnr_proiect#descriere

    buget_alocat

    SARCINAnr_proiect#nr_sarcina#data_inceperiistare

    DEPARTAMENTcod_departament#numenr_cladirecod_salariat

    AGENT_TERITORIALzona

    comision

    PROGRAMATORlimbajnivel

    SALARIATcod_salariat#salariunumesex

    job_cod

    conduce lucreaza_in

    apartine_la

    ATASAT_LAcod_salariat#nr_proiect#functie

    TELFONcod_salariat#nr_telefon#

    casatorit

  • 8/14/2019 Curs Baze Date

    13/188

    AGENT_TERITORIAL(cod_salariat#, zona, comision);

    PROGRAMATOR(cod_salariat#, limbaj, nivel);

    TELEFON(cod_salariat#, nr_telefon#).

    Regulile lui Codd

    Caracteristici ale modelului relaional: nu exist tupluri identice;

    ordinea liniilor i a coloanelor este arbitrar;

    articolele unui domeniu sunt omogene;

    fiecare coloan definete un domeniu distinct i nu se poate repeta n cadrulaceleiai relaii;

    toate valorile unui domeniu corespunztoare tuturor cazurilor nu mai pot fi

    descompuse n alte valori (sunt atomice).Avantajele modelului relaional:

    fundamentare matematic riguroas;

    independen fizic a datelor;

    posibilitatea filtrrilor;

    existena unor structuri de date simple;

    realizarea unei redundane minime;

    suplee n comunicarea cu utilizatorul neinformatician.

    Ca limite ale modelului relaional putem meniona: rmne totui redundan,

    ocup spaiu,

    apar fenomene de inconsisten,

    nu exist mecanisme pentru tratarea optim a cererilor recursive,

    nu lucreaz cu obiecte complexe,

    nu exist mijloace perfecionate pentru exprimarea constrngerilor deintegritate,

    nu realizeaz gestiunea totala a datelor distribuite,

    nu realizeaz gestiunea cunotinelor.

    n anul 1985, E.F. Codd a publicat un set de 13 reguli n raport cu care unsistem de gestiune a bazelor de date poate fi apreciat ca relaional. Nici un sistem degestiune a bazelor de date pus n vnzare pe piaa comercial nu respect absolut toateregulile definite de Codd, dar acest lucru nu mpiedic etichetarea acestor sistemedrept relaionale.

    Nu trebuie apreciat un SGBD ca fiind relaional sau nu, ci msura n careacesta este relaional, deci numrul regulilor lui Codd pe care le respect.

    Regula 1 regula gestionrii datelor. Un SGBD relaional trebuie s fiecapabil s gestioneze o baz de date numai prin posibilitile sale relaionale.

  • 8/14/2019 Curs Baze Date

    14/188

    Regula 2 regula reprezentrii informaiei. ntr-o baz de date relaional,informaia este reprezentat la nivel logic sub forma unor tabele ce poart numele derelaii.

    Regula 3 regula accesului garantat la date. Fiecare valoare dintr-o baz dedate relaional trebuie s poat fi adresat n mod logic printr-o combinaie format

    din numele relaiei, valoarea cheii primare i numele atributului.Regula 4 regula reprezentrii informaiei necunoscute. Un sistem relaional

    trebuie s permit utilizatorului definirea unui tip de date numit null pentrureprezentarea unei informaii necunoscute la momentul respectiv.

    Regula 5 regula dicionarelor de date. Asupra descrierii bazelor de date(informaii relative la relaii, vizualizri, indeci etc.) trebuie s se poat aplicaaceleai operaii ca i asupra datelor din baza de date.

    Regula 6 regula limbajului de interogare. Trebuie s existe cel puin unlimbaj pentru prelucrarea bazei de date.

    Regula 7 regula de actualizare a vizualizrii. Un SGBD trebuie s poatdetermina dac o vizualizare poate fi actualizat i s stocheze rezultatul interogriintr-un dicionar de tipul unui catalog de sistem.

    Regula 8 regula limbajului de nivel nalt. Regulile de prelucrare asupraunei relaii luat ca ntreg sunt valabile att pentru operaiile de regsire a datelor,ct i asupra operaiilor de inserare, actualizare i tergere a datelor.

    Regula 9 regula independenei fizice a datelor: Programele de aplicaie iactivitile utilizatorilor nu depind de modul de depunere a datelor sau de modul deacces la date.

    Regula 10 regula independenei logice a datelor. Programele de aplicaie

    trebuie s fie transparente la modificrile de orice tip efectuate asupra datelor.Regula 11 regula independenei datelor din punct de vedere al integritii.

    Regulile de integritate trebuie s fie definite ntr-un sublimbaj relaional, nu nprogramul de aplicaie.

    Regula 12 regula independenei datelor din punct de vedere al distribuirii.Distribuirea datelor pe mai multe calculatoare dintr-o reea de comunicaii de date,nu trebuie s afecteze programele de aplicaie.

    Regula 13 regula versiunii procedurale a unui SGBD. Orice componentprocedural a unui SGBD trebuie s respecte aceleai restricii de integritate ca icomponenta relaional.

    Deoarece regulile lui Codd sunt prea severe pentru a fi respectate de unSGBD operaional, s-au formulat criterii minimale de definire a unui sistem degestiune relaional.

    Un SGBD este minimal relaional dac:

    toate datele din cadrul bazei sunt reprezentate prin valori n tabele;

    nu exist pointeri observabili de ctre utilizator;

    sistemul suport operatorii relaionali de proiecie, selecie i compunerenatural, fr limitri impuse din considerente interne.

    Un SGBD este complet relaional dac este minimal relaional i satisface nplus condiiile:

  • 8/14/2019 Curs Baze Date

    15/188

    sistemul suport restriciile de integritate de baz (unicitatea cheii primare,constrngerile refereniale, integritatea entitii).

    sistemul suport toate operaiile de baz ale algebrei relaionale.

    Exemplu pentru nsuirea formelor normale i a instruciunilor SQL

    Componentelor fundamentale ale bazelor de date relaionale sunt utilizatepentru a construi obiectele bazelor de dae pe care le vom folosi .

    Instruciunile SQL folosite pentru crearea acestor componente ale bazei dedate sunt prezentate n parte.

    TabeleUnitatea primar de stocare a datelor ntr-o baz de date relaional este

    tabelul, care este o structur bidimensional compus din rnduri i coloane. Fiecaretabel reprezint o entitate, ceea ce nseamn o persoan, un loc sau un lucru caretrebuie s fie reprezentat n baza de date, cum ar fi un client, un cont bancar sau otranzacie bancar. Fiecare rnd al tabelului reprezint o apariie a entitii. Figura 1-1reprezint listingul parial al unui tabel numit FILM(filme).

    Tabelul FILM este parte a unei baze de date pentru un magazin de produsevideo, folosit ca exemplu n toat aceast curs. Tabelul FILM conine date care descriufilmele disponibile n magazinul de produse video. Fiecare rnd din tabel reprezintun film, iar fiecare coloan reprezint o caracteristic a filmului respectiv, cum ar fititlul filmului sau categoria MPAA(Motion Picture Associationof America care a fostfondat n 1972 n America ca asociaie a productorilor de film pe lng industriacinematografic)

    FILM_ID FILM_COD_GEN

    MPAA_CODRATING

    FILM_NUME PRET_INCHIR_VHS PRET_INCHIR_DVD AN_PRODUS

    1 Drama R Mystic River 58.97 19.96 20032 ActAv R The Last Samurai 15.95 19.96 20033 Comedie PG-13 Something`s Gotta

    Give14.95 29.99 2003

    4 ActAv PG-13 The Italian Job 11.95 19.99 20035 ActAv R Kill Bill: Vol 1 24.99 29.99 20036 ActAv PG-13 Pirates of the

    Caraibbean: TheCurse of the Black

    Pearl

    29.99 29.99 2003

    7 Drama PG-13 Big Fish 14.95 19.94 20038 ActAv R Man on Fire 50.99 29.98 20049 ActAv PG-13 Master and

    Commander: The FarSide of the World

    12.98 39.99 2003

    10 Drama R Lost in translation 49.99 14.98 200311 Romantic PG-13 Two Weeks Notice 6.93 14.97 200212 Comedie PG-13 50 First Dates 9.95 19.94 200413 Comedie PG-13 Matchstick Men 6.93 19.97 200314 Drama R Could Mountain 24.99 29.99 200315 Drama R Road to Perdition 9.99 14.99

    16 Comedie PG-13 The School of Rock 11.69 29.99 200317 Romantic PG-13 13 Going on 30 14.94 28.95 200418 Drama R Monster 24.99 29.99 2003

  • 8/14/2019 Curs Baze Date

    16/188

    19 ActAv PG-13 The Day AfterTomorrow

    12.98 29.98 2004

    20 Strain R Das Boot 17.99 19.94 1981Figura 1-1 Listingul tabelului FILM

    Se poate observa asemnarea dintre tabelele bazelor de date relaionale i foilede calcul tabelar. Totui, bazele de date relaionale ofer o flexibilitate mult mai maren organizarea i afiarea informaiilor.

    RelaiiRelaiile reprezint asocierile dintre tabelele bazelor de date relaionale. Dei

    fiecare tabel relaional poate exista independent, esena bazelor de date este tocmaistocarea informaiilor ntre care exist legturi. De exemplu, pe lng filmele propriu-zise, putei stoca informaii despre categoriile folosite de magazin pentru organizareainventarelor de filme. n acelai timp, putei stoca i informaii despre copiile fiecruifilm, inclusiv data la care a fost primit copia i formatul acesteia, cum ar fi DVD sau

    VHS. Prin folosirea realaiilor, putei asocia tabelele nrudite, ntr-un mod formal,uor de folosit astfel nct putei s combinai date din tabele multiple n aceeaiinterogare a bazei de date, dar pstrnd flexibilitatea de a include numai informaiilecare v intereseaz.Posibilitatea de a selecta din baza de date numai informaiile carev intereseaz v permite s ajustai informaiile din baz de date n funcie decerinele specifice ale persoanelor sau aplicaiilor care au acces la baza de date.

    Figura 1-2 prezinta patru tabele din baza de date a magazinului de produsevideo si relaiile dintre acestea, ntr-un format cunoscut sub numele de diagrama derelatii a entitatilor (ERD Entity Relationship Diagram). Fiecare dreptunghi dindiagrama reprezint un tabel relaional, cu numele tabelului scris deasupra linieiorizontale si coloanele tabelului enumerate pe verticala , in portiunea principala a

    dreptunghiului.Relaiile sunt implementate folosind coloane corespondente din cele dou

    tabele participante. n diagrama ERD coloana sau coloanele subliniate din fiecaretabel. UN tabel poate avea o singur cheie primar. Totui , o cheie primar poate ficompus din mai multe coloane, dac aceasta este calea de formare a unei chei unice.Dac o cheie primar este folosit ntr-un alt tabel pentru stabilirea unei relaii, poartnumele de chieie extern. n figur 1-2, observai coloanele cheie extern folosite ntabelul FILM pentru crearea relaiilor cu tabelele FILM_GENRE i MPAA_RATINGi marcate cu identificatoarele i n dreapta numelui coloanei cheieextern. i coloana COD_LIMBA este marcat drept cheie extern , dar tabelulLANGUAGE i relaia acestuia cu tabelul FILM au fost omise din figura de mai sus.

    Cheile primare i cheile externe sunt blocuri de construcie fundamentale alemodelului relaional, deoarece stabilesc relaii i permit crearea legturilor ntre date,atunci cnd este necesar. Trebuie s nelegei acest concept pentru a putea nelegecum funcioneaz bazele de date relaionale.

  • 8/14/2019 Curs Baze Date

    17/188

    Figura 1-2 Diagrama ERD a bazei de date (prezentare parial)

    RestriciiO restricie este o regul specificat pentru un obiect al bazei de date (de

    obicei un table sau o coloan), avnd rolul de a limita ntr-un mod oarecare domeniulde valori permise pentru obiectul respectiv al bazei de date.Dup ce sunt specificate,restriciile sunt impuse automat de sistemul DBMS i nu pot fi ocolite dect dac o

    persoan autorizata le dezactiveaz sau le terge(le elimin).Fiecare restricie primeteun nume unic, astfel nct s poat fi referit n mesajele de eroare i n comenzile

    folosite ulterior n baz de date.Este recomandabil ca proiectanii bazei de date sdenumeasc restriciile, deoarece numele generate automat de baz de date nu suntfoare descriptive. Totui , nu am denumit restriciile din baza de date folosit caexemplu n aceast carte, deoarece, din pcate, nu toate produsele RDBMSdisponibile n prezent accept restriciile denumite.

    Exist mai multe tipuri de restricii pentru baze de date:Restricia NOT NULL Poate fi plasat pe o coloan pentru a mpiedica

    folosirea valorilor nule.O valoare nul (null) este o modalitate special prin caresistemul RDBMS trateaz valoarea unei coloane pentru a indica faptul c valoareacoloanei respective nu este cunoscut. O valoare nul nu este acelai lucru un unspaiu liber, un ir vid sau valoarea zero i este o valoare special care nu este egal cu

    nimic altceva.Restricia cheie primar (primary key) Definit pe coloana (coloanele)

    cheie primar ale unui tabel pentru a garanta c valorile cheie primar suntntotdeauna unice n ntreg tabelul.Atunci cnd cheia primar este definit pe maimulte coloane, combinaia valorilor acelor coloane trebuie s fie unic n tabel - ocoloan care reprezint doar o parte a valorii cheii primare poate conine valoriduplicate n tabel. Restriciile cheie primar sunt aproape inttotdeauna implementatede RDBMS prin folosirea unui index.Indexul este un tip special de obiect al unei bazededate care permite efectuarea cutrilor rapide n valorile coloanei.Atunci cnd ntabele sunt nserate rnduri noi, sistemul RDBMS verific automat indexul pentru a seasigura c cheia primar a noului rnd nu este deja folosit n tabel i , dac sentmpl acest lucru , respinge cererea de inserare. Cutarea n indexuri se face multmai repede dect cutarea n tabel;ca urmare, indexarea cheii primare este esenial

    FILMFILM_ID

    MPAA_RATING FILM_COD_GEN FILM_GENMPAA_COD_RATING MPAA_COD_RATING FILM_COD_GEN MPAA_DESCRIERE_RATING FILM_NUME FILM_DESCRIERE_GEN

    RETAIL_PRET_VHSRETAIL_PRET_DVDAN_PRODUS

    FILM_COPIIFILM_ID >NUMAR_COPIE DATA_CUMPARAREDATA_VANZAREFORMAT_MEDIA

  • 8/14/2019 Curs Baze Date

    18/188

    pentru orice tabel, indiferent de dimensiunea acestuia, astfel nct cutarea cheilorduplicate la fiecare inserare s nu duc la o reducere semnificativ a performanelor.O caracteristic suplimentar a cheilor primare este faptul c nu pot fi definite dect

    pe coloane pentru care a fost definit i restricia NOT NULL.Restricia de unicitate (unique) Definit pe o coloan sau un set de

    coloane care trebuie s conin valori unice ale tabelului. Ca i n cazul cheilorprimare, sistemul RDBMS folosete aproape ntotdeauna un index ca modalitate deimpunere eficient a restriciei.Totui, spre deosebire de cheile primare, un tabel poateavea definite mai multe restricii de unicitate, iar coloanele care particip la orestricie de unicitate pot conine ( n cele mai multe sisteme RDBMS ) i valori nule.

    Restricia referenial (numit uneori restricie de integritatereferenial) O restricie care impune o relaie ntre dou tabele dintr-o baz de daterelaional. Prin impunere se nelege c sistemul RDBMS se asigur ntotdeauna,n mod automat, c fiecrei valori a cheii externe i corespunde o valoarea a cheii

    primare n tabelul printe.n tabelul FILM, sistemul RDBMS nu-mi permite s inserezo nregistrare cu valoarea M n coloana MPAA_COD_RATING, deoarece M nu

    este o valoarea MPAA_COD_RATING valid i , ca urmare, nu apare ca valoare acheii primare din tabelul MPAA_RATING. n sens invers, sistemul RDBMS nu-mi

    permite s terg din tabelul MPAA_RATING rndul cu cheia primar PG-13 ,deoarece valoarea respectiv este folosit ca valoare a cheii externe pentru cel puinuna din nregistrrile din tabelul FILM. Pe scurt , restricia referenial garanteaz crelaia dintre cele dou tabele i valorile corespondente ale cheii primare i cheiiexterne i pstreaz logica n orice moment.

    Restricia CHECK Folosete o instruciune logic simpl (scris n SQL)pentru a valida valoarea unei coloane.Rezultatul instruciunii trebuie s fie o valoarelogic de adevrat (true) sau fals (false), astfel nct un rezultat adevrat s permitnserarea n tabel a valorii coloanei, iar un rezultat fals s duc la rejectarea valoriicoloanei , cu mesajul de eroare corespunztor.

    IndexUn index reprezint o cale rapid de localizarei sortare a Inregistrarilor dintr-

    o tabel prin gruparea tuturor nregistrrilor pentru un anumit atribur sau grup deatribute. Indexarea este utilizat n dou scopuri principale:

    accelerarea cutrilor n baya de date asigurarea unicitii nregistrrilor

    De exemplu, dac ne intereay anumite nume dintr-o tabel Studeni, putem

    crea un index pentru coloana NumeSt, pentru a regsi mai repede studenii cu unanmit nume de familie..

  • 8/14/2019 Curs Baze Date

    19/188

    Putem indexa i mai multe coloane, de exemplu creem un index cu numele

    NUME , pentru coloanele NumeSt i PrenumeSt.

    Dei accelereaz procesul de regsire a datelor , indecii ngreuneazactualizarea lor.Dupa fiecare operaie de actualiyare)inserare, modificare, tergere,trebuie verificai i actualiyai indecii.Folosirea lor trebuie bine ntemeiat altfelmresc timpul de rspuns al sistemuluii ocup spaiul suplimentar pe disc .

    In Partea a-II-aAccess , se prezint modul de creare a indecilor i n ParteaIII, la DDL, create index.

    Observaie: Cheia primar a unei tabele este indexaa automat. Nu pot fi indexate coloane de tipul :Memo, Hyperlinksau OLE Cnd o coloan face parte din cheia primar a unei tabele, proprietatea

    Indexed are valoarea Yes(No Duplicates), i proprietatea Required

    primete valoarea Yes, deoarece cheia primar nu poate conine valoareanull.

    Vizualizri

    O vizualizare (view) este o interogare stocat n baza de date i pune ladispoziia utilizatorului un subset personalizat al datelor din unul sau mai multe tabeleale bazei de date. Cu alte cuvinte, o vizualizare este un tabel virtual, deoarece arat caun tabel i n cele mai multe privine se comport c un tabel, dar nu stocheaz date (nu este stocat dect interogarea SQL care definete vizualizarea).

    Vizualizrile au mai multe funcii utile: Mascheaz radurile pe care utilizatorul nu este nevoie s le vad (sau nu-ieste permis s le vad).

    Mascheaz coloanele pe care utilizatorul nu are nevoie s le vad (sau nu-ieste permis s le vad).

    Mascheaz operaiile complexe efectuate n baza de date, cum ar fiuniunile de tabele (respectiv combinarea coloanelor din tabele multiplentr-o singur interogare a bazei de date).

    mbuntete performanele interogrilor (n unele sisteme RDBMS,precum Microsoft SQL Server).

  • 8/14/2019 Curs Baze Date

    20/188

  • 8/14/2019 Curs Baze Date

    21/188

    Anomaliile care apar n lucrul cu baza de date se produc datoritdependenelor care exist ntre datele din cadrul relaiilor bazei de date.

    Dependenele sunt plasate greit n tabele!

    Exist trei probleme care pot aprea n tabelele fr normalizare i toate trei

    exist n tabelul de mai jos. Scopul procesului de normalizare este de a elimina acesteprobleme (anomalii) din proiectul bazei de date.

    Figura 1-3 Tabelul FILM far normalizare

    Anomalia de inserareAnomalia de inserare se refer la o situaie n care nu putei insera date n baza

    de date din cauza unei dependene artificiale dintre coloanele unui tabel.S presupunem c vreti s adugai n baza de date a magazinului un nou gen

    de film care urmeaz a fi folosit pentru clasificarea filmelor.Tabelul de mai sus nupermite acest lucru dect dac avei un film care s fie plasat n categoria respectivasipe care va trebui s-l adugai n tabelul FILM n acelai timp.Ar fi mult mai binedac ai putea adauga noile genuri nainte de primirea filmelor n magazin.

    FILM_ID

    GEN_COD

    GEN_DESCRIERE

    LANG_CODE

    MPAA_COD_RATING

    MPAA_RATING_DESC

    FILM_NUME

    AN_PRODUS

    DATA_CUMPARARE

    DATA_VANZARE

    MEDIA_FORMAT

    PRET-INCHIRIERE

    1 Drama

    Drama

    en, fr R Sub 17 aninecesitaprezentaparintilor sau aunui adult

    Mystic River 2003

    01/01/2005 DVD 19.96

    2 AclAd

    ActAvsiaventura

    en, fr,es

    R Sub 17 aninecesitaprezentaparintilor sau aunui adult

    The LastSamurai

    2003

    01/10/2005 DVD 19.96

    2 ActAv

    Actiunesiaventura

    en, fr,es

    R Sub 17 aninecesitaprezentaparintilor sau aunui adult

    The LastSamurai

    2003

    01/10/2005 VHS 15.95

    3 Comedie

    Comedie

    en PG-13 Parintii suntavertizati

    Something'sGotta Give

    2003

    01/10/2005 1/30/2005

    DVD 29.99

    3 Comedie

    Comedie

    en PG-13 Parintii suntavertizati Something'sGotta Give 2003 2/15/2005 DVD 29.99

    4 ActAv

    Actiunesiaventura

    en, fr PG-13 Parintii suntavertizati

    The ItalianJob

    2003

    2/15/2005 DVD 19.99

  • 8/14/2019 Curs Baze Date

    22/188

    Anomalia de tergereAnomalia de tergere este inversul anomaliei de inserare. Se refer la situaia

    n care tergerea unor date duce la pierderea neintenionat a altor date. De exempludac primul film din tabel este singurul rnd din tabelul FILM pentru care coloanaGEN_COD are valoarea Drama , i este ters, se pierdeinformaia c a existatvreodat un gen numit Drama

    Anomalia de actualizare

    Anomalia de actualizare se refer la o situaie n care actualizarea unei singurevalori necesit actualizarea mai multor rnduri. De exemplu , dac n tabelul prezentatmai sus trebuie s modificai descrierea codului MPAA_COD_RATING R, trebuies modificai i toate rndurile din tabel pentru filmele cu codul respectiv. Problemesimilare apar i pentru coloana GEN_DESCRIERERIPTION. Chiar i coloana

    PRET_INCHIR are aceast problem, deoarece toate copiile aceluiai film (cu aceeaivaloare FILM_ID ) pe acelai mediu (DVD sau VHS) ar trebui s aib acelai pre.Un alt pericol legat de aceast anomalie este faptul c stocarea unor date redundante

    poate aduce la posibilitatea de actualiza numai o parte a copiilor respectivelor date,ceea ce ar avea ca rezultat apariia inconsecvenelor n baza de date.

    Aplicarea procesului de normalizare

    De obicei, normalizarea ncepe de la mijloacele de redare a datelor care sunt

    (sau vor fi) prezentate utilizatorilor, cum ar fi pagini web, ecrane ale aplicaiilor,rapoarte i aa mai departe. Colectiv, acestea sunt numite vizualizri de utilizator(user views). Poate prea ciudat la prima vedere, dar este ceva obinuit ca proiectareaunui sistem de prelucrare a datelor s nceap de la rezultatele pe care le va vedeautilizatorul, parcurgnd apoi drumul napoi ctre mijloacele folosite pentru obinerearezultatelor dorite. n timpul proiectrii bazei de date, procesul de normalizare esteaplicat fiecrei vizualizri , iar rezultatul este un set de relaii normalizate care pot fiapoi direct implementate ca tabele ale bazei de date relaionale.

    Stpnirea procesului de normalizare cere timp i exerciiu, n specia deoareceimpune prouectantului s se gndeasc ntr-un mod conceptual la datele i relaiile pecare intenioneaz s le foloseasc. n timpul normalizrii , considerai ca fiecare

    vizualizare este o relaie.Cu alte cuvinte, conceptualizai fiecare vizualizare ca i cum ar fi deja un tabel

    bidimensional .De asemenea , este nevoie de timp pentru a va obinui cu terminologia folosit

    n procesul de normalizare. n timpul acestui proces, majoritatea proiectanilor evitfolosirea unor termeni fizici, precum tabel, coloan i cheie primar.

    Dei relaia pe cale de a fi normalizat reprezint o propunere de tabel , ncnu exist ca tabel fizic, aa c termenul nu este foarte exact.

    Procesul de normalizare este aplicat sistematic fiecrei vizualizri. Cel puinla nceput este mai uor s reprezentai fiecare vizualizare ca un tabel bidimensional,coninnd date repetitive, aa cum am fcut n figura 1-3. Pe msur ce parcurgei

    procesul de normalizare, vei rescrie relaiile existente i vei crea altele. Rescriereavizualizrilor n relaii (tabele) cu date reprezentative este un proces obositor i

  • 8/14/2019 Curs Baze Date

    23/188

    consumator de timp. Trebuie s fii foarte atent ca exemplele de date folosite pentruluarea deciziilor n procesul de normalizare s fie cu adevrat reprezentative pentrutipurile de valori care vor aprea n datele reale. Aa cum probabil v ateptai,exemple prost alese duc deseori la proiectarea eronat a bazei de date.

    Scopul procesului de normalizare este eliminarea anomaliilor de inserare,

    actualizare si tergere. Procesul determin crearea unui numr mai mare de relaiidect ai avea ntr-un model fr normalizare. Relaiile suplimentare sunt necesarepentru eliminarea anomaliilor, dar mprirea datelor n mai multe relaii face caextragerea datelor stocate s fie puin mai dificil.

    Alegerea unui identificator unic

    Primul pas al procesului de normalizare const n alegerea unui identificatorunic (unique identifier), care este un atribut (o coloan) sau un set de atribute careidentific n mod unic fiecare rnd de date dintr-o relaie.

    Identificatorul unic va deveni ulterior cheia primar a tabelului creat dinrelaia normalizat. Pentru normalizare, este obligatoriu ca fiecare relaie s aib unidentificator unic. In multe cazuri, putei gsi un atribut care identific n mod unicdatele din fiecare rnd al relaiei pe care vrei s o normalizai. Atunci cnd nu puteigsi un singur atribut care s poat fi folosit ca identificator unic, este posibil s gsiimai multe atribute care pot fi concatenate (combinate) pentru a forma un identificatorunic. Atunci cnd identificatoarele unice sunt formate din atribute multiple, fiecareatribut rmne pe propria lui coloan - nu facei dect s definii un identificator unicformat din mai multe coloane, n foarte puine cazuri, ntr-o relaie nu exist un setrezonabil de atribute care s poat fi folosit ca identificator unic. Atunci cnd sentmpl acest lucru, trebuie s inventai un identificator unic, deseori cu valori

    atribuite secvenial sau aleatoriu pe msur ce noile rnduri de date sunt adugate ntabelul bazei de date. Aceast tehnic este sursa unor identificatoare unice, precumnumrul de asigurri sociale folosit n Statele Unite, numerele de identificare aleangajailor sau numerele de nmatriculare ale mainilor.

    Relaia FILM din figura 1-3 ne pune o problem n privina gsirii unuiidentificator unic. La prima vedere, ar prea c atributul FILM_ID este cel mai

    potrivit n acest scop. Totui, observai c valorile FILM_ID 2" i 3" apar de ctedou ori, aa c, fr nici un dubiu, aceast valoare nu este unic. Problema este cvaloarea FILM_ID identific n mod unic fiecare titlu, dar magazinul urmreteseparat fiecare copie a filmelor pe care le are n stoc Cauza este faptul c magazinul seocup i de nchirierea filmelor i vrea s se asigure c fiecare client returneaz exact

    copia pe care a nchiriat-o. Dup inspectarea datelor folosite ca exemplu i o scurtdiscuie cu proprietarul magazinului, ajungei la concluzia c n relaia FILM nuexist nici o combinaie de atribute care s identifice n mod unic fiecare copie a unuifilm, aa c inventai un atribut numit NR_ COPIE i-1 adugai n relaie. Ori de cteori inventai un identificator unic (sau o parte a unui identificator) este foarteimportant ca toi s neleag valorile pe care le va lua acest identificator. In acest caz,

    proprietarul magazinului decide ca valorile NR_ COPIE s renceap de la 1 pentrufiecare valoare FILM_ID, ceea ce nseamn c valorile NR_ COPIE sunt unice numain combinaie cu valorile FILM_ID. Relaia rezultat este prezentat n figura 1 4

    Prima form normal: eliminarea datelor repetate

  • 8/14/2019 Curs Baze Date

    24/188

    O relaie este n prima form normal atunci cnd nu conine atribute cuvalori multiple (atribute muli valoare), adic atribute care au mai multe valori

    pentru acelai rnd de date. ntr-o relaie, orice intersecie a unui rnd cu o coloantrebuie s conin cel mult o valoare pentru ca relaia s fie n prima form normal.n figura 1-4, atributul pentru limb (COD_LIMBA) conine mai multe valori pentru

    unele dintre filme, aa c-l putei considera un atribut cu valori multiple. Atributele deacest tip sunt mai greu de ntreinut, deoarece valorile din list trebuie s fie mai ntiseparate, astfel nct valorile individuale s poat fi modificate far a le afecta pecelelalte.

    Uneori, un atribut multivaloare este deghizat sub forma atributelor multiple.De exemplu, figura 14 ar putea fi modificat astfel nct s conin atribute (coloane)separate pentru cel mult trei limbi corespunztoare fiecrui film, numite Language 1,Language 2 i Language 3. Totui, si acestea ar fi considerate atribute multivaloare,dar ntr-o forma special, numit grup repetitiv, care nu este acceptat n prima formnormal. Din punct de vedere logic, un grup repetitiv nu este diferit de un atributmultivaloare. De fapt, grupurile repetitive prezint deseori chiar mai multe probleme

    dect atributele multivaloare, deoarece trebuie s adugai o nou coloan n tabel oride cte ori vrei s adugai mai multe valori dect a prevzut iniial proiectantul bazeide date (cum ar fi o a patra limb pentru un film). Bazele de date relaionale cer catoate rndurile dintr-un tabel s aib acelai numr de coloane, dar un tabel poateconine orice numr de rnduri

    Figura 1-4 Relaia FILM.Ca urmare, procesul de normalizare pentru obinerea primei forme normale

    cere s transformai coloanele repetate i valorile repetate din coloane n rndurirepetate ntr-un tabel separat .

    Pentru transformarea relaiilor ne-normalizate n prima form normal, trebuie

    s mutai atributele multivaloare i grupurile repetitive n noi relaii. Deoarecegrupurile repetitive reprezint un set de atribute care se repet mpreun, toate

    FILM_ID

    NR_COPI

    E

    GEN_COD

    GEN_DESCRIERE

    COD_LIMBA

    MPAA_COD_RATING

    MPAA_RATING_DESC

    FILM_NUME

    AN_PRODUS

    DATA_CUMPARARE

    DATA_VANZARE

    MEDIAFORMAT

    PRET_INCHIR

    1 1 Drama

    Drama en,fr

    R Sub 17 aninecesita prezentaparintilor sau aunui adult

    MysticRiver

    2003

    01/01/2005

    DVD 19.96

    2 1 AclAd

    Actiunesiaventura

    en,fr, es

    R Sub 17 aninecesita prezentaparintilor sau aunui adult

    The LastSamurai

    2003

    01/10/2005

    DVD 19.96

    2 2 ActAv

    Actiunesiaventura

    en,fr, es

    R Sub 17 aninecesita prezentaparintilor sau aunui adult

    The LastSamurai

    2003

    01/10/2005

    VHS 15.95

    3 1 Comedie

    Comedie

    en PG-13

    Parintii suntavertizati

    Something's GottaGive

    2003

    01/10/2005

    1/30/2005

    DVD 29.99

    3 2 Comedie Comedie en PG-13 Parintii suntavertizati Something's GottaGive

    2003 2/15/2005 DVD 29.99

    4 1 ActAv

    Actiunesiaventura

    en,fr

    PG-13

    Parintii suntavertizati

    The ItalianJob

    2003

    2/15/2005

    DVD 19.99

  • 8/14/2019 Curs Baze Date

    25/188

    atributele dintr-un grup repetitiv ar trebui mutate n aceeai relaie. Pe de alt parte, unatribut multivaloare (un atribut individual care are valori multiple) ar trebui s fiemutat ntr-o nou relaie proprie, nu s fie combinat cu alte atribute multivaloare nnoua relaie.

    Procedura de mutare a unui atribut multivaloare sau a unui grup repetitiv ntr-o

    nou relaie const n urmtoarele etape:1. Creai o nou relaie, cu un nume sugestiv. Deseori, este bine s includeinumele relaiei originale, parial sau n ntregime, n numele noii relaii.

    2. Copiai identificatorul unic din prima relaie n noua relaie. Datele depindde acest identificator n relaia original, aa c trebuie s depind de aceeai cheie in noua relaie. Identificatorul copiat va deveni cheie extern n noua relaie.

    3. Mutai grupul repetitiv sau atributul multivaloare n noua relaie. (Amfolosit aici verbul a muta, deoarece aceste atribute sunt terse din relaia original.)

    4. Formai un identificator unic n noua relaie, adugnd atribute laidentificatorul unic copiat din relaia original. Ca ntotdeauna, asigurai-v cidentificatorul unic nou format conine numai numrul minim de atribute necesar

    pentru a-1 face unic. Dac mutai un atribut multivaloare, care, n esen, este un gruprepetitiv cu un singur atribut, este adugat atributul respectiv pentru formareaidentificatorului unic. Poate prea ciudat la prima vedere, dar identificatorul uniccopiat din relaia original nu este doar o cheie extern, ci, de obicei, i o parte aidentificatorului unic (cheia primar) a noii relaii. Acest lucru este absolut normal.De asemenea, este perfect acceptabil s avem o relaie n care toate atributele fac partedin identificatorul unic (adic nu exist atribute care s nu fac parte din cheie).

    5. Opional, putei s nlocuii cheia primar cu un singur atribut surogatpentru cheie. Dac facei acest lucru, trebuie s pstrai i atributele care compuncheia primar natural, format la paii 2 i 4.

    Figura 1-5 prezint rezultatul aducerii relaiei din figura 1-4 la prima formnormal. Observai urmtoarele:

  • 8/14/2019 Curs Baze Date

    26/188

    Am folosit o mic scurttur n cazul identificatorului unic n noua relaieFILM Language. Limba n care este disponibil un film se aplic filmului, n general,

    nu copiilor individuale. Observai n figura 1-4 c lista de limbi disponibile nu seschimb ntre rndurile duplicate ale aceluiai film. Ca urmare, partea NR_ COPIE aidentificatorului unic din relaia FILM nu a fost copiat n noua relaie FILMLanguage. Dac a fi fcut acest lucru, a fi creat n noua relaie o problem specificcelei de-a doua forme normale, pe care ar fi trebuit s o rezolv n urmtoarea etap a

    procesului de normalizare. Vei descoperi c, deseori, proiectanii experimentai debaze de date sintetizeaz cele trei forme normale i rescriu relaiile originale direct na treia form normal. Exersnd, vei putea i dumneavoastr s facei acelai lucru.

    Figura 1-5 Soluia primei forme normale

    Atributul FILM_ID a fost copiat din relaia original (FILM) n noua relaie(FILM Language).

    Atributul multivaloare COD_LIMBA a fost mutat din relaia FILM n relaiaFILM Language, cu numele Language Code. (Numele abreviate ale atributelor din

    FILM_ID

    NR_COPIE

    GEN_COD

    GEN_DESCRIERE

    MPAA_COD_RATING

    MPAA_RATING_DESC

    FILM_NUME AN_PR

    ODUS

    DATA_CUMPARARE

    DATA_VANZARE

    MEDIAFORMAT

    PRET_INCHIR

    1 1 Drama

    Drama R Sub 17 ani necesitaprezenta parintilorsau a unui adult

    Mystic River 2003

    01/01/2005

    DVD 19.96

    2 1 AclAd

    Actiunesiaventura

    R Sub 17 ani necesitaprezenta parintilorsau a unui adult

    The LastSamurai

    2003

    01/10/2005

    DVD 19.96

    2 2 ActAv

    Actiunesiaventura

    R Sub 17 ani necesitaprezenta parintilorsau a unui adult

    The LastSamurai

    2003

    01/10/2005

    VHS 15.95

    3 1 Comedie Comedie PG-13 Parintii suntavertizati Something'sGotta Give 2003

    01/10/2005 1/30/2005 DVD 29.99

    3 2 Comedie

    Comedie PG-13 Parintii suntavertizati

    Something'sGotta Give

    2003

    2/15/2005

    DVD 29.99

    4 1 ActAv

    Actiunesiaventura

    PG-13 Parintii suntavertizati

    The Italian Job 2003

    2/15/2005

    DVD 19.99

    FILM_ID COD_LIMBA1 en

    1 fr2 en2 fr2 es3 en4 en4 fr

  • 8/14/2019 Curs Baze Date

    27/188

    figura 1-4 au fost folosite doar pentru ilustrare - este recomandabil s prescurtainumele numai dac este absolut necesar.)

    Identificatorul unic din relaia FILM Language este format prin combinareaatributelor FILM_ID i Language Code, adic din toate atributele relaiei.

    Nici FILM, nici FILM Language din figura 1-5 nu conin grupuri repetitive

    sau atribute multivaloare, aa c ambele relaii sunt n prima form normal.

    A doua form normal: eliminarea dependenelor pariale

    nainte de a explora a doua form normal, trebuie definit conceptul dedependen funcional. Pentru aceast definiie, voi folosi dou atribute arbitrare,inteligent denumite A" i B". Atributul B este dependent funcional de atributul Adac n nici un moment nu exist mai mult de o valoare a atributului B asociat cu ovaloare dat a atributului A. In primul rnd, a spune c atributul B este funcionaldependent de atributul A nseamn i c atributul A determin atributul B sau c Aeste un determinant(identificator unic) pentru atributul B.

    n al doilea rnd, s ne mai uitm o dat la relaiile din figura 1-5.n relaia FILM, putei s v dai seama cu uurin c atributul FILM_NUME

    este dependent funcional de atributul FILM_ID, deoarece, n orice moment, poateexista o singur valoare FILM_NUME pentru o valoare FILM_ID dat. Chiar faptulc valoarea FILM_ID definete n mod unic valoarea FILM_NUME n relaienseamn c FILM_NUME este dependent funcional de FILM_ID.

    Se spune c o relaie este n a doua form normal dac ndeplineteurmtoarele criterii:

    Relaia este n prima form normal. Toate atributele non-cheie sunt dependente funcional de identificatorul

    unic (cheia primar), luat ca ntreg.Aplicnd aceste criterii relaiei FILM din figura 1 -5, este clar c avem cteva

    probleme. Identificatorul unic este o combinaie a atributelor FILM_ID i NR_COPIE. Totui, numai atributele DATA_CUMPARARE, DATA_VANZARE,MEDIA FORMAT i PRET_INCHIR depind de ntregul identificator. i este logic sfie aa. Indiferent cte copii ale unui film avem n baza de date, toate au aceleaivalori pentru gen, categorie MPAA, TITLU i AN_PRODUS.

    Unele atribute descriu filmul n sine, n timp ce altele descriu copiile pe care ledeine (sau le-a deinut) magazinul din filmul respectiv. In esen, am amestecatatribute care descriu n aceeai relaie dou lucruri (entiti) diferite (dei nrudite) din

    lumea real.A doua form normal se aplic numai relaiilor care au identificatoare uniceconcatenate (adic formate din atribute multiple). ntr-o relaie care are un singuratribut ca identificator unic, este imposibil ca un alt atribut s depind de o parte aidentificatorului unic, deoarece acesta, fiind format dintr-un singur atribut, nu are pricomponente. Ca urmare, orice relaie n prima form normal care are cheia primarformat dintr-un singur atribut este automat n a doua form normal.

    Dup ce descoperii o nclcare a celei de-a doua forme normale, soluia estes se mute atributele parial dependente ntr-o nou relaie, n care s depind dentreaga cheie primar. Figura 1-6 prezint aceast soluie. Toate atributele caredepind numai de FILM_ID sunt acum ntr-o relaie (numit FILM) n care FILM_ID

    este identificator unic. Cele care depind de combinaia FILM_ID i NR_ COPIE suntntr-o relaie (numit FILM Copy) n care FILM_ID i NR_ COPIE formeaz

  • 8/14/2019 Curs Baze Date

    28/188

    identificatorul unic. Relaia FILM Language era deja n a doua form normal,deoarece nu are atribute non-cheie i, ca urmare, a rmas nemodificat.

    FILM:FILM_ID

    GEN_COD

    GEN_DESCRIERE

    MPAA_COD_RATING

    MPAA_DESCRIERE_RATING

    FILM_NUMEAN_PRODUS

    1 Drama Drama RSub 17 ani necesitaprezenta parintilorsau a unui adult

    Mystic River2003

    2 ActAvActiune siaventura

    RSub 17 ani necesitaprezenta parintilorsau a unui adult

    The LastSamurai 2003

    3Comedie

    Comedie PG-13Parintii suntavertizati

    Something'sGotta Give 2003

    4 ActAvActiune siaventura

    PG-13Parintii suntavertizati

    The ItalianJob 2003

    FILM LANGUAGE:FILM_ID LANGUAGE_CODE1 En1 Fr2 En2 Fr2 Es3 En4 En4 Fr

    FILM COPY:FILM ID NR_ COPIE DATA_CUMPARARE

    DATA_VANZARE

    MEDIA FORMAT PRET_INCHIR

    1 1 01/01/2005 DVD 19.962 1 01/10/2005 DVD 19.962 2 01/10/2005 VHS 15.953 1 01/10/2005 1/30/2005 DVD 29.993 2 2/15/2005 DVD 29.994 1 2/15/2005 DVD 19.99

    Figura 1-6. Soluia pentru a doua form normal

    A treia form normal: eliminarea dependenelor tranzitive

    Pentru a nelege a treia form normal, trebuie s se definesc conceptul dedependen tranzitiv. Despre un atribut care depinde de un atribut care nu esteidentificator unic (cheie primar) a relaiei se spune c este dependent tranzitiv.

    n relaia FILM din figura 1 -6, observm c atributulGEN_DESCRIEREription depinde de atributul GEN_COD, iar MPAA RatifigDescription depinde de MPAA_COD_RATING. Pericolul pstrrii acestor descrierin relaia FILM este faptul c, n final, cele dou atribute ajung s depind denregistrarea unui film, ceea ce duce la toate cele trei anomalii de date prezentate mai

    devreme n acest capitol.

  • 8/14/2019 Curs Baze Date

    29/188

    Se spune c o relaie este n a treia form normal dac ndeplineteurmtoarele dou criterii:

    Relaia este n a doua form normal. Nu exist dependene tranzitive (cu alte cuvinte, toate atributele non-cheie

    depind numai de identificatorul unic).

    Pentru a aduce la a treia form normal o relaie aflat n a doua formnormal, se mut atributele dependente tranzitiv n relaii n care depind numai decheia primar. Se las atributul de care depind acestea n relaia original, cu rolul decheie extern.Va trebui apoi s reconstruim vizualizarea original printr-o uniune.

    Ca efect secundar, toate atributele uor de calculat sunt eliminate ca nclcriale criteriilor celei de-a treia forme normale. De exemplu, ntr-o baz de date pentruvnzri, Suma Total este obinut nmulind Cantitatea Cumprat cu Preul Unitar;aa cum se observ cu uurin, Suma Total este dependent de CantitateaCumprat i de Preul Unitar. Presupunnd ci toate cele trei atribute sunt dependentede identificatorul unic al relaiei care le conine, este uor de vzut c Suma Total(rezultatul calculat) este, de fapt, dependent tranzitiv te celelalte dou atribute.

    Figura 1-7 conine soluia n a treia form normal. S-au creat noi relaiipentru MPAA Rating i FILM Gen, s-a mutat descrierile n noile relaii i am lsatatributele pentru coduri (MPAA_COD_RATING i FILM GEN_COD) n relaiaFILM, definite ca fiind chei externe. Muli proiectani de baze de date numesc relaiileMPAA Rating i FILM Genre tabele de cutare" sau tabele de coduri deoarecesunt utilizate, n principal, pentru cutarea codurilor stocate n coloana cheie primar arelaiei. Totui aceste relaii au i alte roluri, cum ar fi controlul codurilor i furnizareaunei surse convenabile pentru lista de coduri valide, care poate fi folosit ntr-o listderulant de pe o pagin web.

    FILM:FILM_ID

    GEN_COD

    MPAA_COD_RATING

    FILM_NUMEPRET_INCHIR VHS

    PRET_INCHIRDVD

    AN_PRODUS

    1 Drama RMystic River 58.97 19.96

    2003

    2 ActAv RThe LastSamurai

    15.95 19.962003

    3Comedie

    PG-13Something'sGotta Give

    14.95 29.992003

    4 ActAv PG-13

    The Italian Job 11.95 19.99

    2003

    FILM_ COPII:FILM_ID NR_ COPIE DATA_CUMPAR

    AREDATE _VINZARE

    MEDIA_FORMAT

    1 1 01/01/2005 DVD2 1 01/10/2005 DVD2 2 01/10/2005 VHS3 1 01/10/2005 1/30/2005 DVD3 2 2/15/2005 DVD

    4 1 2/15/2005 DVD

  • 8/14/2019 Curs Baze Date

    30/188

    MPAA Rating :MPAA_COD_RATING MPAA_DESCRIERE_RATINGPG-13 Parintii sunt avertizatiR Sub 17 ani necesita prezenta parintilor sau a unui adult

    FILM GEN :FILM GEN_COD FILM_GEN_DESCRIEREActAv Actiune si aventuraComedie ComedieDrama Drama

    Figura 1-7. Soluia pentru a treia form normal

    O alt modificare fcut pentru a ajunge la a treia form normal este legat deatributul PRET_INCHIR (pre cu amnuntul) din relaia Movie Copy, aa cum se

    poate vedea n figura 1-6. Dup o discuie cu proprietarul magazinului, am stabilit cpreul depinde de combinaia dintre Movie ID i Media Format, toate copiile cuaceleai valori pentru FILM_ID i Media Format avnd acelai pre. In mod clar,aceasta este o dependen tranzitiv i, ca urmare, o nclcare a celei de-a treia formenormale.

    Soluia normal pentru o asemenea problem ar fi crearea unei relaii numiteFILM Price, avnd ca identificator unic combinaia dintre FILM_ID i Media Format,i mutarea atributului PRET_INCHIR din FILM Copy n noua relaie. Totui, ntimpul discuiei s-a aflat c urmeaz s se renune la furnizarea filmelor n formatVHS, deoarece sunt cerute de un numr foarte mic de clieni i c peste cteva luni

    magazinul va avea numai filme pe DVD.innd seama de aceast informaie, am decis s mut preul n dou coloanedin tabelul FILM, una cu preul pentru DVD i una cu preul pentru VHS. Dei se

    poate spune c aceasta este o nclcare a primei forme normale (i, din punct devedere tehnic chiar este), mi s-a prut a fi cel mai bun compromis.

    Proiectarea bazelor de date nu este ntotdeauna o tiin exact, aa c demulte ori exist posibilitatea unor mici ajustri, cu condiia ca proiectantul s ia ncalcul consecinele poteniale (msurate n termenii anomaliilor de date) ale fiecruicompromis.

    Forma normal Boyce-Codd (BCNF)

    Dei nu ne propunem s discutm i alte forme normale avansate, considernecesar s le amintim.

    Dr. E. F. Codd a participat la definirea unei versiuni mai puternice a celei de-atreia forme normale, numit forma normal Boyce-Codd.

    Determinantul este un atribut sau o mulime de atribute neredundante, careconstituie un identificator unic pentru alt atribut sau alt mulime de atribute ale uneirelaii date.

    Intuitiv, o relaie R este n forma normal Boyce-Codd dac i numai dacfiecare determinant este o cheie candidat.

    Formal, o relaie R este n forma normal Boyce-Codd dac i numai dacpentru orice dependen funcional total X A, X este o cheie (candidat) a lui R.

  • 8/14/2019 Curs Baze Date

    31/188

    Exemplu:ADRESA(cod_parsoana#, telefon#, adresa)

    cod_persoana

    adresa

    telefon

    n dependena adresa telefon se observ c determinantul nu este o cheiecandidat. Relaia ADRESA se desface n:

    ADRESA_1(cod_persoana#, adresa);ADRESA_2(adresa#, telefon).

    Relaiile sunt n BCNF, se conserv datele, dar nu se conserv dependenele(s-a pierdut cod_persoana, telefon adresa).Diferii ali autori i cercettori au oferit propriile extensii, numite a patra

    form normal, a cincea form normal, forma normal cu cheie de domeniu i altele.A patra form normal(FN4) elimin redudanele datorit relaiilor de tip m:m.

    Este nevoie de ceva exerciiu n procesul de normalizare nainte ca aceste extensii sdevin logice.

    In plus, a treia form normal acoper toate anomaliile pe care este posibil sle ntlnii n lucrul cu baze de date obinuite.

    Prezentarea general a bazei de date pentru un magazin video

    Majoritatea exemplelor din acest curs folosesc ca model o baz de date pentruun magayin virtual de produse video.

    Instruciunile SQL pentru creare obiectelor bazei de date i pentru populareaacestora cu date vor fi prezentate n leciile urmtoare.

    n figura 1-8 se prezint disgrama entitate relaie, ERD (Entity RelationshipDiagram) pentru aceast baz de date.

  • 8/14/2019 Curs Baze Date

    32/188

    FILM_ID PK FILM_COD_GEN FK1

    MPAA_COD_RATING PK MPAA_COD_RATING FK2 FILM_COD_GEN PK MPAA_DESCRIERE_VARSTE FILM_NUME FILM_DESCRIERE_GEN

    RETAIL_PRET_VHSRETAIL_PRET_DVDAN_PRODUS

    FILM_ID PK,FK1 FILM_ID PK,FK FILM_ID PK,FK1 NUMAR_COPIE PK NUMAR_COPIE PK,FK COD_LIMBA PK,FK2 DATA_CUMPARARE TRANZACTIE_ID PK,FK

    DATA_VANZARE DATA_INTOARCEREFORMAT_MEDIA COST_INCHIRIERE

    COST_INTARZIERE_SAU_PIERDEREDATA_RETURNARE

    COD_LIMBA PK NUME_LIMBA CLIENT_CONT_ID PK TRANZACTIE_ID PK

    CLIENT_HOLD_IND CLIENT_CONT_ID FK1

    DATA_INSCRIS ANGAJAT_PERSOANA_IDDATA_TERMINAT TRANZACTIE_DATACLIENT_DEPOZIT_SUMA VANZARI_TAXA

    CLIENT_CONT_ID PK,FK1 CARD_CREDIT_LA_DOSAR_INDICPERSOANA_ID PK,FK2 COPIL_INCHIRIERE_PERMIS_INDIC

    PERSOANA_ID PK PERSOANA_ID PK,FK PERSOANA_PRENUME SUPERVISOR_PERSOANA_IDPERSOANA_NUME_MIJLOCIU ANGAJAT_TAXA_IDPERSOANA_NUME ANGAJAT_JOB_CATEGORIEPERSOANA_ADRESA_1 ANGAJAT_RATA_PE_ORAPERSOANA_ADRESA_2 ANGAJARE_DATAPERSOANA_ADRESA_ORAS INCHIDERE_DATA

    PERSOANA_ADRESA_JUDET_PROVPERSOANA_ADRESA_COD_POSTALPERSOANA_ADRESA_TARAPERSOANA_TELEFONNASTERE_DATAMOARTE_DATA

    CLIENT_COD_PERSOANA

    PERSOANA

    CLIENT_TRANZACTIE

    FILM_GEN

    FILM_COPII

    ANGAJAT

    FILM_INCHIRIERE

    CLIENT_CONT

    FILM_LIMBA

    LIMBA

    FILM

    MPAA_RATING

    Figura 1_8. Diagrama entitate relaie

    Probleme:

    1. S se normalizeze tabelul CURS_SUDENT i PROFESOR

    Amintim c o tabel este n prima form normal(FN1) dac valorile tuturoratributelor care o compun sunt atomice (indivizibile). n plus, nu trebuie s existeatribute sau grupuri de atribute repetitive.

    Aceast prim form normal este considerat ca fiind o cerina minimalpentru majoritatea sistemelor relaionale, utilitatea ei fiind evident. Astfel , dac ocoloan ar conine o list de valori , regsirea i manipularea informaiilor stocate ar fi

    foarte anevoioase.Presupunem c tabela Curs_Student conine urmtoarele date:

  • 8/14/2019 Curs Baze Date

    33/188

    CURS_SUDENTNrMatricol NumeSt PrenumeSt Grupa Cursuri-Nota458 Predescu Alexandru 114 engleza-7,germana-8521 Radu George 122 desen-tehnic-10,franceza-7627 Cristescu Lucian 243 programare-8,engleza-10746 Irimia Diana 361 analiza numerica-9782 Tanase Daciela 341 gernana-6,programare-10982 Bunea Mihaela 114 rezistenta materialelor-81204 Dragnea Liviu 412 educatie fizica-10S1520 Popa Marius 452 analiza numerica-7,engleza-9

    Coloana Cursuri conine mult prea multa informaie.S presupunem c am nlocui coloana Cursuri cu dou noi coloane:CURS_SUDENT

    NrMatricol NumeSt PrenumeSt Grupa Curs1 Nota1 Curs2 Nota2

    458 Predescu Alexandru 114 engleza 7 germana 8521 Radu George 122 desen tehnic 10 franceza 7627 Cristescu Lucian 243 programare 8 engleza 10746 Irimia Diana 361 analiza numerica 9782 Tanase Daciela 341 germana 6 programare 10

    982 Bunea Mihaela 114rezistentamaterialelor 8

    1204 Dragnea Liviu 412 educatie fizica 101520 Popa Marius 452 analiza numerica 7 engleza 9

    Nici acum nu am rezolvat toate problemele. De exemplu, pentru a afla ci

    studenti s-au nscris n total la un anumit curs , va trebui s parcurgem toate cele treicoloane cu cursuri. n plus, ce se ntmpl n cazul n care un student s-a nscris la maimult de dou cursuri? S zicem c un student nu se poate inscrie la mai mult de cincicursuri i deci putem introduce zece coloane pentru a stoca informaiile curs-nota..Evident , aceasta ar presupune o mare risip de spaiu , de vreme ce ar exista i uniistudenti care au ales doar dou cursuri.

    Pentru a aduce tabela Curs_Student la FN1 vom introduce o nou coloan ncheia primar a tabelei, astfel nct aceasta va fi format acum din dou coloane:

    NrMatricol i IdCurs. Acum putem afla numrul total de studeni nscrii la unanumit curs.

    CURS_SUDENT

    NrMatricol NumeSt PrenumeSt Grupa IdCurs Denumire458 Predescu Alexandru 114 4 germana521 Radu George 122 3 franceza521 Radu George 122 5 desen tehnic627 Cristescu Lucian 243 1 programare627 Cristescu Lucian 243 2 engleza746 Irimia Diana 361 8 analiza numerica

    A doua form normal (FN2)

    Amintim c o tabel este n a doua form normal dac este n FN1 i fiecareatribut care nu face parte din cheia primar este dependent de ntreaga cheie primar.

  • 8/14/2019 Curs Baze Date

    34/188

    Tabela Curs_Student este n FN1, dar nu ndeplinete cea de-a doua cerinpentru a fi n FN2. Coloana Denumire care depinde numai de IdCurs, nu i deNrMatricol , care , mpreun cu IdCurs, formeaz cheia primar. Deci avem ocoloan care nu face parte din cheia primar i nu depinde de toat cheia, n sensul c, pentru o valoare dat a lui IdCurs, cunoatem denumirea cursului fr a mai trebui s

    tim i NrMatricol. Putem aduce tabelaCurs_Student n FN2 descompunnd-o ndou tabele, dup urmtoarea regul: pentru fiecare dependen parial se formeaz onou tabel (pe care o vom numi Curs) coninnd coloanele determinate de aceastdependena (n acest caz, Denumirea) i determinantul lor (IdCurs). Coloaneledeterminate se elimin din tabela iniial.

    Cheia primar a noii tabele va fi format din coloanele ce compundeterminantul dependenei (IdCurs), ntre cele dou tabele rezultate exist o relaie detip 1:m asigurat de existena lui IdCurs drept cheie strin n tabela Curs_Student.

    Analog, deoarece coloanele NumeSt, PrenumeSt i grupa depind numai deNrMatricol, le eliminm din tabela Curs_Student i formm o nou tabel, Student,ce le va conine i va avea drept cheie primar coloana NrMatricol.

    De asemenea , ntre tabelele Student i Curs_Student exist o relaie de tip1:m.

    STUDENT

    CURS_SUDENT CURS

    A treia form normal (FN3)

    O tabel este n a treia form normal dac este n FN2 i toate coloanele carenu fac parte din cheia primar sunt mutual independente (depind direct de cheia

    primar i numai de ea)

    NrMatricol NumeSt PrenumeSt Grupa458 Predescu Alexandru 114521 Radu George 122627 Cristescu Lucian 243746 Irimia Diana 361782 Tanase Daciela 341982 Bunea Mihaela 1141204 Dragnea Liviu 412

    1520 Popa Marius 452

    IdCurs NrMatricol Nota

    1 782 5

    1 982 10

    2 458 7

    3 521 7

    4 627 8

    4 1520 8

    5 521 10

    5 1740 6

    IdCurs Denumire1 programare2 engleza3 franceza4 germana5 desen tehnic6 Rezistenta materialelor

    7 Educatie Fizica8 analiza numerica

  • 8/14/2019 Curs Baze Date

    35/188

    Un exemplu calasic de dependen tranzitiv este cel al coloanelor calculate.Astfel , dac o tabel de produse ar conine Coloanele PretUnitar i Cantitate i , n

    plus, coloana PretTotal aceast tabel nu ar fi n FN3.Coloanele calculate nu sunt singurul caz de dependena tranzitiv ntr-o

    tabel. De exemplu n tabela Profesor se poate observ faptul c salariul depinde de

    titlul profesorului, coloanele Salariu, Titlu i IdTitlu nefcnd parte din cheiaprimar.Dependenele tranzitiv creeaz probleme la adugarea, actualizarea i

    tergerea nregistrrilor. De exemplu, dac la tabela Profesor se mai adaug 20 denregistrri , fiecare cu titlul de preparator (prep), va trebui s introducem de 20 de orivaloarea 5 pentru IdTitlu, descrierea preparaotr pentru Titlu i valoarea 800 pentruSalariu , ceea ce este evident, redundant. De asemenea, dac salariul unui preparatorse modific, va trebui s asctualizm toate nregistrrile corespunztoare.

    Pentru a nltura toate aceste inconveniene, vom aduce tabela Profesor laFN3 prin crearea unei noi tabele, pe care o vom numi Titlu.Tabela Titlu va avea dreptcheie primar coloana IdTitlu i va mai conine coloanele Titlu i Salariu, pe care le-

    am eliminat din tabela Profesor.Profesor

    Titlu

    :

    2. Amintim ca regulile de integritate sunt;- unicitatea cheii primare- integritatea entitii valorile cheii primare sa fie diferite de valoarea

    null(o valoare necunoscuta sau lipsete)- integritatea referenial ) o cheie secundar trebuie s fie null n ntregime

    sau s corespund unei valori a cheii primare asociate.(in tabelaasociat nu trebuie s existe valori fr corespondent).

    Tabelele Titlu i Profesor sunt n relaia 1:m (un Titlu corespunde la mai

    multe cadre didactice).Tabele de mai sus pstreaz regulile de integritate?

    IdProf Nume Catedra IdTitlu1 Popescu Marin Matematici 12 Dragnea Ion Limbi straine 43 Iosif Irina Educatie fizica 34 Ilie Daniel Informatica 25 Savu Cristina Limbi straine 56 Cristea George Fizica 3

    7 Ene Dan Matematici 7

    IdTitlu Titlu Salariu1 lector dr. 13002 asistent 9503 lector 11004 conferentiar dr. 17005 prepartor 6806 profesor dr. 2150

  • 8/14/2019 Curs Baze Date

    36/188

    Raspuns Nu, deoarece exist cadrul didactic cu IDProf= 7 cu IdTitlu =7 , carenu exist in tabelul Titlu, ca funcie didactic.3. S se determine anomaliile pentru tabelul

    AvionA# nume capacitate localitate

    1 AIRBUS 250 PARIS

    2 AIRBUS 250 PARIS3 AIRBUS 250 LONDRA

    4 CAR 100 PARIS

    5 B707 150 LONDRA

    6 B707 150 LONDRA

    Constrngere:toate avioanele cu acelai nume au aceeai capacitate.

    Datorit dependenei introduse pot exista: anomalii la inserare, modificare sautergere, redundan n date, probleme de reconexiune.

    1. Redundan logic. Cuplul (AIRBUS, 250) apare de trei ori.

    2. Anomalie la inserie. S-a cumprat un B727 cu 150 locuri. El poate fiinserat n relaia AVION doar dac se definete o nou valoare pentrucheia primar.

    3. Anomalie la tergere. Dac este tears nregistrarea pentru care A# este

    4, atunci se pierde informaia c un avion CAR are capacitatea 100.4. Anomalie la modificare. Dac se modific capacitatea lui B707 de la 150

    la 170, atunci costul modificrii este mare pentru a modifica toatenregistrrile, iar dac se modific doar o nregistrare atunci constrngereanu va mai fi verificat.

    4. Exemplu: variante pentru a implementa FN1 pentru tabelulMASINA:

    Persoana Vehicul

    Eu R25 - W14 - R21Tu 205

    El R5 - 305

    noi BX - 305 - R12 - R25

    Varianta 1

    Persoana Vehicul

    Eu R25

    Eu W14

  • 8/14/2019 Curs Baze Date

    37/188

    Eu R21

    Tu 205

    El R5

    El 305

    Noi BX

    Noi 305

    Noi R12

    Noi R25

    Varianta 2

    Persoana Prima Doi Trei Patru

    Eu R25 W14 R21

    Tu 205

    El R5 305

    Noi BX 305 R12 R25

    Varianta 3 (4 tabele)

    Masina 31 (similar se definesc Masina_32, Masina_33, Masina_34)..

    Persoana Vehicul

    Eu R25

    Tu 205

    El R5Noi BX

    Masina_34

    Persoana Vehicul

    Noi R25

    5. S se aduca la FN2

    O relaie R este n a doua form normal dac i numai dac:

    relaia R este n FN1;

    fiecare atribut care nu este cheie (nu particip la cheia primar) estedependent de ntreaga cheie primar.

    ATASAT_LA

    COD_SALARIAT# JOB_COD NR_PROIECT# FUNCTIA SUMA

    S1 PROGRAMATOR P1 SUPERVIZOR 60

    S1 PROGRAMATOR P2 CERCETATOR 25

  • 8/14/2019 Curs Baze Date

    38/188

    S1 PROGRAMATOR P3 AUXILIAR 10

    S3 VANZATOR P3 SUPERVIZOR 60S5 INGINER P3 SUPERVIZOR 60

    ATASAT_2A

    COD_SALARIAT# NR_PROIECT# FUNCTIA SUMA

    S1 P1 SUPERVIZOR 60

    S1 P2 CERCETATOR 25

    S1 P3 AUXILIAR 10S3 P3 SUPERVIZOR 60

    S5 P3 SUPERVIZOR 60

    ATASAT_2BCOD_SALARIAT# JOB_COD

    S1 PROGRAMATOR

    S3 VANZATORS5 INGINER

    A doua condiie exprim necesitatea total dependenei de cheiaprimar. Aceast form normal interzice manifestarea unor dependene funcionalepariale n cadrul relaiei R!

    Pentru a obine o relaie FN2 se poate aplica regula Casey-Delobel. mulimea atributelor care intervin n dependenele funcionale; reprezint reuniunea determinantului cu restul atributelor lui A.

    7. Tabelul atasat_2a nu este in FN3. De ce?Forma normal 3 (FN3)Intuitiv, o relaie R este n a treia form normal dac i numai dac: relaia R este n FN2; fiecare atribut care nu este cheie (nu particip la o cheie) depinde direct de

    cheia primar.

    atasat_3aCod_salariat# Nr_proiect# FunctiaS1 P1 SupervizorS1 P2 CercetatorS1 P3 AuxiliarS3 P3 SupervizorS5 P3 Supervizor

    atasat_3bFunctia SumaSupervizor 60

    Cercetator 25Auxiliar 10

  • 8/14/2019 Curs Baze Date

    39/188

    8. Presupunem c un antier poate executa mai multe lucrri de baz i co lucrare poate fi executat de mai multe antiere.

    LUCRARE(cod_obiectiv#, cod_lucrare#, nume);SANTIER(nr_santier#, specialitate, sef);EXECUTA(cod_obiectiv#, cod_lucrare#, nr_santier#, descriere, functie,conducator, data_inceput, data_sfarsit).Pentru relaia EXECUTA sunt evidente dependenele:{cod_obiectiv#, cod_lucrare#} {data_inceput, data_sfarsit},{cod_obiectiv#, cod_lucrare#, nr_santier#} {descriere, functie,conducator}.

    9. S se aduca la FN3 tabelel EXECUTA_1 rezultat de la 8

    n tabelul EXECUTA_1(cod_obiectiv#, cod_lucrare#, nr_santier#, descriere,functie, conducator) continu s existe redundan n date.

    Atributul conducator depinde indirect de cheia primar prin intermediulatributului functie.

    ntre atributele relaiei exist dependenele:

    {cod_obiectiv#, cod_lucrare#, nr_santier#} {descriere},{cod_obiectiv#, cod_lucrare#, nr_santier#} {functie} {conducator}.Pentru a aduce relaia EXECUTA_1 n FN3 se aplic regula Casey- Delobel.Relaia se desface, prin eliminarea dependenelor funcionale tranzitive, n

    proieciile:

    EXECUTA11(cod_obiectiv#, cod_lucrare#, nr_santier#, descriere, functie)EXECUTA12(functie, conducator).

    10 S se aduc la forma BCNF (Forma normal Boyce-Codd )

    (Formal, o relaie R este n forma normal Boyce-Codd dac i numai dacpentru orice dependen funcional total X A, X este o cheie (candidat) alui R.)

    Relaia INVESTESTE_IN leag entitile INVESTITOR iOBIECTIV_INVESTITIE.

    Ea are schema relaional:INVESTESTE_IN(cod_contractant#, cod_obiectiv#, nr_contract, cota_parte).ntre atributele relaiei exist dependenele:{cod_contractant#, cod_obiectiv#} {nr_contract, cota_parte},{nr_contract} {cod_obiectiv}.Se aplic regula Casey-Delobel i se aduce relaia n BCNF.INVESTESTE_IN_1(cod_obiectiv, nr_contract#);

    INVESTESTE_IN_2(cod_contractant#, nr_contract, cota_parte).

  • 8/14/2019 Curs Baze Date

    40/188

    PARTEA a_II_a ACCESS

    n acest parte a cursului de baze de date, se prezint aplicaia MicrosoftAccess n 7 lecii dup cum urmeaz:

    LECIA 1. Elemente introductive despre ACCESS LECIA 2. TABELE LECIA 3. Operatori i Funcii LECIA 4. Stabilirea relaiilor tre tabele LECIA 5. INTEROGRI LECIA 6. FORMULARE LECIA7. RAPOARTE

    LECIA 1. Elemente introductive despre ACCESS

    n acest lecie se vor prezenta NOIUNILE Conceptul de baz de date Componentele unei baze de date Crearea, Crearea unei baze de date vid Deschiderea unei baze de date existente nchiderea unei baze de date Conversii, Compactri, Reparaii)

    Ce este o baz de date

    O baz de date este o colecie de informaii interrelaionate gestionate ca osingur unitate.Aceast definiie este intenionat foarte larg, deoarece exist maridiferene ntre concepiile diferiilor productori care pun la dispoziie sisteme de bazede date. De exemplu, Oracle Corporation definete o baz de date ca fiind o coleciede fiiere fizice gestionate de o singur instan (copie) a produsului software pentru

    baze de date, n timp ce Microsoft definete o baz de date ca fiind o colecie de datei alte obiecte. Un obiect al bazei de date este o structur de date denumit,stocat n

    baz de date, cum ar fi un tabel, o vizualizare sau un index.

    Conceptul de baz de date ACESSO baz de date (n acest context) este un document Microsoft Access, folosit

    pentru a organiza i accesa informaiile.O baz de date este organizat n nregistrri (record-uri), elemente

    individuale de informaie (d.e. datele despre o persoan intr-o agend) i cmpuri,fragmente de informaii (d.e. numele unei anumite persoane).

    O baz de dateeste, de asemenea, o colecie de informaii n legtur cu unanumit subiect sau scop, de exemplu, urmrirea comenzilor clienilor sau ntreinereaunei colecii de muzic. Dac baza de date nu este stocat pe un computer, sau numai

    pri din ea sunt, se va urmri informaia dintr-o varietate de surse ce trebuie

    coordonate i organizate chiar de ctre utilizator.

  • 8/14/2019 Curs Baze Date

    41/188

    Componentele unei baze de date ACESS

    Folosind aplicaiaMicrosoft Access, se poate administra toata informaia ntr-osingur baz de date (Database). n interiorul acestui fiier de tipMicrosoft Access, sempart datele n structuri separate numite tabele (Tables); se vizualizeaz, adaug i

    actualizeaz datele dintr-o tabel folosind formele (Forms); se gsesc i extrag datelefolosind interogri (Queries); i se analizeaz sau se tipresc datele ntr-un formatspecial folosind rapoartele (Reports).

    Tables, Queries, Forms i Reports sunt cele mai importante entiti care secreay ntr+o bay de date Access.

    Datele se stocheaz ntr-o singur locaie (n tabel), dar se pot vizualiza subdiferite forme: interogare, raport sau form. n momentul n care se modific isalveaz informaia n tabel atunci aceasta se va vedea i n celelalte forme.

    Pentru stocarea datelor, se creeaz o tabel pentru fiecare tip de informaie pecare dorii s o urmrii. Pentru utilizarea n diverse forme a informaiilor din tabelediferite se pot defini relaii ntre tabele. Astfel, se definete o relaie ntre un

    identificator unic din tabela de Furnizori i comenzile ctre acest furnizor din tabelaComenziFurnizori. Prin aceasta pentru fiecare furnizor definit n mod unic n tabelaFurnizori se pot extrage din tabela ComenziFurnizori toate comenzile ctre acesta.

    Pentru a gsi i extrage numai informaiile ce ndeplinesc anumite condiiispecificate de utilizator i care includ informaii din mai multe tabele, se poate crea ointerogare. O interogare poate de asemenea s actualizeze sau s tearg mai multenregistrri n acelai timp, s execute calcule asupra datelor, etc

    Pentru a vizualiza, introduce sau schimba uor datele direct ntr-un tabel, secreeaz o form. Atunci cnd se deschide o form, Microsoft Access extrage datedintr-unul sau mai multe tabele i le afieaz pe ecran folosind modalitatea de afiarealeas/creat de utilizator (prin forma respectiv).

    Pentru analiza datelor sau pentru prezentarea lor ntr-o anumit structur latiprire, este necesar s se creeze un raport. Astfel, se poate tipri un raport caregrupeaz datele i calculeaz sumele totale i alt raport n care se afieaz datele

    pentru diferite nregistrri din tabel, etc.Pentru a lucra cu toate obiectele dintr-o baz de date se utilizeaz fereastra

    Database, cea care permite selectarea Tab-urilor se apas Tab-ul dorit i n fereastraafiat se pot vizualiza toate obiectele (de acel tip) disponibile n baza de dateaccesat.

    Folosindu-se butoanele din dreapta acestei liste, se pot deschide (Open),modifica (Design) i crea (New) obiecte noi.

    Cerinele sistemului i posibilitile aplicaiei

    Pentru a folosi Microsoft Access 2003