Sunteți pe pagina 1din 34

The difference between theory and practice is that in theory, there is no

difference between theory and practice, but in practice, there is.


Jan van de Sneptscheut
An army of sheep led by a lion would defeat
an army of lions led by a sheep.
Arab Proverb

Information necessitating a change of design will be conveyed to the


designer after and only after the design is complete.
(Often called the 'Now They Tell Us' Law)
Fyfe's First Law of Revision

Capitolul III

Proiectarea logic a bazelor


de date

1. Locul modelrii logice a datelor n CVS


Aplicarea principiului abstractizarii in modelarea datelor
Cerintele functionale ale sistemului

Regulile modelului
relational

Cerintele nefunctionale
si de performanta

Nivelul conceptual al datelor


(modelul entitate-relatie)

Nivelul logic al datelor


(modelul relational pur)

Nivelul fizic al datelor


(modelul fizic al datelor)

Cerintele de calitate
(flexibilitate, stabilitate)

Facilitatile SGBD-ului

1. Locul modelrii logice a datelor n CVS


Criterii de calitate ale modelului logic al datelor

Completitudine - s conin toate datele necesare prelucrrilor


Neredundan - s fie format dintr-un set de tabele normalizate
Stabilitate schimbarea cerinelor funcionale s nu determine modificarea
structurii logice a datelor
Flexibilitate - uurina extinderii structurii logice a datelor pentru nglobarea
unor noi cerine
Simplitate i elegan - s ofere o clasificare natural i elegant a datelor (de
exemplu, s nu existe dou tabele FURNIZOR i CLIENT)

2. Modelul relaional
Concepte utilizate
Baz de date relaional - un ansamblu de relaii (tabele) aflate n legtur

Relaie (tabel)

- este identificat printr-un nume propriu


- este format din linii (tupluri) i coloane (atribute)
- la intersecia crora se introduc valori atomice (date elementare)

Domeniu

- mulimea tuturor valorilor pe care le poate lua o dat elementar

2. Modelul relaional
Concepte utilizate (cont.)
Cheie - ansamblul minimal de atribute prin care se poate identifica n mod unic orice
tuplu dintr-o relaie
Cheie candidat - un atribut sau o combinaie de atribute care s joace rolul de cheie
Cheie primar o cheie candidat aleas special
Cheie secundar o cheie candidat care nu a fost aleas cheie primar
Cheie strin (extern) - un atribut care apare ntr-o tabel i care este cheie primar
n alt tabel. Ea este utilizat pentru stabilirea legturilor ntre tabele.
Restricie de integritate referenial - pentru cheia strin se admite orice valoare
nenul care se regsete ntre valorile cheii primare din tabela-printe

3. Demersul de proiectare a bazei de date


Strategii de proiectare a schemei bazei de date
1. strategia bottom-up, reprezint abordarea tradiional i presupune
constituirea relaiei generale
analiza relaiilor de dependen dintre atribute i parcurgerea pailor
normalizrii
2. strategia top-down, presupune urmtoarele activiti:
analiza cerinelor funcionale i ntocmirea modelului conceptual (DER)
transformarea modelului ER prin aplicarea unui set de reguli
analiza tabelelor obinute din perspectiva normalizrii

3. Demersul de proiectare a bazei de date


Strategii de proiectare a schemei bazei de date (cont.)
Avantajele strategiei top down:
DER reprezint un instrument util de comunicare ntre analiti i utilizatori
DER este uor de neles i conceput
Utilizeaz conceptul de abstractizare - se reduce considerabil numrul
obiectelor analizate. Numrul entitailor de date este mult mai mic dect numrul
datelor elementare din sistem.
Existena unui set complet de reguli de transformare a DER n schema logic a
bazei de date - suport pentru generarea automat a bazei de date

3. Demersul de proiectare a bazei de date


Paii demersului

1. Construirea unor modele logice ale datelor corespunzatoare


