Sunteți pe pagina 1din 92

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

Mihaela Muntean-2013

Informix Universal Server, Oracle, DB2

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.)

Mihaela Muntean-2013

caracterizat printr-o denumire


conine tupluri cu semnificaie

Structura modelului relaional

Nrmatricol:D1
301
302
.

Nume:D2
Popa Elena
Anton Dan
.

Facultate:D3
COM
REI
.

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

Mihaela Muntean-2013

Structura modelului relaional

Atributul - coloana unei tabele, caracterizat


printr-o denumire.

Mihaela Muntean-2013

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.

Structura modelului relaional


Relatia Studenti
Nrmatricol:D1
301
302
.

Facultate:D3
COM
REI
.

Nume:D2
Popa Elena
Anton Dan
.

Nrmatricol:D1
301
302
.

Nume:D2
Popa Elena
Anton Dan
.

Facultate:D3
COM
REI
.

Mihaela Muntean-2013

Structura modelului relaional

Tuplul este linia dintr-o tabel i nu are o


denumire

Mihaela Muntean-2013

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.

Structura modelului relaional

Valorile unui tuplu al unei relaii R aparin produsului cartezian


al domeniilor relaiei R.
De exemplu, tabela Studenti conine :

tuplul <301, Popa Elena, COM>


unde : 301D1
Popa ElenaD2
COMD3
Mihaela Muntean-2013

Structura modelului relaional

Schema unei relaii

STUDENTI(nrmatricol: number(4), nume: varchar(50),


facultate: varchar2(4))
Nrmatricol:D1
301
302
.

Facultate:D3
COM
REI
.

Nume:D2
Popa Elena
Anton Dan
.

Cardinalitatea relaiei (nr. tupluri)=1000 tupluri

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

comenzi
Clienti
codc
denc
1 Deck Computers
2 Python
3 Expert Computers
4 Acer

Mihaela Muntean-2013

nrcom datai

loc
Bucuresti
Bucuresti
Cluj
Cluj

termen

val

codc

1000

10/8/2011

11/10/2011

1800

1001

10/10/2011

11/30/2011

200

1002

10/2/2011

11/20/2011

200

1003

10/8/2011

11/15/2011

1000

1004

10/9/2011

11/15/2011

200

1005

10/9/2011

11/16/2011

200

1006

10/12/2011

12/20/2011

300

1007

10/12/2011

12/15/2011

200

1008

10/13/2011

11/25/2011

200

1009

10/17/2011

11/25/2011

400

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
Python
Python
Python
Python
Python
Python
Python
..

nrcom
1010
1009
1008
1007
1006
1005
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

Mihaela Muntean-2013

denc

loc

1 Deck Computers

Bucuresti

2 Python

Bucuresti

3 Expert Computers

Cluj

4 Acer

Cluj

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.
denc
codc
1 Deck Computers

Bucuresti

1000

10/8/2011 11/10/2011

1800

1 Deck Computers

Bucuresti

1003

10/8/2011 11/15/2011

1000

1 Deck Computers

Bucuresti

1004

10/9/2011 11/15/2011

200

1 Deck Computers

Bucuresti

1005

10/9/2011 11/16/2011

200

2 Python
2 Python
3 Expert Computers

Bucuresti
Bucuresti
Cluj

1001 10/10/2011 11/30/2011


1008 10/13/2011 11/25/2011
1002 10/2/2011 11/20/2011

200
200
200

2
2
3

3 Expert Computers

Cluj

1007 10/12/2011 12/15/2011

200

4 Acer
4 Acer
4 Acer

Cluj
Cluj
Cluj

1006 10/12/2011 12/20/2011


1009 10/17/2011 11/25/2011
1010 10/12/2011 11/21/2011

300
400
1000

4
4
4

Mihaela Muntean-2013

loc

nrcom datai

termen

val

comenzi.codc

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


R2
Departament
Producie
Contabilitate

Sef
Marinescu
Bujor
R1

Angajat
Ionescu
Popescu
Dumitru

Departament
Vnzri
Producie
Producie

Mihaela Muntean-2013

Select r1.angajat, r1.departament, r2.sef


from r1 left outer join r2
on r1.departament=r2.departament;
Angajat
Ionescu
Popescu
Dumitru

Departament
Vnzri
Producie
Producie

