Documente Academic
Documente Profesional
Documente Cultură
LUCRARE DE LICEN
Coordonator tiinific:
Conf.univ.dr. Costin Boldea
Absolvent,
Surchicin Alexandru
IULIE 2014
LUCRARE DE LICEN
IULIE 2014
Cuprins
Cuprins....................................................................................................... 2
Capitolul 1: Ce este o diagram ER (entitate-legatur)? ............................ 4
1.1 Definirea bazei de date - cteva definiii: entitate, legtura, atribut. .......................... 4
1.2 O metodologie de nceput................................................................................................. 6
1.3 Metodologia de proiectare ER ......................................................................................... 6
1.4 O prim diagram ER cu o singur entitate .................................................................. 7
1.5 Mai multe detalii despre atribute .................................................................................... 11
1.6 Atributul simplu su atomic............................................................................................. 11
1.7 Atributele compuse .......................................................................................................... 12
1.8 Atribute cu valori multiple ................................................................................................ 13
1.9 Atributele derivate ............................................................................................................ 15
1.10 Ce este o cheie? ............................................................................................................ 16
1.11 Modul de lucru ................................................................................................................ 19
1.12 Metodologia de proiectare ER ..................................................................................... 20
1.13 Maparea diagramei entite la o baz de date relaional ......................................... 25
1.14 Rezumatul primului capitol ........................................................................................... 29
Surchicin Alexandru
3.6 Maparea legturilor la o baz de date relaionale ...................................................... 57
Surchicin Alexandru
Surchicin Alexandru
Exemple pentru o etitate care refer o persoan ar fi AN GAJ AT, MEDIC sau
STUDENT.
Surchicin Alexandru
aceleiai entiti. ntr-un set de entiti client, va-i putea imagina c o companie ar
atribui un numr unic de client. Acest identificator unic este numit cheie.
O legtur reprezint o asociere, ntre entiti. Legturile sunt de obicei indicate
prin locuiuni verbale. Vom ncepe prin extinderea noiunii de entitate, i apoi ne vom
ntoarce la noiunea de legtur o dat ce am stabilit conceptul de entitate.
Un atribut este o proprietate sau caracteristic a unei entiti. De exemplu, o
entitate, PACIENT, ar putea avea atributele id_, cnp, nume, vrsta, adresa, etc.
Surchicin Alexandru
S traducem n romn
Surchicin Alexandru
vrf i la mijloc). Figur de mai jos (partea inferioar) este un mod alternativ de
descriere a atributelor. Acest stil alternative prezentat n partea inferioar nu este la fel
de descriptiv, dar este mai compact i poate fi folosit dac diagramele Chen-like devin
dezordonate.
atribut
atribut
atribut
Entitate
nume
vrst
cnp
Pacient
sau
Forma compact a
diagramei ER
Cnp
Pacient
Nume
Vrst
Figura 1.1
Diagrama ER cu patru atribute
Surchicin Alexandru
cnp
nume
vrst
adres
specializare
Pacient
cnp
nume
vrst
adres
specializare
Pacient
Surchicin Alexandru
Pacient
cnp nume vrst adres specializare
Figura 1.2
Diagrama ER cu o entitate i 5 atribute,
Modele alterrnative (Batini,Ceri, Navathe)
nume
cnp
vrst
Pacient
adres
specializare
Figura 1.3
O diagram ER cu o entitate si 5 atribute
10
Surchicin Alexandru
11
Surchicin Alexandru
nume de
familie
Iniiala
tatlui
prenume
specializare
nume
cnp
Pacient
Figura 1.4:
Diagrama ER cu un atribut compus nume
12
Surchicin Alexandru
nc o dat. testul pentru a determina dac un atribut este compus sau nu,va
depinde n ntregime de circumstanele ntlnite de proiectantul bazei de date - dorina
utilizatorului pentru care se construiete baza de date. De exemplu, ntr-o baz de
date s-ar putea s nu fie important s tim exact din ce ora sau ar provine codul zip
al unei persoane, deci atributul adres din acea baz de date poate s nu fie divizat n
pari componente; poate fi numit doar adres. Pe cnd n alte baze de date, poate i
important s tim oraul i statul din care provine o persoan; deci n acest ultim caz va
trebui s spargem atributul adres n strad, ora, ara, i codul zip, atributul adres
devenind astfel unul compus.
13
Surchicin Alexandru
nume de
familie
Iniiala
tatlui
prenume
nume
specializare
Pacient
adres
14
Surchicin Alexandru
nume de
familie
Iniiala
tatlui
prenume
specializare
nume
Pacient
adres
vrst
cnp
Atribut
derivat
Figura 1.5A: O diagram ER cu un atribut derivat vrst
15
Surchicin Alexandru
16
Surchicin Alexandru
Iniiala
tatlui
prenume
numr
pacient
nume
Pacient
specializare
adres
n modelul Chen-like, atributele care sunt identificator unici (chei candidat) sunt
de obicei subliniate (aa cum se arat n ligura 1.6). Un identificator unic poate fi un
atribut sau o combinaie de atribute. n acest moment nu este necesar s alegi care
cheie candidat va fi cheie primar. Cnd este doar o cheie candidat, de obicei o vom
numi cheie primar. n figur 1.6 am reprezentat att forma scurt a diagramei ER( n
partea interioar) cu atribute compuse i multi-value ct i cu chei primare. Atributele
compuse sunt listate mpreun cu prile componente, iar atributele cu valori multiple
sunt nchise n paranteze n forma abreviat.
n cele din urm, vom avea situaii n care diagrama ER(n model Chen-like) nu
are nici o cheie evident. Entitaiile pentru care se identifica cel puin o cheie se numesc
entiti tari.
n articolul iniial al lui Chen( l976), entitiile tari erau numite entiti obinuite. n
timpul procesului de analiz se va descoperi c unele entiti depind de altele (i deci i
17
Surchicin Alexandru
indentificarea lor). Chen a numit aceste entiti care depind de alte entiti, entiti
slabe.
De cele mai multe on' vom putea recunoate entitile slabe deoarece nu au chei
candidat, i totui actuala semnificaie a entitilor slabe este o entitate a crei
existen depinde de existent unei alte entiti. Vom urma notaia din modelul Chen-like
i vom numi astfel de enitati, entiti slabe - slabe deoarece vor depinde de alte entiti
pentru a furniza un identificator unic i pentru a da un motiv pentru ca entitatea s fie
nregistrat.
n modelul Chen-like vom reprezenta o entitate slab prin dou dreptunghiuri
(vezi Figura1.7). Momentan ne vom concentra aspura entitiilor care au chei, urmnd
ca mai trziu s lum n considerare i situaiile n care nici o cheie nu e evident.
id
medicament
productor
compoziie
Medicament
nume
pre
Entitate tare
productor
compoziie
Medicament
nume
pre
Entitate slab
18
Surchicin Alexandru
Surchicin Alexandru
b. O cheie candidat (entitate tare):
Entitate
Aceast baz de date stocheaz informaii despre PACIENI. Pentru fiecare PACIENT
din baza de date, nregistreaz nume, cnp, specializare, vrsta i o adres.
Atributele
ntotdeauna va fi unu i numai un singur nume pentru fiecare PACIENT.
Valoarea numelui nu va fi subdivizat.
ntotdeauna va fi unu i numai un singur cnp pentru fiecare PACIENT. Valoarea
cnp-ul nu va fi subdivizat.
ntotdeauna va fi una i numai o singur specializare pentru fiecare PACIENT.
Valoarea pentru specializare nu va fi subdivizat observai c n figur 1.3 nu am divizat
numele.
ntotdeauna va fi una i numai o singur vrsta pentru fiecare PACIENT.
Valoarea vrstei nu va fi subdivizat.
ntotdeauna va fi una i numai o singur adresa pentru fiecare PACIENT.
Valoarea adresei nu va fi subdivizat.
Cheile
20
Surchicin Alexandru
PACIENT
Nume
Cnp
Grigore 7925676528921
Specializare
Inginer
Vrsta
32 ani
Adresa
Vasile Alexandri, bl 2
tefan
7624554525828
Sculptor
19 ani
Brestei, nr. 40
Ioan
7953252258821
ofer
16 ani
Amaradia M14
Petru
7965482120032
Poliist
58 ani
Craiovita, bl T8
21
Surchicin Alexandru
PACIENT
Prenume
Nume
Iniial
Specializare
Adresa
Victor
Botan
Mecanic
Mirela
Ungureanu
Contabil
Lpu Arge, bl 2
Feodor
Brankovici
ofer
Elena
Niculescu
Manager
Brestei, nr.42
Eduard
Constantin
Profesor
Craiovita, bl T7
PACIENT
Prenume
Nume
Iniial
Specializare
Adresa
Mihai
Ungureanu
ofer
Brestei, nr 40
Victor
Bacui
Inginer
Alin
Constantin
Contabil
Craiovita, bl T7
Emilia
Borozia
Medic
Maria
Niculescu
Poliist
Lpu Arge, bl 2
22
Surchicin Alexandru
Entitatea
Baza de date stocheaz informaii despre PACIENI. Pentru fiecare PACIENT
din baz de date, vom nregistra un nume, o specializare, o adres i un numr de
pacieni.
Atributele
Pentru fiecar nume, ntotdeauna va fi unu i numai un nume pentru fiecare
PACIENT. Valoarea pentru nume va fi subdivizat n nume, prenume i iniiala tatlui.
Pentru fiecare adres, ntotdeauna va fi una i numai o adres pentru fiecare
PACIENT.
Valoarea adresei nu va fi subdivizat.
Pentru fiecare PACIENT, ntotdeauna vom nregistra mai multe specializri. Pot fi
nregistrate mai mult de o specializare pentru fiecare pacient.
Cheile
Pentru fiecare PACIENT, vom presupune c exist un atribut- numr studentcare va fi unic. n continuare s considerm partea de sus a figurii 1.7. Aceast entitate
prezint o entitate
tare. Traducerea n limba romn a acestei diagrame va fi urmtoarea:
Entitate
Aceast baz de date stocheaz informaii despre MEDICAMENTE. Pentru
fiecare
MEDICAMENT
din
baza
de
date,
vom
stoca
productorul,
numele
Surchicin Alexandru
productor
id medicament
compoziie
Medicament
nume
pre
SA
Legtur
prenume
iniiala
prenume
numr pacient
nume
Pacient
adres
specializare
Surchicin Alexandru
Pasul3: Se dau cteva exemple concrete
25
Surchicin Alexandru
PACIENT
Nume
Sergiu
Cnp
7925676528921
Specializare
Vrsta
Adresa
Salvamar
32 ani
Gabriel
7624554525828
Sculptor
24 ani
Brestei, nr. 40
Ioan
7953252258821
ofer
16 ani
Petru
7965482120032
Doctor
60 ani
Craiovita, bl T8
Atributele din
diagram devin capete de tabela. Tabelul actual cu datele pe care acesta le conine,
reprezint un exemplu de tip de date la care ne-am putea atepta n cazul unei astfel de
legturi. Ordinea coloanelor este irelevant pentru o baz de date relaional, cu
condititaca o dat aceasta aleas s fie respectat pn la sfar-sit.
Dar de ce se ntmpl pentru atributele compuse i pentru cele cu mai multe
valori? Aa cum am menionat mai sus, exista o axiom a bazelor de date relaionale
care spun c toate coloanele trebuie s fie atomice. Dac n diagrama exista un atribut
non-atomic, acesta trebuie fcut atomic pentru a l mapa la baza de date relaionala.
Pentru atributele compuse, obinem atomicitatea reinnd numai prile component ale
atributului.
Urmtoarea regul de mapare privete atributele compuse:
M1b pentru entitile cu atribute compuse: se mapeaz entitile la un table
formnd coloane din prile elementare (atomice) ale atributelor compuse.
Fcnd referire la figura 1.4, o baz de date relaionala care corespunde
diagramei din figura 1.4 va arat astfel:
PACIENT
Prenume
Nume
Iniial
Specializare
Adresa
Mihai
Ungureanu
ofer
Brestei, nr 40
Victor
Bacui
Inginer
Alin
Constantin
Contabil
Craiovita, bl T7
26
Surchicin Alexandru
Emilia
Borozia
Medic
Maria
Niculescu
Poliist
Lpu Arge, bl 2
PACIENT
Nume
Specializare
Adresa
Mihai
ofer
Brestei, nr 40
Victor
Inginer
Alin
Contabil
Craiovita, bl T7
Emilia
Medic
Maria
Poliist
Lpu Arge, bl 2
Dup cum se observ acesta nu este un tabel relaional deoarece coal nu este
atomic.
O regul de mapare pentru atributele cu valori multiple ar fi urmtoarea:
Mlc - pentru atribute cu valori multiple: se formeaz un tabel separat pentru
atributul cu valori multiple. Se adaug o nou linie pentru fiecare valoare a
acestui atribut, mpreuna cucheia din tabelul iniial. Cheia noului tabel va fi
rezulta prin concatenarea dintre atributul valori multiple i cheia din tabelul iniial.
Se terge atributul cu valori multiple din table iniial.
Acum s presupunem c exemplul de mai sus are drept cheie atributul nume.
Acesta va fi mapat n dou legturi: o legtur cu un atribut cu valori multiple i o
legtur rezultat n urma ndeprtri atributului cu valori multiple.
Legtura cu atributul cu valori multiple, este urmtoarea:
Nume-Specialitate
27
Surchicin Alexandru
Nume
Specializare
Mihai
ofer
Victor
Inginer
Alin
Contabil
Emilia
Medic
Maria
Poliist
Alin
Contabil
Roberto
Manager
Elena
Barman
Victor
Buctar
Pacient
Nume
Adresa
Mihai
Brestei, nr 40
Victor
Emilia
Maria
Lpu Arge, bl 2
Fr nici o cheie, regul de mapare rmne aceai numai c, n loc s spunem
mpreuna cu cheia ... vom spune mpreuna cu atributele atomice .... n bazele de
date relaionale, fiecare linie al tabelului conine atribute atomice. De asemenea, fiecare
linie este unic.
Dac atributele nume sau adres nu ar fi fost considerate unice, atunci ar fi
rezultat urmtoarea legtur:
Pacient
Nume
Mihai
Specializare
ofer
Adresa
Brestei, nr 40
28
Surchicin Alexandru
Victor
Inginer
Alin
Contabil
Craiovita, bl T7
Emilia
Medic
Maria
Poliist
Eminescu, bl 2
Alin
Contabil
Craiovita, bl T7
Emilia
Medic
29
Surchicin Alexandru
de
mapare/transformare
acest
capitol;
deoarece
regulile
de
30
Surchicin Alexandru
nume
id farmacie
Farmacie
pacient
adres
prenume
Iniiala
tatlui
Nume de
familie
id pacient
nume
Pacient
31
Surchicin Alexandru
nume
pacient
id farmacie
Farmacie
adres
Figura 2.2: 2 Diagrame ER: una pentru PACIENT i una pentru FARMACIE
32
Surchicin Alexandru
Surchicin Alexandru
legtura este indicat, vom avea un tool care ne poate permite s realizm descrierea
bazei de date sub forma unei diagrame ER.
n modul Chen-like, o legtur este descris printr-un romb poziionat pe linia
care unete cele dou entiti, aa cum se arat n figur 2.3.
prenume
Iniiala
tatlui
Nume de
familie
id pacient
cnp
nume
Pacient
Legatur
Frecventez
id farmacie
nume
Farmacie
34
adres
Surchicin Alexandru
n figur 2.3, este descris acesta legtura. Sensul legturii este a unui verb
care leag dou substantive (entiti). Toate legturile sunt cu dou sensuri. Aa cum
vom vedea, este necesar s afirmm c legturile sunt n ambele direcii.
Medicamentul este n mod evident o entitate deoarece dorim s reinem
informaii despre acesta. Dac adugam medicamentul n baza de date, am putea s l
includem c la pasul 1 al metodologiei noastre adugnd un atribut numit medicament,
numai c mai trziu la pasul 3 al metodologiei l-am trece la statutul de entitate.
Descrierea medicamentului ca atribut al entitii pacient este prezentat n figur 2.4 (n
modelul Chen-like). [Deocamdat ignorm entitatea FARMACIE.
prenume
Iniiala
tatlui
Nume de
familie
id pacient
cnp
nume
Pacient
medicament
35
Surchicin Alexandru
compoziie
id medicamet
pre
nume
Medicament
cumpr
Iniiala
tatlui
prenume
Nume de
familie
id pacient
cnp
nume
Pacient
36
Surchicin Alexandru
Surchicin Alexandru
secundar, persoana care a mprumutat cartea ar necesita folosirea unei valori nule
pentru acele entiti CARTE care nu au fost mprumutate. n realitate, numai o anumit
parte din crile unei biblioteci pot fi mprumutate la un moment dat. Deci, atributul
mprumutat va fi nul pentru majoritatea entitilor CARTE. Acesta repetare a valorii nul
indic faptul c atributul nume_datornic ar putea fi o entitate. Dac a fost create o
entitate DATORNIC i asocierea dintre entitile CARTE i DATORNIC a fost n
mod clar stabilit c legtura, atunci proiectantului bazei de date i-ar fi mai uor s pun
atributele i entitile n locurile corecte. Este important s nelegem deosebirea dintre
tipurile de informaii care pot fi exprimate ca atribute i acelea care trebuie tratate ca
leagaturi sau entiti.
i chei pentru a
Surchicin Alexandru
acest capitol s-a discutat despre cteva tehnici pentru a determina dac avem de a face
cu o entiate, un atribut sau o legtur.
n acest capitol a fost deasemenea introdus conceptual: de legtur binar. Majoritatea
bazelor de date pe care le vei folosi vor avea mai multe entiti, iar n acest capitol s-a
realizat o diagram cu dou entiti pornind de la o diagram cu o singur entiate i s-a
prezentat un mod de reprezentare a legturilor binare ntre dou entiti folosind
modelul Chen-like.
39
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
compoziie
id medicamet
pre
nume
Medicament
cumpar
prenume
Iniiala
tatlui
id pacient
Nume de
familie
cnp
nume
Pacient
41
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
O diagram poate fi reprezentat sub forma unei legturi 1:1 ca n figura 3A (Batani,
Ceri, i Navathe, 1992).
PACIENT
MEDICAMENT
42
Surchicin Alexandru
PACIENT
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
MEDICAMENT
PACIENT
MEDICAMENT
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
multe este notate M:N. n documentaia mai veche astfel de legturi erau notate M:M,
dar n crile de actualitate se noteaz M:N indicnd c cele dou numere de entiti nu
este de neaprat egal (de obicei valorile lui M i N sunt diferite).
Dac legtura noastr iniial S ar fi fost de tipul mai multe-la-mai multe, un
student ar fi asociat cu mai multe medicamente i un medicament cu mai muli pacieni,
adic:
PACIENT:MEDICAMENT::M:N
n acest caz (dac presupunem S=condus, aa cum este prezentat n figur
2.6), mai muli pacieni pot cumpra mai multe medicamente (nu toate n acelai timp) i
mai multe medicamente pot fi cumprate de mai muli pacieni.
n mod grafic legtura M:N poate fi reprezentat ca n figur 3D (Baani, Ceri, i
Navathe, 1992).
PACIENT
MEDICAMENT
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
afl n legtur cu un pacient. Trebuie s fim ateni atunci cnd spunem exact ce
nseamn aceast legtur. n modelul nostru nseamn c n incinta farmaciei un
pacient va cumpra cel mult un medicament. n plus, vom spune c un medicament va
fi cumprat de un pacient. Deoarece clarificm (rafinm) baza de date, ncercm s
potrivirn numele legturii pentru a se potrivi cu conceptul pe care l modelm- condusulde acea vom numi legtura conduce.
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
niciun
compoziie
pre
nume
Medicament
1
Participare
integrala
cumpr
Participare
partiala
prenume
Initiala
tatalui
Nume de
familie
numr pacient
cnp
nume
Pacient
adres
specializare
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
complet, nu se poate c o valoare-sa s fie nul (sau s lipseasc) pentru atributul din
acele legturi. n cazul nostru, dac un medicament este n baza de date, trebuie s se
afle n legtur cu un pacient.
Linia simpl, participarea parial este numit i opional. Sensul participrii
opionale sau pariale este c ar putea fi pacieni care nu au legtur cu nici un
medicament.
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
muli student pot s locuiasc ntr-o camer. Deci, legtura dintre camera comun i
student ar fi de una-la-multi (1:M: CAMERA:STUDENT) i va fi prezentat n figur 3.3
(fr atribute).
Camera
ocup
Camerele pot fi
ocupate de mai muli
studeni .
Student
Figura 3.3: O diagram ER (fr atribute) a unei legturi 1:M
Dup cum se observ nu toate camerele sunt locuite de studeni, i de aceea
participarea camerelor n legtur este parial. n mod normal am spune:
Camerele pot fi ocupate de mai muli studeni.
Mai mult, s-ar putea c nu toi studenii s locuiasc n camere de cmin: deci, legtura
dintre STUDENT i CAMER este de asemenea parial:
Studenii pot s ocupe o camer.
Acum s refacem legturile folosind att propoziii scurte ct i lungi. Pentru prima
propoziie: Camerele pot fi ocupate de muli studeni- aceasta se potrivete cu
ablonul 4- x:y::l (parial):M
ablonul 4-1:M de la partea 1, cu participare parial:
Unele x-i sunt legai de mai muli y-eci.
Deci, propoziia mai corect este: X-ii, dar nu de neaprat toi x-i, (care sunt stocai n
baza de date) poate fi legai de mai muli (zero sau mai muli) y-eci .Unii x-i nu sunt
legai de nici un y.
Sau camerele, dar nu de neaprat toate camerele, (care sunt nregistrate n baza de
date) pot fi ocupate de mai muli (zero sau mai muli) studeni.
48
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
49
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
Student
M
Studentii trebuie sa se
inscrie la mai multe cursuri
a parca
La un curs se pot inscribe
mai multi studenti
Curs
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
[Nici un x nu este legat cu un non y (sau) Non x-i nu sunt legai de un y. (Forma
negativ va depinde de sensul propoziiei.)]
n locurile de parcare, care sunt stocate n baza de date, trebuie s parcheze mai multe
(unul sau mai multe) automobile. Nici un loc de parcare nu conine automobile care s
nu aparin studenilor. Asta nseamn c pe locurile de parcare care sunt reinute n
baza de date nu sunt parcate automobile care s nu fie ale studenilor.
Un exemplu de legtur mai multe- la-mai multe (M:N)
Exemplul clasic pe care l vom trata aici este acela cu studenii care participa la
cursuri. Pentru nceput tim c studenii participa (sunt nscrii) la mai multe cursuri, i
fiecare curs este frecventat de mai muli studeni. Diagrama de baz pentru legtur
student-curs este acea din figura 3.5.
Student
Studenii
trebuie s se
inscrie la mai
multe cursuri
inscrie
La un curs se
pot nscrie mai
muli studeni
N
Curs
51
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
Un ultim exemplu
Ca ultim exemplu pentru a ncheia acest capitol, vom prezenta nc 0 problem
i o metodologie. S considerm un model simplificat pentru un aeroport. care reine
PASAGERI i AVIOANE. S presupunem c atributele entitii PASAGER sunt numele,
52
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
Nume
de
familie
bagaje
Intiala
tatlui
prenume
nume
Pasager
Figura 3.6: Diagrama entitii pasager
Numr
pasager#
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
54
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
Toi vor cltori cu avioane. Toate avioanele vor avea mai muli pasageri.
Diagrama pentru aceast problem este ilustrata n figur 3.7 i figura 3.8. Observai c
din nou avem de luat o a a gtur dintre pasager i avion. n decriere nu se specific
dac ar trebui s alegem 1 sau M, aa c vom alege 1. De asemenea vom alege
participarea complet la ambele pri. Ar fi ceva straniu s stocm date despre
pasagerii care nu au cltorit cu avioanele aeroportului sau despre zboruri care nu au
avut pasageri. n figur 3.7 sunt afiate doar entitile i atributele bazei de date. n
figur 3.8 atributele sunt descrise, i deasemenea include i civa din paii prezentai
anterior i cteva exemple de date. Iniial se poate folosi figura 3.7, dar ulterior locul
acesteia va fi luat de figura 3.8 pentru o documentare mai concis .
Nume de
familie
Initiala
tatlui
prenume
Numr pasager #
bagaje
nume
Pasager
Pasagerii zboar
cu un avion
zboar
Numar
avion#
Avioanele
zboar cu mai
muli pasageri
Ora
sosirii
destinaie
Avion
Ora
decolrii
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
Pasager
M
Pasagerii zboar
cu un avion
Avioanele
zboar cu mai
muli pasageri
zboar
Avion
Exemplu:
12316 2
104
Torino
09:17
11:10
43536 5
219
Paris
17:05
18:35
nume
NRP
Steve, I.I
John, S.S
bagaje
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
iniiala.tatlui
prenume
Stefania
Mangiru
Ionut
Ciunescu
Laura
COSOI
Andrei
Frunza
Petrescu
numr_student
adres
465
Brestei, nr.8
389
128
364
Dimitre Cantemir,
745
Ismail, nr.5
bl.M12
Bogdan
Curs
numecurs
numar_curs
credite
Programare procedural
CDG4581
SER1589
Baze de date
GHT4587
numr_student
CDG4581
587
SER1589
587
GHT4587
347
STR1258
266
FDG5842
266
SRT2587
157
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
ntrebarea este: Care este entitatea A i care este Entitatea B? Rspunsul acestei
ntrebri este dat n urmtoarele 3 reguli de mapare: M3b_1, M3b_2, i M3b_3.
M3b_1- Pentru legturile binare 1:1, dac una din cele 2 pri are participare
complet n legtur, i cealalt participare parial, atunci vom insera cheia
principal a prii cu constrngerea de participare parial n tabelul celei cu
constrngere de participare complet. Vom include orice atribut al legturii n
tabelul entitii cu participare complete (cheia principal a primei entitii devine
cheie strin (secundar) n noul tabel).
id_medicament
compoziie
pre
Aspirina
A42321
(acid acetilsalicilic)
23,46 lei
Floraderm
B74568
45,12 lei
Floritene
E22578
Colagen
12,99 lei
Duvadilan
F14545
126 lei
Pacient
Nume_de_familie prenume
iniial
numr_pacient
adres
Stefania
Mangiru
124
Laura
Cosoi
235
Bogdan
Petrescu
147
Dimitre Cantemir,
862
Brestei, nr.8
bl.M12
Ionut
Ciunescu
L
59
Surchicin Alexandru
Bogdan
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
Petrescu
954
Lapus Arges, bl 2
Deoarece PACIENT are un atribut cu mai multe valori, specializare, avem nevoie de
tabelul de mai jos care s mapeze atributul cu mai multe valori.
Nume-specializare
Numr_pacient
Specializare
124
Bucatar
124
Medic
124
Frezer
235
Dentist
235
Sofer
147
Ospatar
147
Profesor
862
Sofer
954
Contabil
954
Bucatar
atunci
exist
posibiliti
de
implimentare
bazei
de
date
corespunztoare.
M3b_2a Prima alternativ: se poate alege o legtur petru a stoca cheia
celeilate.
M3b_2b A doua posibilitate: n funcie de situaie, se poate s creeze un nou
tabel care s conin cheia celor dou entiti (ca la M3a).
Din nou, referindune la figura 3.1, vom presupune c aici constrngerea de
participare este parial la ambele capete, i presupunem c nu exist nici un atribut
specializare. n acest caz va fi citit:
Un medicament poate fi cumprat de unu i numai un pacient.
i un pacient poate cumpra unu i numai un medicament.
Considerm id_medicament (cheia principal pentru MEDICAMENT) i o reinem n
PACIENT, c n exemplul de mai jos:
60
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
Medicamente
nume
compoziie
A42321
Aspirina
(acid acetilsalicilic)
23,46 lei
B74568
Floraderm
45,12 le
E22578
Floritene
Colagen
12,99 lei
F14545
Duvadilan
126 lei
id_medicament
pre
Pacient
Nume_de_familie prenume
iniiala
numr_pacient
adres
id_medicament
Stefania
Mangiru
124
A42321
Laura
Cosoi
235
B74568
Bogdan
Petrescu
147
Ionut
Ciunescu
862
Brestei, nr.8
F14545
Bogdan
Petrescu
954
Lapus Arges, bl 2
G14258
PACIENT- MEDICAMENT
numr_pacient
Id_medicament
A42321
124
B74568
235
E22578
147
F14545
862
Pacient
Nume_de_familie
prenume
iniial
numr_pacient
Stefania
Mangiru
124
Laura
Cosoi
235
61
adres
Surchicin Alexandru
Bogdan
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
Petrescu
147
Dimitre
Cantemir,
862
Brestei, nr.8
954
Lapus Arges, bl 2
bl.M12
Ionut
Ciunescu
Bogdan
Petrescu
Medicament
Nume
id_medicament
compoziie
pre
Aspirina
A42321
(acid acetilsalicilic)
23,46 lei
Floraderm
B74568
45,12 lei
Floritene
E22578
Colagen
12,99 lei
Duvadilan
F14545
126 lei
Pacient
Nume_de_familie
prenume
iniial
numr_pacient
adres
Stefania
Mangiru
124
Laura
Cosoi
235
Bogdan
Petrescu
147
Dimitre
862
Brestei, nr.8
954
Lapus Arges, bl 2
Cantemir,
bl.M12
Ionut
Ciunescu
Bogdan
Petrescu
62
Surchicin Alexandru
Capitolul 3: Metodologia de
proiectare ER i constrngeri asupra legturilor
Medicament
compoziie
pre
numr_pacient
Nume
id_medicament
Aspirina
A42321
(acid acetilsalicilic)
23,46 lei
124
Floraderm
B74568
45,12 lei
235
Floritene
E22578
Colagen
12,99 lei
147
Duvadilan
F14545
862
STUDENT
Nume_de_familie
prenume
iniial
numr_student
camer
Stefania
Mangiru
124
Laura
Cosoi
235
Bogdan
Petrescu
147
Ionut
Ciunescu
862
Bogdan
Petrescu
954
63
Surchicin Alexandru
CAMER
numecamer
supervisor
Saunders
Popa
Eisenhover
Ghiorghiu
64
Surchicin Alexandru
index.php
ajutor.php
cart.php
categorycontent.php
config.php
contact.php
footer.php
createaccount.php
db_nfs.php
despre.php
header.php
login.php
index.php
logout.php
more.php
css.css
search.php
Este folosit fiierul farmacie.sql n care se pstreaz toat baza de date siteului, adic produsele i utilizatorii nregistrai pe site.
Shopping Cart-ul folosete urmtoarele tabele:
users
ID
int(11)
NUME
varchar(50)
65
Surchicin Alexandru
PRENUME
varchar(50)
NIK
varchar(50)
PAROLA
varchar(200)
varchar(200)
ADRESA
varchar(200)
STARE
tinyint(1)
INTREBARE
varchar(200)
RASPUNS
varchar(200)
medicamente
ID
int(11)
NUME
varchar(50)
IMG
varchar(100)
PRET
decimal(5,2)
PRODUCATOR
varchar(100)
CATEGORY
int(11)
DESCRIERE
varchar(5000)
categories
ID
int(11)
TITLE
varchar(50)
comanda
ID
int(11)
NUME
varchar(100)
PRENUME
varchar(100)
varchar(100)
ADRESA
varchar(100)
TITLU
varchar(100)
PRET
decimal(5,2)
Surchicin Alexandru
67
Surchicin Alexandru
if(empty($_POST['nume']) || empty($_POST['prenume']))
echo "<p id='failed'> Introduceti primul si al doilea nume!
</p>";
else if(empty($_POST['username']))
echo "<p id='failed'> Introduceti un nume de utilizator ! </p>";
else if (strlen($name) <= 4 )
echo "<p id='failed'> Numele de utilizator trebuie sa fie mai
scurt de patru caractere! </p> ";
Surchicin Alexandru
~])*")@(?!.*[^.]{64,})(?>([a-z\d](?>[a-z\d-]*[az\d])?)(?>\.(?2)){0,126}|\[(?:(?>IPv6:(?>([af\d]{1,4})(?>:(?3)){7}|(?!(?:.*[af\d][:\]]){8,})((?3)(?>:(?3)){0,6})?::(?4)?))|(?>(?>IPv6:(?>(?3)
(?>:(?3)){5}:|(?!(?:.*[af\d]:){6,})(?5)?::(?>((?3)(?>:(?3)){0,4}):)?))?(25[0-5]|2[04]\d|1\d{2}|[1-9]?\d)(?>\.(?6)){3}))\])$/iD';
Nu se poate nregistra cineva cu acelai nume de utilizator sau cu acelai email de
dou ori. Dac vom ncerca s ne nregistrm, atunci ne va aprea mesajul Numele de
utilizator/Email deja exist nregistrate. Alegei alt nume utilizator/email!.
if(!empty($result))
echo "<p id='failed'> Numele de utilizator/Email deja
exista inregistrate! </p>";
Pentru recuperarea parolei sunt dou linii din formular care trebuiesc ndeplinite i sunt
prezentatea n figur urmtoare.
Figura 4.3
69
Surchicin Alexandru
if(empty($question))
"<p
id='failed'>
Numele
de
utilizator
sau
70
parola
este
Surchicin Alexandru
Dac ai introdus date corecte referitor la login i parola, atunci se vor extrage din baza
de date aceste informaii i utilizatorul va fi autentificat pe site. Dup ce ne-am logat,
trecem automat pe pagina de start - index.php. Pentru o securitate mai mare parola va
fi criptat n md5.
Dup procesul de logare butonul Sign up din bara meniului principal i va
schimba numele n log out.
71
Surchicin Alexandru
72
Surchicin Alexandru
ORDER
> <?php
if($itemperpage>=$totalmed){
$result=array();
$rows=0;
while($result[$rows++] = mysql_fetch_assoc($query));
for($i=0;$i<$totalmed;$i++)}
?>
n interiorul catalogului, fiecare categorie va conine mai multe produse, n funcie de
stocul curent aflat n baza de date .
Fiecare produs selectat are denumire, pre, productor i arata astfel n figur
urmtoare :
73
Surchicin Alexandru
Surchicin Alexandru
<?php$query
get_query("SELECT
FROM
medicamente
WHERE
ID='".mysql_real_escape_string($_GET['ID_MED'])."'");
foreach($query as $result):
?><tr>
<td rowspan="4" width= 35%><img src="<?=$result['IMG']?>" alt="
Adauga
imagine
"
width="210"
height="290"
border=""
></img></td>
<td
><font
size="+2"
color="#993300"><?=$result['NUME']?></font></td>
</tr><tr>
<td><font
size="+1"><b>Producator:</b><?=$result['PRODUCATOR']?></font></t
d>
</tr><tr>
<td><font
size="+1"><b>Pret</b>
<i><?=$result['PRET']?></i>
<b>Lei</b></font> </td>
</tr><tr>
<td align="right"><a
href="more.php?action=add_med&id=<?=$_GET['ID_MED']?>"><img src
="img/cart1.jpg" onclick="alert('Adaugat in cos !')" width="130"
height="40" ></a></td>
</tr><tr>
<td colspan="2"><p><font
color="#993300"><b>Informatii:</b></font><br><?=$result['DESCRIE
RE']?></p></td>
</tr>
<?php endforeach;?>
</table>
<?php } ?>
Dup alegerea tuturor produselor, utilizatorul va hotr dac realizeaz comanda, o
modific sau o anuleaz. Vom alege link-ul: Trimite comanda.
75
Surchicin Alexandru
Surchicin Alexandru
?>
</form>
comanda
categories
ID
TITLE
ID
NUME
PRENUME
EMAIL
ADRESA
TITLU
PRET
medicamente
ID
NUME
IMG
PRET
PRODUCATOR
CATEGORY
DESCRIERE
users
ID
NUME
PRENUME
NIK
PAROLA
EMAIL
ADRESA
STARE
INTREBARE
RASPUNS
Surchicin Alexandru
78
Surchicin Alexandru
}
#title a{
text-decoration: none;
color:
#993300;
}
79
Surchicin Alexandru
#title a:hover{
text-shadow:5px 5px 10px #993300;
}
n concluzie, putem spune c internet-ul a devenit un spaiu util tuturor oamenilor att
prin a-i petrece o parte din timpul liber, la serviciu, sau oriunde n alt parte.Odat cu
evoluia informaiilor i firmele au nceput s creasc, un mare avantaj constituindu-l
internet-ul care pe msur ce i-a dezvoltat tehnologiile, volumul de informaii a
nceput s fie din ce n ce mai mare. Ceea ce este un lucru bun pentru societate !
80
Surchicin Alexandru
Bibliografie :
Bibliografie :
1. Sikha Bagui, Richard Earp
Database Design Using Entity- Relationship Diagrams. Auerbach
Publication 2003
2.
3.
4.
5.
http://www.aw-bc.com/info/riccardi/database/Riccardi_ch4.PDF
http://www.cse.cuhk.edu.hk/~taoyf/course/bmeg3120/notes/er.pdf
www.seap.usv.ro/~valeriul/lupu/Curs_8_rom.doc
http://www.rgata.ru/sites/mpoevs/uploads/materials/bd/Kratkiy%20kur
s%20po%20BD.174.pdf
81