perspectivelor diferitelor categorii de utilizatori
2. Contopirea tuturor perspectivelor normalizate ale utilizatorilor
3. Transformarea DER (class diagram) intr-un set de tabele normalizate
4. Obinerea modelului logic final prin compararea modelului logic
consolidat (pasul2) cu modelul obinut prin transformarea DER (pasul 3)

4. Transformarea diagramelor entitate-relaie


Activitile specifice transformrii DER
Reprezentarea entitilor - se vor obine tabele din prima categorie
Reprezentarea relaiilor de asociere dintre entiti - vor rezulta tabele din
categoriile a doua i a treia
Reprezentarea relatiilor de mostenire exista trei strategii
Reprezentarea atributelor multivaloare - se vor obine tabele din categoria a
patra
Normalizarea relaiilor - tabelele obinute n paii 1 i 2 pot conine
redundane nedorite

4. Transformarea diagramelor entitate-relaie


4.1 Transformarea entitilor
Reguli de transformare:
fiecare entitate din DER este reprezentat ca o relaie (tabel) n modelul logic
identificatorul entitii devine cheie primar a relaiei
celelalte proprieti ale entitii devin atribute non-cheie ale relaiei

Exemplu

4. Transformarea diagramelor entitate-relaie


4.2 Transformarea relatiilor de asociere
Se ia n considerare cardinalitatea legturilor dintre entiti:
maximul cardinalitii indic tabela care va conine cheia strin
ea se va numi entitate slab (tabel copil)
minimul cardinalitii descrie caracterul obligatoriu/facultativ al
legturii
indic dac pentru cheile strine sunt permise valorile nule sau nu

4. Transformarea diagramelor entitate-relaie


4.2.1 Transformarea legturii binare de tipul 1:1
Reguli de transformare:
1.

Tabela printe este cea aflat de partea cu cardinalitatea minim 1 a


legturii

2.

Exist patru variante posibile de transformare:


adugarea cheii primare a entitii A la entitatea B ca cheie
strin
adugarea cheii primare a entitii B la entitatea A ca cheie
strin
combinarea cazurilor 1 i 2, dac cerinele de acces la date
o cer
unirea celor dou entiti ntr-o singur tabel

4. Transformarea diagramelor entitate-relaie


4.2.1 Transformarea legturii binare de tipul 1:1 (cont.)

Factura
Fact_id
Fact_nr
Fact_data
(1,1)

Factura

Fiecrei facturi i va
corespunde cel mult o
recepie sau nici una,
iar o recepie are la
baz exact o factur.

Fact_id
Fact_nr
Fact_data

Corespunde

Receptie
(0,1)
Receptie
Rec_id
Rec_nr
Rec_data

Rec_id
Rec_nr
Rec_data
Fact_id [FK] NOT NULL

4. Transformarea diagramelor entitate-relaie


4.2.2 Transformarea legturilor 1:N
(participarea entitii de partea unu este obligatorie)
Furnizor
Furn_id
Furn_nume
(1,1)

Emitere

Fiecare factura este emis


de un singur furnizor, n
timp de un furnizor poate
emite mai multe facturi
sau nici una.

Furnizor
Furn_id
Furn_nume

Factura
(0,M)
Factura
Fact_nr
Fact_data

Fact_nr
Fact_data
Furn_id [FK] NOT NULL

Reguli de transformare:
entitatea aflat de partea M va conine cheia strin
NU se admit valori nule pentru cheia strin

4. Transformarea diagramelor entitate-relaie


4.2.2 Transformarea legturilor 1:N
(participarea entitii de partea unu este facultativ)
AgentComercial
agentId
agentNume
(0,1)
Incheie

(1,M)
Comanda
cmdId
cmdNumar

Fiecare agent comercial


poate incheia una sau
mai multe comenzi, ns
nu este obligatoriu ca o
comanda s fie incheiata
de un agent clientul
poate veni direct in firma
sau lanseaza comanda
prin intermediul site-ului
firmei.

