Documente Academic
Documente Profesional
Documente Cultură
Exemplu Proiect BD Coleg (Incomplet)
Exemplu Proiect BD Coleg (Incomplet)
Facultatea de Matematica-Informatica
Departamentul de Tehnologii
Specializarea: Tehnologia Informatiei
Proiectarea
bazelor de date
Bucuresti 2011
Cuprins
I.
II.
III.
IV.
V.
VI.
VII.
Algebra
relationala .........................................................................................
1. Prezentare
2. Operatorul PROJECT
3. Operatorul SELECT
4. Operatorul UNION
5. Operatorul INTERSECT
7. Operatorul PRODUCT
8. Operatorul DIVISION
9. Operatorul JOIN NATURAL JOIN, -JOIN, SEMI-JOIN, OUTERJOIN
Normalizarea
datelor .....................................................................................
I.
Prin proiectare se determina modul semantic care sa reflecte cat mai fidel posibil
lumea reala, construita astfel :
- se identifica o multime de concepte semantice(entitati, tipuri de entitati,
proprietati ale entitatilor, indicatori, relatii intre entitati) ce dau informatii despre
lumea reala;
- se asociaza obiecte simbolice prin care sunt reprezentate conceptele semantice;
- se defineste o multime de operatori ce pot sa transforme obiectele simbolice.
II.
1. Notiuni generale
O baza de date reprezinta un ansamblu de date integrat, anume structurat si
dotat cu o descriere a acestei structuri. Descrierea structurii poarta numele
de dictionar de date sau metadate si creaza o interdependenta intre datele
propriu-zise si programe. Baza de date poate fi privita ca o colectie de fisiere
interconectate care contin nucleul de date necesare unui sistem informatic.
Astfel, poate fi considerata drept un model al unor aspecte ale realitatii unei
unitati economice, modelata prin intermediul datelor. Diferitele obiecte din
cadrul realitatii ce prezinta interes sunt denumite clase sau entitati. Pentru
aceste obiecte sunt achizitionate si memorate date referitoare la diferite
caracteristici (atribute).
Baza de date se constituie ca un ansamblu intercorelat de colectii de date,
prin care se realizeaza reprezentarea unei realitati.
2.
Prezentarea
modelului
autovehicule g3o Car Rental
firmei
de
inchirieri
III.
1. Prezentare
Diagrama E/R reprezinta un model neformalizat pentru reprezentarea unui
sistem din lumea reala. Este um model de date conceptual d enivel inalt,
dezvoltat de Chen (1976), pentru a facilita proiectarea bazelor de date. O
diagrama E/R este reprezentarea grafica a unei colectii de entitati, relatii,
constrangeri, conditionari etc, care descriu complet o baza de date.
rv
reze
t de
rva
e
z
re
reclamata de
fara paranteze;
5). Nu trebuie specificate toate atributele.
M(1)
rezerva
rezerv
at de
reclamata de
M(1)
conduce
FACTURA
cod_factura#
IV.
VEHICUL
Diagrama conceptuala
nr_inmatriculare#
1. Descriere
Diagrama conceptuala pentru proiectarea modelului ales a fost construita din
diagrama E/R prin adaugarea tabelelor asociative si prin marcarea cheilor
externe.
Transformarea relatiilor se face astfel:
Relatiile 1:1 si 1:M devin chei externe. Simbolul X indica plasamentul
cheii externe, iar simbolul X exprima faptul ca aceasta cheie externa
este continuta in cheia primara. Relatia 1:1 plaseaza cheia externa in
tabelul cu mai putine linii.
SUCURSALA
CLIENT
id_sucursala#
Relatia M:M devine
un
tabel
special, numit tabel asociativ, care are
PERSOANA
FIZICA
id_client#
*nume
doua chei externe pentru
cele doua tabele asociate. Cheia primara este
*adresa
*prenume
compunerea acestor
doua chei externe plus eventuale coloane
*telefon
*cnp se deseneaza punctat.
aditionale. Tabelul asociativ
*fax
*serie_BI
ASIGURARE
email
*nr_BI
cod_asigurare#
Relatiile de tip trei devin tabele asociative. Cheia primara este
nr_inmatriculare#
compunerea a trei chei externe plus eventuale coloane aditionale.
*asigurator
PERSOANA JURIDICA
*data_emitere_polita_asigurare
*data_expirare_polita_asigurare
Transformare entitatilor se*denumire
face astfel:
FACTURA
*tip_juridic
cod_IBAN
Entitatile independente
devin
*cod_CUI
pagina_web
contine chei externe.
cod_factura#
*data_emitere
Entitatile dependente devin tabele dependente. Cheia primara a
*valoare_factura
*procent_TVA
entitatilor dependente contine cheia primara a entitatii
de care depinde
ANGAJAT
*modalitate_plata
cnp#
Pentru relatii 1:1 si 1:n, atributele relatiilor vor apartine tabelului care
contine cheia externa, iar pentru relatii m:m si de tipul trei, atributele
vor fi plasate in tabelele asociative.
SUCURSALA
id_sucursala#
*adresa
*telefon
*pagina_web
SERVICE
id_service#
ANGAJAT
Figura 2. Diagrama conceptuala (doar cu chei primare
si chei
cnp#
straine)
*nume
*prenume
*adresa
*telefon
email
*functie
*salariu
apartine
DEPARTAMENT
1M(1)
are
id_departament#
*nume
*email
SERVICE
lucreaza la
id_service#
*nume_service
*adresa
*telefon
email
reprezentanta
2. Cheile primare
Cheia primara:
-trebuie sa fie unica si cunoscuta la orice moment;
-trebuie sa fie controlata de administratorul bazei;
-trebuie sa nu contina informatii descriptive, sa fie simpla, fara ambiguitati;
-sa fie stabila;
-sa fie familiara utilizatorului.
1
M(1)
are
apartine
lucreaza cu
p
re
lucreaza la
a
rep
r at
in
are
1
apartine
0)
M(
inchiriaza
M(1)
1
TabelulANGAJAT are ca si cheie primara
atributul
cnp. Acesta are rolul de a
are
identifica in mod unic fiecare angajat in parte. Este de tip numeric intreg de
13 cifre [number(13)].
apartine
M(1)
are
M(0)M(0)
reclama
M(1)
lucreaza cu
M(1)
M(1)
e contract
ra
pa
re
ar a
rep
t in
are
1
apartine
0)
M(
inchiriaza
M(1)
M(0)M(0)
reclama
M(1)
are
1
apartine
face
V.
Schema relationala
executata de
conduce
apartine
VI.
Algebra relationala
1. Prezentare
Algebra relationala a fost introdusa de E.F. Codd ca o multime de operatii
formale actionand asupra unor relatii si avand ca rezultat alte relatii. Baza
teoretica pentru limbajele de interogare relationale o constituie operatorii
introdusi de Codd pentru prelucrarea relatiilor.
Scopul fundamental al algebrei relationale este de a permite scrierea
expresiilor relationale. Expresiile servesc ca o reprezentare de nivel superior,
simbolica, a intentiilor utilizatorului.
apartine
Operatorii algebrei relationale sunt:
operatori traditionali pe multimi (UNION, INTERSECT, PRODUCT,
DIFFERENCE);
operatori relationali speciali (PROJECT, SELECT, JOIN, DIVISION).
Echivalenta dintre algebra relationalasi calculul relational a fost demonstrata
de J.D.Ullman. Aceasta echivalenta arata ca orice relatie posibil de definit in
algebra relationala poate fi definitasi in cadrul calcului relational, si reciproc.
Operatorii (unari sau binari) algebrei relationale realizeaza urmatoarele
functii:
SELECT (selectie) extrage tupluri ce satisfac o conditie specificata;
PROJECT (proiectie) extrage atributele specificate;
apartine
DIFFERENCE (diferenta)
extrage tupluri care apar intr-o relatie, dar nu apar
in cealalta;
PRODUCT (produs cartezian) genereaza toate perechile posibile de tupluri,
primul element al perechii fiind luat din prima relatie, iar cel de-al doilea
element din cealalta relatie;
UNION (reuniune) reuneste doua relatii;
INTERSECT (intersectie) extrage tupluri care apar in ambele relatii;
DIVISION (diviziune) extrage valorile atributelor dintr-o relatie, care apar in
toate valorile atributelor din cealalta relatie;
JOIN (compunere) extrage tupluri din mai multe relatii corelate:
NATURAL JOIN (compunere naturala) combina tupluri din doua relatii, cu
conditia ca atributele comune sa aiba valori identice;
SEMI-JOIN (semi-compunere) selecteaza tupluri ce apartin
apartineunei singure
relatii, care sunt corelate cu tupluri din cea de a doua relatie;
Inscris la
ANGAJAT
-JOIN (-compunere) combina tupluri din doua relatii (nu neaparat
#cnp(PK)
corelate), cu conditia ca valorile atributelor specificate sa satisfaca
o anumita
*id_departament(FK)
REPARATIE
conditie;
*id_sef(FK)
#cod_reparatie(PK)
OUTER
JOIN (compunere externa)SERVICE
combina tupluri din doua relatii,
astfel
*id_serviceFK)
#id_service(PK) Tuplurile din orice relatie care nu
incat
conditiile de corelare sa fie satisfacute.
*nr_inmatriculare(FK)
*id_sucursala(FK)
satisfac aceste conditii sunt completate
cu valori null.
apartine
lucreaza la
2. Operatorul PROJECT
DEPARTAMENT
#id_departament(PK)
Proiectia este o operatie unara care elimina anumite atribute ale
unei relatii
*id_sucursala(FK)
producand o submultime pe verticala a acesteia.
SUCURSALA
#id_sucursala(PK)
Prin
proiectie se construieste dintr-o
relatie R, o noua relatie:
VEHICUL
#nr_inmatriculare(PK)
a)stergand din R atributele care nu sunt mentionate in parametrii proiectiei;
*id_sucursala(FK)dublurile care apar dupastergere.
b)eliminand
RECLAMATIE
#cod_reclamatie(PK)
Pentru a reprezenta operatorul proiectie sunt utilizate diferite notatii:
*id_sucursala(FK)
A1, ..., Am (R) PROJECT (R, A1, ..., Am)
*id_client(FK)
R[A1, ..., Am]
unde A1, A2, ..., Am sunt parametrii proiectiei relativ la relatia R.
REZERVARE
#cod_rezervare(PK)
Exemplu. Sa se obtina o
lista ce contine numele, prenumele si telefonul
*id_client(FK)
angajatilor.
apartine
*nr_inmatriculare(FK)
1.Proiectie in algebra relationala:
Rezultat = PROJECT(ANGAJAT, nume, prenume, telefon)
CLIENT
2.Proiectie cu dubluri in SQL:
#id_client(PK)
SELECT nume, prenume, telefon
*id_sucursala(FK)
FROM angajat;
INCHIRIERE
3.Proiectie
fara dubluri in SQL:
#cod_inchiriere(PK)
SELECT DISTINCT
nume, prenume, telefon
*id_client(FK)
PERSOANA FIZICA
FROM
angajat;
*nr_inmatriculare(FK)
*cod_factura(FK)
3. Operatorul SELECT
nume
prenume
Selectia
(restrictia) este o operatie
unara care produce o submultime
pe JURIDICA
PERSOANA
ASIGURARE
FACTURA
orizontala
a unei relatii R. Aceasta
submultime se obtine prin extragerea
#cod_asigurare(PK)
#cod_factura(PK)
tuplurilor
din
R
care
satisfac
o
conditie
specificata.
#nr_inmatriculare(PK&FK)
tip_juridic
Sunt utilizate diferite notatii:
conditie(R) R[conditie]
SELECT(R, conditie) RESTRICT(R, conditie).
denumire
4. Operatorul UNION
Reuniunea a doua relatii R si S este multimea tuplurilor apartinand fie lui R,
fie lui S, fie ambelor relatii.
Sunt utilizate notatiile:
RS
UNION(R, S)
OR(R, S)
APPEND(R, S).
Exemplu. Sa se obtina lista cu adresaangajatilor si a clientilor.
1. Operatorul UNION in algebra relationala:
UNION(PROJECT(ANGAJAT, adresa), PROJECT(CLIENT,adresa))
2.Operatorul UNION in SQL
SELECT adresa
FROM angajat
UNION
SELECT adresa
FROM client;
5. Operatorul DIFFERENCE
Diferenta a doua relatii R si S este multimea tuplurilor care apartin lui R, dar
nu apartin lui S. Diferenta este o operatie binara necomutativa care permite
obtinerea tuplurilor ce apar numai intr-o relatie.
Sunt utilizate diferite notatii:
RS
DIFFERENCE(R, S)
REMOVE(R, S)
MINUS(R, S).
7. Operatorul PRODUCT
Fie R si S relatii de aritate m, respectiv n. Produsul cartezian al lui R cu S este
multimea tuplurilor de aritate m + n unde primele m componente formeaza
un tuplu in R, iar ultimele n componente formeaza un tuplu in S.
Sunt utilizate diferite notatii:
RS
PRODUCT(R, S)
TIMES(R, S).
Exemplu. Sa se obtina lista tuturor posibilitatilor de alegerea vehiculelorde
catre o persoana juridica.
1.Produs cartezian in algebra relationala:
R = PROJECT(PERSOANA_JURIDICA, denumire);
S = PROJECT(VEHICUL, id_vehicul);
Rezultat = PRODUCT(R, S).
2.Produs cartezian in SQL:
SELECT denumire, nr_inmatriculare
FROM persoana_juridica,vehicul;
8. Operatorul DIVISION
Diviziunea este o operatie binara care defineste o relatie ce contine valorile
atributelor dintr-o relatie care apar in toate valorile atributelor din cealalta
relatie.
Sunt utilizate diferite notatii:
DIVIDE(R, S)
DIVISION(R, S)
Exemplu. Sa se obtina id-urile angajatilor ce lucreaza in departamentelece
apartin sucursalei cu id-ul 1.
1.Diviziune in algebra relationala:
R = PROJECT(ANGAJAT, id_angajat, id_departament);
S = PROJECT(SELECT(DEPARTAMENT, id_sucursala = 1),id_departament);
Rezultat = DIVISION(R, S).
2.Diviziune in SQL:
SELECT UNIQUE cnp
FROM angajat a
WHERE NOT EXISTS
(SELECT *
FROM departament d
WHERE d.id_sucursala=1
AND NOT EXISTS
(SELECT *
FROM angajat b
WHERE d.id_departament=b.id_departament
AND b.cnp=a.cnp));
9. Operatorul JOIN
Operatorul de compunere (uniune) permite regasirea informatiei din mai
multe relatii corelate. Operatorul combina produsul cartezian, selectia si
proiectia.
Operatorul NATURAL JOIN
Operatorul de compunere naturala (NATURAL JOIN) combina tupluri din doua
relatii R si S, cu conditia ca atributele comune sa aiba valori identice.
Algoritmul care realizeaza compunerea naturala este urmatorul:
1.se calculeaza produsul cartezian R S;
2.pentru fiecare atribut comun A care defineste o coloanain R si o
coloanain S, se selecteaza din R S tuplurile ale caror valori coincid in
coloanele R.A si S.A (atributul R.A reprezinta numele coloanei din R S
corespunzatoare coloanei A din R);
3.pentru fiecare astfel de atribut A se proiecteaza coloana S.A, iar coloana
R.A se va numi A.
Exemplu. Sa se obtina informatii complete despre angajati si
departamentele in care lucreaza.
1.Operatorul de compunere naturalain algebra relationala:
Rezultat = JOIN(ANGAJAT, DEPARTAMENT).
2.Operatorul de compunere naturalain SQL:
SELECT *
FROM angajat a, departament d
WHERE a.id_departament = d.id_departament;
Operatorul -JOIN
Operatorul -JOIN combina tupluri din doua relatii (nu neaparat corelate) cu
conditia ca valorile atributelor specificate sa satisfaca o anumita conditie
specificata explicit in cadrul operatiei.
Operatorul -JOIN este un operator derivat, fiind o combinatie de produs
scalar si selectie:
JOIN(R, S, conditie) = conditie (R S)
Operatorul OUTER-JOIN
Operatia de compunere externa combina tupluri din doua relatii pentru care
sunt satisfacute conditiile de corelare. In cazul aplicarii operatorului JOIN se
pot pierde tupluri, atunci cand exista un tuplu in una din relatii pentru care nu
exista nici un tuplu in cealalta relatie, astfel incat sa fie satisfacuta relatia de
corelare.
Operatorul elimina acest inconvenient prin atribuirea valorii null valorilor
atributelor care exista intr-un tuplu din una dintre relatiile de intrare, dar care
nu exista si in cea de-a doua relatie.
Practic, se realizeaza compunerea a doua relatii R si S la care se adauga
tupluri din R si S, care nu sunt continute in compunere, completate cu valori
null pentru atributele care lipsesc.
Compunerea externa poate fi: LEFT, RIGHT, FULL.
De exemplu, OUTER JOIN LEFT reprezinta compunerea in care tuplurile din R,
care nu au valori similare in coloanele comune cu relatia S, sunt de
asemenea incluse in relatia rezultat.
fiecare atribut care nu este cheie (nu participa la cheia primara) este
dependent de intreaga cheie primara.
Forma normala 3 (FN3)
Intuitiv, o relatie R este in a treia forma normala dacasi numai daca:
relatia R este in FN2;
fiecare atribut care nu este cheie (nu participa la o cheie) depinde direct de
cheia primara.
Formal, o relatie R este in a treia forma normala dacasi numai daca:
relatia R este in FN2;
fiecare atribut care nu este cheie (nu participa la o cheie) nu este
dependent tranzitiv de nici o cheie a lui R.
O relatie este in FN3 dacasi numai daca fiecare atribut (coloana) care nu este
cheie, depinde de cheie, de intreaga cheie si numai de cheie.