92
Modelul relaţional 2013-2014

Modelul Relational

Embed Size (px)

DESCRIPTION

Modelul Relational

Citation preview

  • Modelul relaional

    2013-2014

  • Elementele unui model de date pentru baze de date

    Structura modelului definirea obiectelor (entitilor) i a caracteristicilor

    (cmpurilor-atributelor) asociate definirea legturilor dintre obiecte (asocieri).

    Operatorii care acioneaz asupra structurii de date

    Reguli de integritate - restricii care asigur meninerea corectitudinii datelor i coerena lor.

    Mihaela Muntean-2013

  • Modelul relaional a fost propus de E.F. Codd de la IBM n 1970

    pentru a asigura independena datelor. a fost implementat n SGBD-uri comerciale n

    1981. este cel mai utilizat model de date

    IBM, Informix, Oracle, SQL Server, etc. integrarea facilitilor oferite de modelul orientat obiect

    n modelul relaional- modelul relaional obiectual Informix Universal Server, Oracle, DB2

    Mihaela Muntean-2013

  • Modelul relaional

    este bazat pe noiunea matematic de relaie.

    relaiile sunt reprezentate natural prin tabele.

    Mihaela Muntean-2013

  • Structura modelului relaional Domeniul este un ansamblu de valori, caracterizat

    printr-o denumire. explicit : D1:{F, M}) implicit : D2:{a| a N})

    Relaia (tabela) reprezint un subansamblu al produsului cartezian al mai multor domenii (D1D2D3.) caracterizat printr-o denumire conine tupluri cu semnificaie

    Mihaela Muntean-2013

  • Nrmatricol:D1 Nume:D2 Facultate:D3 301 Popa Elena COM 302 Anton Dan REI . . .

    Relaia STUDENTI: D1: {x| x N, x[1, 10000]} D2: domeniul cu numele de persoane D3: {CSIE, COM, REI, MK, FIN, MAN}

    Structura modelului relaional

    Mihaela Muntean-2013

  • Structura modelului relaional Atributul - coloana unei tabele, caracterizat

    printr-o denumire. Numele atributului exprim, de obicei, semnificaia

    valorilor luate dintr-un domeniu corespunztor. Fiecare atribut i ia valorile dintr-un domeniu. Mai multe atribute pot lua valori din acelai domeniu Ordinea atributelor nu trebuie s prezinte nici o

    importan.

    Mihaela Muntean-2013

  • Structura modelului relaional

    Nrmatricol:D1 Nume:D2 Facultate:D3 301 Popa Elena COM 302 Anton Dan REI . . .

    Nrmatricol:D1 Facultate:D3 Nume:D2 301 COM Popa Elena 302 REI Anton Dan . . .

    Relatia Studenti

    Mihaela Muntean-2013

  • Structura modelului relaional

    Tuplul este linia dintr-o tabel i nu are o denumire ordinea liniilor (tuplurilor) nu trebuie s

    prezinte nici o importan. numrul tuplurilor dintr-o relaie reprezint

    cardinalul relaiei, numrul valorilor dintr-un tuplu definete

    gradul relaiei.

    Mihaela Muntean-2013

  • Structura modelului relaional Valorile unui tuplu al unei relaii R aparin produsului cartezian

    al domeniilor relaiei R. De exemplu, tabela Studenti conine : tuplul unde : 301D1 Popa ElenaD2 COMD3

    Mihaela Muntean-2013

  • Structura modelului relaional

    Schema unei relaii STUDENTI(nrmatricol: number(4), nume: varchar(50),

    facultate: varchar2(4))

    Cardinalitatea relaiei (nr. tupluri)=1000 tupluri

    Nrmatricol:D1 Facultate:D3 Nume:D2 301 COM Popa Elena 302 REI Anton Dan . . .

    Mihaela Muntean-2013

  • Structura modelului relaional

    Cheia primar este un atribut sau un ansamblu de atribute cu ajutorul cruia se poate identifica unic un tuplu dintr-o relaie.

    Mihaela Muntean-2013

  • Definirea asocierilor

    Se face logic construind asocieri ntre diferite tabele: atribute de legtur (chei externe-foreign key).

    n tabelele implicate n asociere (1:1, 1:m) n tabele distincte (m:m)

    LMD (SELECT-SQL) LDD (Create table.foreign keyreferences)

    Mihaela Muntean-2013

  • Mihaela Muntean-2013

  • Operatorii modelului relaional operaiile ce se pot executa pe datele stocate n baze de date

    Cereri (interogri) - citiri de date din baza de date. S se afieze studentii care particip la un anumit curs.

    Actualizri (adaugri/tergeri/modificri) limbaje de interogare

    simple dar puternice fundamentate teoretic

    algebra relaional/calculul relaional permit optimizarea cererilor

    Mihaela Muntean-2013

  • Algebra relaional

    ofer o colecie de operatori relaionali care acioneaz la nivel de relaie Operatori de baz (introdui de Codd) :

    reuniunea diferena produsul cartezian proiecia selecia jonciunea.

    Mihaela Muntean-2013

  • Mihaela Muntean-2013

  • Clienti codc denc loc

    1 Deck Computers Bucuresti 2 Python Bucuresti 3 Expert Computers Cluj 4 Acer Cluj

    comenzi nrcom datai termen val codc

    1000 10/8/2011 11/10/2011 1800 1

    1001 10/10/2011 11/30/2011 200 2

    1002 10/2/2011 11/20/2011 200 3

    1003 10/8/2011 11/15/2011 1000 1

    1004 10/9/2011 11/15/2011 200 1

    1005 10/9/2011 11/16/2011 200 1

    1006 10/12/2011 12/20/2011 300 4

    1007 10/12/2011 12/15/2011 200 3

    1008 10/13/2011 11/25/2011 200 2

    1009 10/17/2011 11/25/2011 400 4

    Mihaela Muntean-2013

  • Comanda SELECT

    Select atribut [[as] alias {, atribut [as] alias]} From tabela [[as] alias] {, [[as] alias]} [where conditii_pe_tupluri] [group by list_de_atribute_pentru_grupare] [having condiii_pe_grupuri] [order by lista_de_atribute_pentru_ordonare]

    Mihaela Muntean-2013

  • Produsul cartezian

    const din construirea unei noi relaii R3 a crei schem se obine prin concatenarea schemelor relaiilor R1 i R2.

    Relaia R3 conine toate combinaiile tuplurilor din R1 i R2.

    Notaie: R1R2.

    Mihaela Muntean-2013

  • Produsul cartezian

    denc nrcom Python 1010 Python 1009 Python 1008 Python 1007 Python 1006 Python 1005 Python 1004 .. .

    Select denc, nrcom from clienti, comenzi;

    Mihaela Muntean-2013

  • Selecia

    produce o subrelaie R1 a unei relaii R. subrelaia obinut va conine tuplurile relaiei R

    care satisfac o anumit condiie. Notaie: condiie (R).

    Mihaela Muntean-2013

  • Select denc from clienti where loc=Bucuresti;

    Mihaela Muntean-2013

  • Select denc from clienti where loc=Bucuresti;

    Mihaela Muntean-2013

  • Proiecia

    const din construirea unei relaii P n care se regsesc numai acele atribute din relaia R specificate explicit n cadrul operaiei.

    suprimarea unor atribute din R nseamn efectuarea unor tieturi verticale asupra lui R care pot avea ca efect apariia unor tupluri duplicate care se cer a fi eliminate.

    Notaie: R(Ai, Aj, .Am).

    Mihaela Muntean-2013

  • Select loc from clienti; clienti

    codc denc loc 1 Deck Computers Bucuresti 2 Python Bucuresti 3 Expert Computers Cluj 4 Acer Cluj

    Mihaela Muntean-2013

  • Select distinct loc from clienti;

    Mihaela Muntean-2013

  • Jonciunea

    este o derivat a produsului cartezian i reprezint o operaie definit pe dou relaii R1 i R2, operaie care const din construirea unei noi relaii R3 prin concatenarea unor tupluri din R1 cu tupluri din R2.

    se concateneaz acele tupluri din R1 i R2 care satisfac o anumit condiie specificat explicit n cadrul operaiei.

    Notaie: JOIN (R1, R2, condiie).

    Mihaela Muntean-2013

  • Tipuri de jonctiuni:

    jonciune de egalitate (equi-join); jonciune extern (outer-join); jonciune care utilizeaz un alt operator de comparaie

    diferit de (=)

    Mihaela Muntean-2013

  • Jonciune de egalitate: Select * from clienti inner join comenzi on clienti.codc = comenzi.codc;

    jonctiune_de_egalitate clienti.codc denc loc nrcom datai termen val comenzi.codc

    1 Deck Computers Bucuresti 1000 10/8/2011 11/10/2011 1800 1 1 Deck Computers Bucuresti 1003 10/8/2011 11/15/2011 1000 1 1 Deck Computers Bucuresti 1004 10/9/2011 11/15/2011 200 1 1 Deck Computers Bucuresti 1005 10/9/2011 11/16/2011 200 1 2 Python Bucuresti 1001 10/10/2011 11/30/2011 200 2 2 Python Bucuresti 1008 10/13/2011 11/25/2011 200 2 3 Expert Computers Cluj 1002 10/2/2011 11/20/2011 200 3 3 Expert Computers Cluj 1007 10/12/2011 12/15/2011 200 3 4 Acer Cluj 1006 10/12/2011 12/20/2011 300 4 4 Acer Cluj 1009 10/17/2011 11/25/2011 400 4 4 Acer Cluj 1010 10/12/2011 11/21/2011 1000 4

    Mihaela Muntean-2013

  • SELECT clienti.denc, comenzi.nrcom FROM clienti INNER JOIN comenzi ON clienti.codc = comenzi.codc;

    Mihaela Muntean-2013

  • Mihaela Muntean-2013

  • Jonciunea extern (outer join)

    este o operaie prin care din dou relaii R1 i R2 se obine o nou relaie R3 prin jonciunea relaiilor R1 i R2, relaie la care sunt adugate i tuplurile din R1 i R2 care nu au participat la jonciunea de egalitate.

    aceste tupluri sunt completate n R3 cu valori null pentru atributele relaiei corespondente (R2 respectiv R1). Notaie: EXT-JOIN(R1, R2).

    trei variante: stnga, dreapta i complet.

    Mihaela Muntean-2013

  • Left outer join

    Angajat Departament Ionescu Vnzri Popescu Producie Dumitru Producie

    Departament Sef Producie Marinescu Contabilitate Bujor

    Select r1.angajat, r1.departament, r2.sef from r1 left outer join r2 on r1.departament=r2.departament; Angajat Departament Sef

    Ionescu Vnzri null Popescu Producie Marinescu Dumitru Producie Marinescu

    R2

    R1

    Mihaela Muntean-2013

  • Right outer join

    Angajat Departament Ionescu Vnzri Popescu Producie Dumitru Producie

    Departament Sef Producie Marinescu Contabilitate Bujor

    Select r1.angajat, r1.departament, r2.sef from r1 right outer join r2 on r1.departament=r2.departament;

    R2

    R1 Angajat Departament Sef Popescu Producie Marinescu Dumitru Producie Marinescu null Contabilitate Bujor

    Mihaela Muntean-2013

  • Jonctiune externa completa

    Angajat Departament Ionescu Vnzri Popescu Producie Dumitru Producie

    Departament Sef Producie Marinescu Contabilitate Bujor

    Select r1.angajat, r1.departament, r2.sef from r1 full outer join r2 on r1.departament=r2.departament;

    R2

    R1 Angajat Departament Sef Ionescu Vanzari null Popescu Producie Marinescu Dumitru Producie Marinescu null Contabilitate Bujor

    Mihaela Muntean-2013

  • Jonciune de neegalitate

    Marca Nume Salariu 100 Muntean 1000 101 Ionescu 1500 102 Florea 2000

    Angajati

    Treapta SALMIN SALMAX 1 500 1000 2 1000 2000 3 2000 5000

    Trepte de salarizare

    SELECT nume, treapta FROM angajati, trepte WHERE salariu between salmin and salmax;

    Marca Nume Treapta 100 Muntean 1 101 Ionescu 2 102 Florea 3

    Mihaela Muntean-2013

  • Restriciile de integritate

    reguli pe care trebuie s le satisfac datele pentru a putea fi considerate corecte i coerente restricii de integritate structurale restricii de integritate de comportament (semantice)

    gestionate de regula in afara modelului de date triggeri, codul aplicatiei

    Mihaela Muntean-2013

  • Restricii de integritate structurale

    sunt specifice modelului relaional se definesc prin compararea unor valori ale

    datelor din cadrul tabelelor: Restricia de unicitate a cheii Restricia referenial Restricia entitii

    Mihaela Muntean-2013

  • Restriciile de integritate minimale

    sunt definite toate n raport cu noiunea de cheie a unei relaii

    Cheia unei relaii este un ansamblu minim de atribute prin care se poate identifica unic orice tuplu din relaie un atribut (cheie simpl) mai multe (cheie compus). pot exista mai multe combinaii de atribute cu proprietatea de

    identificare a tuplurilor (chei candidate). cheie primar

    LDD (create table-SQL, alter table-SQL) Dictionarul BD informatii despre restrictii

    Mihaela Muntean-2013

  • Restriciile de integritate minimale

    Restricia de unicitate a cheii ntr-o relaie s nu existe dou tupluri cu aceeai

    valoare pentru ansamblul atributelor cheie. Restricia entitii

    ntr-o relaie atributele din cheia primar s nu ia valori null.

    informaia incomplet n modelul relaional- se utilizeaz o tehnic simpl -valoarea null

    Mihaela Muntean-2013

  • Tipuri de valori null Valoare necunoscut Valoarea inexistent

    Mihaela Muntean-2013

  • Restricia referenial impune ca ntr-o relaie R1 care refer o relaie R2

    (exist o legtur) valorile cheii externe s figureze printre valorile cheii primare din relaia R2 sau s fie valori null (nedefinite). Relaia R1 - relaia care refer R2 relaia referit. o asociere nu poate exista dect ntre parteneri cunoscui,

    definii. atunci cnd ntr-o anumit situaie, asocierea nu e

    aplicabil, unul dintre parteneri va fi desemnat prin valoarea null cu semnificaia de partener inexistent.

    Mihaela Muntean-2013

  • Mihaela Muntean-2013

  • Mihaela Muntean-2013

  • Alte restricii : Restricii de domeniu (domeniul s se ncadreze ntre

    anumite valori). Check (cantitatea >500)

    Mihaela Muntean-2013

  • Mihaela Muntean-2013

  • Mihaela Muntean-2013

  • Limbajul SQL (structured query language)

    a fost dezvoltat ca parte a proiectului SystemR al lui IBM CorporationSEQUEL (1974)/ Structured English Query Language

    1979 Relational Software Inc. (acum Oracle) a introdus prima implementare comercial a lui SQL.

    primul standard 1986, revizuit n 1989 (SQL-89) al doilea standard 1992 (SQL-92) al treilea standard 1999 (SQL-99) SQL-2008 cele mai multe SGBDR implementeaz facilitile de baz ale

    standardului, dar ofer uneori i extensii ale standardului (de exemplu Oracle)

    Mihaela Muntean-2013

  • Limbajul SQL interogarea datelor (SELECT); actualizarea datelor (INSERT/ UPDATE/ DELETE); crearea bazei de date, modificarea structurii bazei de date i tergerea bazei de

    date, precum i a elementelor componente (tabele, tabele virtuale, indeci, triggeri, funcii stocate, etc): CREATE, ALTER, DROP;

    controlul accesului la datele stocate n baza de date (GRANT/REVOKE); asigurarea consistenei i integritii bazei de date prin:

    triggeri pe baza de date. In Oracle, triggerii pe baza de date sunt blocuri PL/SQL care se execut atunci cnd apare un eveniment (insert/ update/ delete);

    restriciile de integritate. controlul tranzaciilor (COMMIT, ROLLBACK, SET TRANSACTION); integrarea cu limbajul XML; operaii OLAP (ROLLUP, slice, dice, pivotare, etc).

    Mihaela Muntean-2013

  • Faciliti de descriere a datelor la nivel logic oferite de SQL standard

    Definirea domeniilor de valori predefinite de standard

    char/character , number (precizie, scala), integer, date, etc

    definite de utilizator (CREATE DOMAIN)

    Mihaela Muntean-2013

  • Faciliti de descriere a datelor la nivel logic oferite de SQL standard

    Definirea schemei de obiecte Create schema

    schema de obiecte (tabele, view, proceduri stocate, functii stocate, pachete stocate,etc) Oracle: schema are denumire si proprietar

    SQL Server(Transact-SQL): CREATE SCHEMA Schema_profesor AUTHORIZATION profesor CREATE TABLE note (nr.matricol int, note int) GRANT SELECT TO student1 DENY SELECT TO student2; ALTER SCHEMA . DROP SCHEMA ..

    Mihaela Muntean-2013

  • Faciliti de descriere a datelor la nivel logic oferite de SQL standard

    Definirea unei tabele (Oracle)

    Create table clienti (codc number(3) primary key, denc varchar2(30) not null, loc varchar2(20), zona varchar2(1), check(zona in(N, S, E, V))) create table comenzi (nrcom number(5) primary key, datai date, val number(10), codc number(3), foreign key(codc) references clienti(codc))

    Mihaela Muntean-2013

  • Mihaela Muntean-2013

  • Mihaela Muntean-2013

  • Mihaela Muntean-2013

  • Definirea restriciilor de integritate

    se declar atunci cnd se creeaz tabelele pot fi ulterior adugate/ terse/ dezactivate (ALTER TABLE ADD/

    DROP/ DISABLE/ ENABLE) Restricia entitii (not null) Restricia unicitii (unique)

    Nume character(20) not null, Prenume character(20) not null, unique (nume, prenume),

    Nume character(20) not null unique, prenume character(20) not null

    unique

    Restricia de cheie primar (primary key) Mihaela Muntean-2013

  • Definirea restriciilor de integritate

    restricia referenial (foreign key references) se pot asocia politici de reacie la nerespectarea restriciei

    refereniale. Aceste politici opereaz pe tabela ce refer, dup ce se execut modificrile n tabela referit. Se pot defini urmtoarele reacii: Cascade : propag modificarea Set null: seteaz pe null atributul referit Set default: asociaz valoarea implicit atributului referit No action: interzice modificarea n tabela referit

    reaciile pot depinde de eveniment.

    On

    Mihaela Muntean-2013

  • Mihaela Muntean-2013

  • Mihaela Muntean-2013

  • Modificarea structurii unei tabele Oracle Alter table clienti add column adresa char(30)

    Stergerea tabelelor Drop table comenzi

    Mihaela Muntean-2013

  • Mihaela Muntean-2013

  • Faciliti de descriere a datelor la nivel extern oferite de SQL standard

    Crearea tabelelor virtuale (view) este o prezentare a datelor din una sau mai multe

    tabele i poate fi gndit ca o cerere stocat. nu conine date, i deriv datele din tabelele de

    baz, dar poate fi interogata, actualizata cu unele restricii.

    toate operaiile executate pe tabela virtual vor afecta tabelele de baz corespunztoare.

    Mihaela Muntean-2013

  • Tabela virtual ofer un nivel suplimentar de securitate prin restricionarea

    accesului la un set predeterminat de rnduri i coloane ale unei tabele;

    ascunde complexitatea datelor ascunde faptul c datele provin de la mai multe tabele de

    baz simplific interogarea pentru utilizator. prezint datele ntr-o form/aspect diferit de tabelele de baz.

    se poate modifica numele coloanelor fr a afecta tabelele de baz;

    stocheaz cereri complexe. prin salvarea cererii ca o tabel virtual , calculele sunt

    executate numai atunci cnd tabela virtual este interogat.

    Mihaela Muntean-2013

  • CREATE VIEW CLIENTI_COM AS SELECT denc as client, count (nrcom) as comenzi FROM clienti, comenzi where clienti.codc=comenzi.codc group by denc;

    Mihaela Muntean-2013

  • Obiective n asigurarea securitii datelor: pstrarea secretului asigurarea integritii datelor valabilitatea datelor

    Acordarea drepturilor de acces la baza de date

    Mihaela Muntean-2013

  • Controlul accesului la date

    stabilirea unei politici de securitate (se specifica cine este autorizat si ce este autorizat sa faca)

    utilizarea unui mecanism de securitate ce permite asigurarea unei politici de securitate: accesul bazat pe notiunea de privilegii (discretionary access

    control) accesul bazat pe notiunea de clase de securitate (mandatory

    access control)

    Mihaela Muntean-2013

  • Accesul bazat pe notiunea de privilegii

    Un privilegiu este caracterizat de: obiect, proprietarul obiectului, utilizatorul care primete privilegiul, dreptul primit pe obiect, posibilitatea de a se transmite mai departe acest drept altor

    utilizatori. Proprietarul unei tabele/tabele virtuale primete automat toate

    drepturile asupra acestor obiecte. Proprietarul unui obiect poate acorda drepturi altor utilizatori pe

    obiectul su. SGBD este cel care monitorizeaz cine primete sau pierde

    privilegiile Mihaela Muntean-2013

  • GRANT ON obiect TO utilizatori [WITH GRANT OPTION]

    privilegii :

    SELECT INSERT (atribut) DELETE REFERENCES(atribut) Numai proprietarul poate executa CREATE, ALTER i DROP.

    GRANT INSERT, SELECT ON tabela to student GRANT DELETE ON tabela TO student WITH GRANT OPTION GRANT UPDATE (atribut) ON tabela TO student GRANT SELECT ON tabela_virtuala TO stud1, stud2 REVOKE privilegii on obiect from utilizatori [restrict|cascade]

    Mihaela Muntean-2013

  • Mihaela Muntean-2013

  • Mihaela Muntean-2013

  • Grant SELECT on "MIHAELA"."CLIENTI_COM" to "SCOTT"; REVOKE SELECT on "MIHAELA"."CLIENTI_COM" from "SCOTT";

    Mihaela Muntean-2013

  • Facilitti de manipulare a datelor oferite de SQL

    actualizarea tabelelor /tabelelor virtuale: INSERT UPDATE DELETE

    nu toate SGBDR permit actualizarea tabelelor virtuale

    Mihaela Muntean-2013

  • Exemple (Oracle) insert into clienti values (5, 'Vector Software', 'Bucuresti') ; update clienti set loc='Cluj' where codc =5; delete from clienti where loc='Cluj'; delete from clienti where codc not in (select distinct codc

    from comenzi);

    Mihaela Muntean-2013

  • DELETE * FROM clienti WHERE loc="Deva";

    Mihaela Muntean-2013

  • Comanda SELECT

    interogarea bazei de date cereri ce utilizeaz una sau mai multe tabele subcereri cereri ierarhice

    simularea operatorilor algebrei relaionale selecie, proiecie, produs cartezian, jonciune, reuniune,

    intersecie, diferen

    agregarea datelor utiliznd funciile de agregare.

    Mihaela Muntean-2013

  • Select atribut [[as] alias {, atribut [as] alias]} From tabela [[as] alias] {, [[as] alias]} [where conditii_pe_tupluri] [group by list_de_atribute_pentru_grupare] [having condiii_pe_grupuri] [order by lista_de_atribute_pentru_ordonare]

    Mihaela Muntean-2013

  • Mihaela Muntean-2013

    Exemple (Access)

  • SELECT clienti.codc, clienti.denc FROM clienti ORDER BY clienti.codc desc;

    Mihaela Muntean-2013

  • Mihaela Muntean-201

  • SELECT produse.denp AS denumire, Sum(produse.pu*randcomanda.cant) AS vanzari FROM produse INNER JOIN randcomanda ON produse.codp=randcomanda.codp GROUP BY produse.denp;

    Mihaela Muntean-2013

  • Mihaela Muntean-2013

  • SELECT produse.denp as denumire, Sum(produse.pu*randcomanda.cant) AS vanzari FROM produse INNER JOIN randcomanda on produse.codp=randcomanda.codp WHERE produse.denp like Cablu* GROUP BY produse.denp HAVING Sum(produse.pu*randcomanda.cant) > 16000000 ;

    Mihaela Muntean-2013

  • Tehnica normalizarii relatiilor

    Anomaliile de actualizare sunt datorate dependenelor care se manifest ntre date i care determin creterea redundanei datelor i reducerea flexibilitii structurii bazei de date.

    Aceasta tehnic este construit n jurul conceptului de forme normale (FN).

    Iniial E.F. Codd a definit 3 forme normale: FN1, FN2, FN3.

    Ulterior au fost definite dou noi forme normale: FN4, FN5.

    Mihaela Muntean-2013

  • Etapele normalizrii unei relaii (FN1FN3)

    Relaie nenormalizat

    Relaie normalizat n FN1

    Relaie normalizat n FN2

    Relaie normalizat n FN3

    Pasul 1: atributele conin valori elementare (atomice- nu sunt date la nivel de grup) i orice tuplu nu trebuie s aib grupuri repetitive. Relaia trebuie s fie rupt n dou sau mai multe relaii.

    Pasul 2: verific c toate atributele noncheie sunt complet dependente de cheia primar. Toate dependenele pariale sunt eliminate i plasate n alt relaie.

    Pasul 3: elimin orice dependen tranzitiv (cnd un atribut noncheie este dependent de alt atribut noncheie).

    Mihaela Muntean-2013

  • Etapele normalizrii unei relaii (FN1FN3)

    Prin atribut simplu (atribut atomic) se nelege un atribut care nu mai poate fi descompus n alte atribute, n caz contrar, atributul este compus (atribut neatomic).

    Exemplu: Data calendaristic este un atribut compus: zi, lun, an; Adresa este un atribut compus: strada, nr, bloc, scara, etaj, apartament,

    localitate, jude; Un grup repetitiv este un atribut (grup de atribute) dintr-o relaie care apare cu

    valori multiple pentru o singur apariie a cheii primare a relaiei nenormalizate.

  • R (codagent, numeagent, zonavnzri, codclient, numeclient, coddepozit, locaie, cantitatevndut):

    Cod agent

    Nume agent

    Zona vnzri

    Cod client

    Numeclient Cod depozit

    Locaie Cantitate vndut

    3 Ionescu Est 18765 18830 19242

    Delta Systems Sony Systems Altex SRL

    4 3 3

    Militari Pantelimon Pantelimon

    10000 20000 30000

    4 Popescu Vest 18841 18899 19565

    Computers SRL Python Expert SRL

    2 2 1

    Berceni Berceni Voluntari

    10000 20000 30000

    Mihaela Muntean-2013

  • Grupul de atribute (codclient, numeclient, coddepozit, locaie, cantitatevndut) este un grup repetitiv care se va elimina i relaia R este n FN1.

    Cod agent

    Nume agent

    Zona vnzri

    Cod client

    Numeclient Cod depozit

    Locaie Cantitate vndut

    3 Ionescu Est 18765 Delta Systems 4 Militari 10000 3 Ionescu Est 18830 Sony Systems 3 Pantelimon 20000 3 Ionescu Est 19242 Altex SRL 3 Pantelimon 30000 4 Popescu Vest 18841 Computers

    SRL 2 Berceni 10000

    4 Popescu Vest 18899 Python 2 Berceni 20000 4 Popescu Vest 19565 Expert SRL 1 Voluntari 30000

    Cheia relaiei R este o cheie compus din atributele: codagent i codclient.

    Redundanta datelor, anomalie la modificare

    Anomalie la stergere: se sterge un agent, se sterg si date despre clienti

    Mihaela Muntean-2013

  • Relaie normalizat n FN2

    atributele numeagent i zonavanzari depind funcional parial numai de atributul codagent.

    atributul cantitateavndut depinde de toat cheia, atributul numeclient depinde funcional parial numai de

    atributul codclient, la fel i atributele coddepozit i locaie.

    Relaia R se descompune n trei relaii: Agenti (codagent, numeagent, zona) Vnzri(codagent, codclient, cantitatevndut) Clienti (codclient, numeclient, coddepozit, locaie)

    Mihaela Muntean-2013

  • Relaie normalizat n FN3

    Agenti codagent nume zona

    Vanzari codagent codclient cantitatevanduta

    Clienti codclient numeclient coddepozit

    Depozite coddepozit locatie

    o singur dependen tranzitiv i anume ntre atributul coddepozit i atributul locaiedepozit. Se elimin prin descompunerea relaiei Clienti.

    Mihaela Muntean-2013

  • Intrebari

    Completati corect: Restricia entitii impune ca ntr-o relaie:.. Rolul unui SGBD este de a: In SQL, pentru a modifica valorile unui atribut se utilizeaz comanda: . In SGBDR Access se pot defini urmatoarele restrictii de integritate:

    Se considera tabelele R1 si R2: Pentru a afisa angajatii din departamentul Vanzari se utilizeaza comanda SQL: Precizai ce operator al algebrei relaionale se utilizeaz pentru a afisa seful

    departamentului de Productie La departamentul de Productie se angajeaza o noua persoana . Ce comanda SQL

    utilizati pentru ca aceasta persoana sa apara in tabela R1 Dorim ca pentru fiecare angajat sa apara obligatoriu si informatii despre adresa

    lor. Ce comanda SQL utilizam si ce restrictii de integritate trebuie sa definim?

    Departament Sef Producie Marinescu Contabilitate Bujor

    R2 Angajat Departament Ionescu Vnzri Popescu Producie Dumitru Producie

    R1

  • Intrebari

    Se considera relatia nenormalizata Studenti (nrmatricol, nume, adresa, sex, stare civila, cod_curs, denumire_curs, tip_curs, numar_credite_curs, nota_curs). Un student participa la mm cursuri si primeste o nota pentru fiecare curs la care participa. Un curs poate fi optional/obligatoriu si are alocat un numar de credite. La un curs pot participa mm studenti. Cheia primar a relaiei este: ............... Aduceti relatia in FN2 Aduceti relatia in FN3

    Modelul relaionalElementele unui model de date pentru baze de dateModelul relaionalModelul relaionalStructura modelului relaionalStructura modelului relaionalStructura modelului relaionalStructura modelului relaionalStructura modelului relaionalStructura modelului relaionalStructura modelului relaionalStructura modelului relaionalDefinirea asocierilor Slide Number 14Operatorii modelului relaional Algebra relaionalSlide Number 17Slide Number 18Comanda SELECTProdusul cartezian Produsul cartezian SeleciaSlide Number 23Slide Number 24ProieciaSlide Number 26Select distinct loc from clienti;JonciuneaTipuri de jonctiuni:Slide Number 30Slide Number 31Slide Number 32Jonciunea extern (outer join) Left outer joinRight outer joinJonctiune externa completaSlide Number 37Restriciile de integritate Restricii de integritate structuraleRestriciile de integritate minimaleRestriciile de integritate minimaleTipuri de valori nullRestricia referenialSlide Number 44Slide Number 45Slide Number 46Slide Number 47Slide Number 48Limbajul SQL (structured query language) Limbajul SQLFaciliti de descriere a datelor la nivel logic oferite de SQL standardFaciliti de descriere a datelor la nivel logic oferite de SQL standardFaciliti de descriere a datelor la nivel logic oferite de SQL standardSlide Number 54Slide Number 55Slide Number 56Definirea restriciilor de integritate Definirea restriciilor de integritate Slide Number 59Slide Number 60Slide Number 61Slide Number 62Faciliti de descriere a datelor la nivel extern oferite de SQL standardTabela virtualSlide Number 65Acordarea drepturilor de acces la baza de dateControlul accesului la dateAccesul bazat pe notiunea de privilegii Slide Number 69Slide Number 70Slide Number 71Slide Number 72Facilitti de manipulare a datelor oferite de SQLExemple (Oracle)Slide Number 75Comanda SELECTSlide Number 77Slide Number 78Slide Number 79Slide Number 80Slide Number 81Slide Number 82Slide Number 83Tehnica normalizarii relatiilorEtapele normalizrii unei relaii (FN1FN3)Etapele normalizrii unei relaii (FN1FN3)Slide Number 87Slide Number 88Relaie normalizat n FN2Relaie normalizat n FN3IntrebariIntrebari