AgentComercial
agentId
agentNume

Comanda
cmdId
cmdNumar
agentId [FK] NULL

Reguli de transformare:
entitatea aflat de partea M va conine cheia strin
se admit valori nule pentru cheia strin

4. Transformarea diagramelor entitate-relaie


4.2.3 Transformarea legturilor binare de tip M:N

Reguli de transformare:
se creeaz cte o tabel aferent celor dou entiti
se creeaz a treia tabel, aferent legturii M:N, numit entitate asociativ
conine cheile primare ale celor dou entiti i eventualele atribute
ale legturii M:N
cheia primar este format, de regul, prin combinarea celor dou
chei strine
sunt situaii cnd n compoziia cheii primare trebuie introduse i
alte atribute, pe lng cele dou chei strine
nu se admit valori nule pentru cheile strine

4. Transformarea diagramelor entitate-relaie


4.2.3 Transformarea legturilor binare de tip M:N
Fiecare factura poate contine mai multe produse, iar
un produs se poate regasi pe mai multe facturi
Produs
Produs
Prod_id
Prod_den

Prod_id
Prod_den

(0,M)
Cantitate
Contine
Pret
(1,M)
Factura
Fact_nr
Fact_data

Articol_factura
Prod_id [FK]
Fact_nr [FK]
Cantitate
Pret

Factura
Fact_nr
Fact_data

4. Transformarea diagramelor entitate-relaie


4.2.4 Transformarea legturilor recursive de tip 1:M

ANGAJAT
Marca_angajat
Nume
Alte_date
(1,1)

Conduce

(0,M)

Un angajat poate conduce


mai muli angajai sau nici
unul, iar fiecare angajat are
un manager i numai unul

ANGAJAT
Marca_angajat
Nume
Alte_date
Marca_manager [FK]

4. Transformarea diagramelor entitate-relaie


4.2.4 Transformarea legturilor recursive de tip M:N

ARTICOL
Cod_articol
Denumire
Cost

Un articol poate conine mai


multe articole, iar un articol
poate intra n fabricaia mai
multor alte articole.
(0,M )

ARTICOL
Cod_articol
Denumire
Cost

(0,M )

Contine

Cantitate

ARTICOL_COMPONENT
Cod_articol
Cod_componenta [FK]
Cantitate

4. Transformarea diagramelor entitate-relaie


4.2.5 Transformarea legturilor ternare

Reguli de transformare:
se creeaz cte o tabel aferent celor trei entiti
se creeaz a patra tabel, aferent legturii ternare, numit entitate asociativ
(tabel copil)
tabela copil conine cheile primare ale celor trei entiti, ce vor fi chei strine,
i eventualele atribute ale legturii ternare

4. Transformarea diagramelor entitate-relaie


4.2.5 Transformarea legturilor ternare
Reguli de transformare (continuare):
formarea cheii primare a tabelei copil:
dac toate entitile prezint cardinalitatea maxim unu, cheia primar
se formeaz prin combinarea oricror dou din cele trei chei strine
dac dou dintre entiti prezint cardinalitatea maxim unu, cheia
primar se formeaz prin combinarea cheii entitii din partea multe i
una dintre cheile entitilor situate de partea unu
dac o singur entitate prezint cardinalitatea maxim unu, cheia
primar va fi format prin combinarea cheilor celor dou entiti situate de
partea multe
dac toate cele trei entiti au cardinalitatea maxim multe, cheia
primar va fi format din cheile tuturor celor trei entiti

4. Transformarea diagramelor entitate-relaie


4.2.5 Transformarea legturii ternare (tipul unu-la-unu-la-unu)
Tehnician
Ang_id
Ang_nume

1
Proiect
Pr_id
Pr_den

Documentatie

Intocmeste

1 Doc_nr

Doc_termen