Sef
null
Marinescu
Marinescu

Right outer join


R2
Departament
Producie
Contabilitate

R1
Angajat
Ionescu
Popescu
Dumitru

Sef
Marinescu
Bujor

Departament
Vnzri
Producie
Producie

Mihaela Muntean-2013

Select r1.angajat, r1.departament, r2.sef


from r1 right outer join r2 on
r1.departament=r2.departament;
Angajat
Popescu
Dumitru
null

Departament
Producie
Producie
Contabilitate

Sef
Marinescu
Marinescu
Bujor

Jonctiune externa completa


R2
Departament
Producie
Contabilitate

R1
Angajat
Ionescu
Popescu
Dumitru

Sef
Marinescu
Bujor

Departament
Vnzri
Producie
Producie

Mihaela Muntean-2013

Select r1.angajat, r1.departament, r2.sef


from r1 full outer join r2 on
r1.departament=r2.departament;
Angajat
Ionescu
Popescu
Dumitru
null

Departament
Vanzari
Producie
Producie
Contabilitate

Sef
null
Marinescu
Marinescu
Bujor

Jonciune de neegalitate
Angajati
Marca
100
101
102

Nume
Muntean
Ionescu
Florea

Salariu
1000
1500
2000

Trepte de salarizare
Treapta
1
2
3

SALMIN
500
1000
2000

Mihaela Muntean-2013

SALMAX
1000
2000
5000

SELECT nume, treapta


FROM angajati, trepte
WHERE salariu between salmin and salmax;
Marca
100
101
102

Nume
Muntean
Ionescu
Florea

Treapta
1
2
3

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

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).

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 <delete|update> <cascade|set null|set default|no action>

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

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;

Acordarea drepturilor de acces


la baza de date
Obiective n asigurarea securitii datelor:

Mihaela Muntean-2013

pstrarea secretului
asigurarea integritii datelor
valabilitatea datelor

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

Mihaela Muntean-2013

GRANT <privilegii|all privilegii> 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

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

simularea operatorilor algebrei relaionale

cereri ce utilizeaz una sau mai multe tabele


subcereri
cereri ierarhice
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

Exemple (Access)

Mihaela Muntean-2013

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

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.

Etapele normalizrii unei relaii


(FN1FN3)
Relaie nenormalizat

Relaie normalizat n FN1

Relaie normalizat n FN2

Relaie normalizat n FN3

Mihaela Muntean-2013

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).

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
3

Nume
Zona
Cod
agent
vnzri client
Ionescu Est
18765
18830
19242
Popescu Vest
18841
18899
19565

Mihaela Muntean-2013

Numeclient
Delta Systems
Sony Systems
Altex SRL
Computers
SRL
Python
Expert SRL

Cod
depozit
4
3
3
2
2
1

Locaie
Militari
Pantelimon
Pantelimon
Berceni
Berceni
Voluntari

Cantitate
vndut
10000
20000
30000
10000
20000
30000

Grupul de atribute (codclient, numeclient, coddepozit, locaie,


cantitatevndut) este un grup repetitiv care se va elimina i
relaia R este n FN1.
Redundanta datelor, anomalie la modificare
Cod
agent
3
3
3
4

Nume
Zona
agent
vnzri
Ionescu Est
Ionescu Est
Ionescu Est
Popescu Vest

Cod
client
18765
18830
19242
18841

4
4

Popescu Vest
Popescu Vest

18899
19565

Numeclient

Cod
depozit
Delta Systems 4
Sony Systems 3
Altex SRL
3
Computers
2
SRL
Python
2
Expert SRL
1

Locaie

Cantitate
vndut
Militari
10000
Pantelimon 20000
Pantelimon 30000
Berceni
10000
Berceni
Voluntari

20000
30000

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

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


Mihaela Muntean-2013

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)

Relaie normalizat n FN3


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

Vanzari
codagent
codclient
cantitatevanduta

Depozite
coddepozit
locatie

Mihaela Muntean-2013

Clienti
codclient
numeclient
coddepozit

R2

Departament
Producie
Contabilitate

Sef
Marinescu
Bujor

Intrebari

R1

Angajat
Ionescu
Popescu
Dumitru

Departament
Vnzri
Producie
Producie

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?

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

S-ar putea să vă placă și