Un tehnician poate lucra la mai multe proiecte insa el intocmeste o singura


documentatie pentru fiecare proiect in parte; fiecare documentatie este intocmita de
un singur tehnician pentru un singur proiect; un proiect poate avea mai multe
documentatii, dar fiecare documentatie va fi intocmita de un singur tehnician.
Tehnician
Ang_id
Ang_nume

Proiect
Pr_id
Pr_den

Doc_proiect
Pr_id [FK]
Doc_nr [FK]
Ang_id [FK]

Documentatie
Doc_nr
Doc_termen

In tabela Doc_proiect exista trei variante pentru stabilirea cheii: Pr_id si Doc_nr;
Pr_id si Ang_id; Doc_nr si Ang_id.

4. Transformarea diagramelor entitate-relaie


4.2.5 Transformarea legturii ternare (tipul unu-la-multe-la-multe)
Profesor
Prof_id
Prof_nume
1
Disciplina
Disc_id
Disc_den

Exam_data

N Student
Stud_id
Stud_nume

Examin
eaza

Exam_nota

Disciplina
Disc_id
Disc_den

Fiecare student sustine un


examen cu un singur profesor,
insa el poate fi examinat de
acelasi profesor la mai multe
discipline. De asemenea, un
profesor examineaza la o
disciplina mai multi studenti.

Profesor
Prof_id
Prof_nume

Examen
Stud_id [FK]
Disc_id [FK]
Exam_data
Prof_id [FK]
Exam_nota

Student
Stud_id
Stud_nume

4. Transformarea diagramelor entitate-relaie


4.2.5 Transformarea legturii ternare (tipul multe-la-multe-la-multe)
Angajat
Ang_id
Ang_nume
P

Formatie
Form_id
Form_nrang

Lucreaza

Nr_ore

Formatie
Form_id
Form_nrang

Loc_munca
Locm_id
Locm_den

Angajat
Ang_id
Ang_nume

Pontaj
Ang_id [FK]
Form_id[FK]
Locm_id [FK]
Nr_ore

M - un angajat poate lucra


la un loc de munca in
cadrul mai multor formatii.
N - un angajat poate lucra
intr-o formatie dar la mai
multe locuri de munca.
P o formatie care
lucreaza intr-un loc de
munca poate fi alcatuita
din mai multi angajati.

Loc_munca
Locm_id
Locm_den

4. Transformarea diagramelor entitate-relaie


4.3 Transformarea relaiilor de motenire
Exist 3 strategii de transformare:
o singur tabel
tabela va conine toate atributele din subclase i superclas
pentru atributele specifice unei subclase se vor admite valori nule
se adaug un atribut cu rol discriminant
cte o tabel pentru fiecare subclas
fiecare tabel va conine atributele din subclasa corespondent
fiecare tabel va include i atriutele superclasei
cte o tabel pentru fiecare clas din ierarhie (inclusiv superclas)
se va crea o tabel pentru clasa printe i cte o tabel pentru fiecare
subclas
tabelele vor conine atributele clasei corespondente
relaiile de motenire vor fi nlocuite cu legaturi unu-la-unu
tabelele aferente subclaselor vor conine cheia primar a tabelei ce

4. Transformarea diagramelor entitate-relaie


4.3 Transformarea relaiilor de motenire

Strategia
cte o
tabel
pentru
fiecare
subclas

DocInsotitor
idDocInsotitor [PK]
tipDocument
nrDoc
dataDoc
dataOperare
mijlTransport

Receptie
idReceptie [PK]
tipDocument
nrDoc
dataDoc
dataOperare
facturaPrimita

DocConsum
idDocConsum [PK]
tipDocument
nrDoc
dataDoc
dataOperare
numarComanda : NULL
locConsum

4. Transformarea diagramelor entitate-relaie


4.3 Transformarea relaiilor de motenire

Strategia
cte o
tabel
pentru
fiecare
clas
DocInsotitor
idDocInsotitor [PK]
idDocument [FK]
mijlTransport
Receptie
idReceptie [PK]
idDocument [FK]
facturaPrimita

(0,1)
(1,1)

Document
idDocument [PK]
nrDoc
(1,1)
dataDoc
(0,1)
dataOperare

DocConsum
idDocConsum [PK]
idDocument [FK]
numarComanda
locConsum
(1,1)

(0,1)

4. Transformarea diagramelor entitate-relaie


4.3 Transformarea relaiilor de motenire

Strategia
o singur
tabel
pentru
ntreaga
ierarhie
BunMaterial
codMaterial [PK]
denumireMaterial
um
contEvidenta
durataUtilizare : NULL
perioadaAcordare : NULL
procentCheltuieli : NULL
tipBunMaterial

4. Transformarea diagramelor entitate-relaie


4.3 Transformarea atributelor multivaloare

Carte

ISBN
Titlu
Cota
Stare

Atributele
multivaloare Cota si
Stare sunt separate
ntr-o tabel distinct.
Ea se mai numete i
entitate atributiv.

Carte
ISBN
Titlu

Copie
Cota
Stare
ISBN [FK]

5. Recomandri privind proiectarea BD


1.

Utilizarea conventiilor in atribuirea de nume camelCase opus PascalCase

2.

Stabilirea unui prefix unic pt fiecare tabela, care sa fie utilizat ca parte a
numelor atributelor

3.

Pastrarea numelor pt atributele cheie straina ramane cu prefixul de la tabela


parinte

4.

Evitarea cheilor primare compuse sau chiar a celor cu semnificatie pentru


utilizator (utilizatorul ar putea sa modifice valoarea). Numele atributului cheie
primara PrefixTabelaID, cu valori atribuite automat ca secventa.

6. Mecanismul tranzacional al BD
6.1 Definirea mecanismului tranzacional
Tranzacie
ansamblu de operaiuni executate mpreun asupra bazei de date
o unitate logic de prelucrare care garanteaz consistena bazei de date
O baz de date este ntr-o stare consistent dac datele respect toate restriciile de
integritate definite asupra lor

Mecanismul tranzacional trebuie s rezolve urmtoarele dou probleme:


Controlul concurenei - mecanismele de blocare
Rezistena la defecte, tolerana sistemului la defecte i capacitatea de
recuperare a acestuia

6. Mecanismul tranzacional al BD
6.2 Exemplu tranzacie Adugare factur
Denumire
operaiune

Nume tabel accesat

Tip acces

Explicaii

Adugare
factur

FACTURA

Insert

DataFactura ia valoarea datei din


sistem, iar celelalte valori sunt preluate
din ecranul de culegere a datelor.

Adugare
articole factur

ARTICOLFACTURA

Insert

Toate datele se preiau din ecranul


pentru culegerea datelor.

Actualizare
sold client

CLIENT

Update

Se incrementeaz valoarea atributului


Sold, cu valoarea facturii, preluat din
ecranul de culegere a datelor.
Identificarea nregistrrii se face n
funcie de codul clientului pentru care
s-a introdus factura.

Actualizare
stocuri

PRODUS

Update

Se decrementeaz valoarea atributului


Stoc cu cantitatea vndut, pentru
fiecare produs n parte. Identificarea
nregistrrilor actualizate se face pe
baza codului produsului.

6. Mecanismul tranzacional al BD
6.3 Proprietile tranzaciilor

Atomicitate -o tranzactie este considerata o unitate elementara de


prelucrare, adica executia unei tranzactii se face pe principiul totul sau nimic
Consistena - se refera la corectitudinea tranzactiei din punctul de vedere
al consistentei datelor
Izolarea - presupune ca orice tranzactie sa aiba acces doar la starile
consistente ale bazei de date
Durabilitatea - odata ce tranzactia este validata, efectele sale devin
permanente si vor fi nscrise n baza de date