Sunteți pe pagina 1din 62

Toate slide-urile acestei prezentari sunt inspirate

din cursul Oracle Academy: Database Design

Proiectarea Bazelor de Date


Lector Dr. Razvan PETRUSEL
razvan.petrusel@econ.ubbcluj.ro

Ce este un model conceptual?


Modeleaza nevoile functionale si
informationale ale unei afaceri
Se bazeaza pe nevoile curente si reflecta
nevoile viitoare
Se refera doar la nevoile afacerii si nu se
preocupa de modul in care se va realiza
implementarea efectiva
Se numeste Model Entitate Relatie (Entity
Relationship Model)
Reprezentat grafic sub forma unei
Diagrame Entitate Relatie (Entity
Relationship Diagram) - ERD

Construim un model conceptual pentru ca:


Trebuie sa descriem exact nevoile de informatii
ale afacerii;
Faciliteaza discutiile si impartasirea cunostintelor;
Previne greselile si neintelegerile;
Sunt o parte importanta a documentatiei de
sistem;
Sunt fundatia solida a implementarii fizice a bazei
de date;
Documenteaza procesele de afaceri (cunoscute si
sub nuele de reguli de afaceri - business rules);
Iau in considerare reglementarile si legile care
guverneaza activitatea de afaceri.

De ce trebuie sa realizam modelul


conceptual al datelor?
Abilitatile de a organiza si clasifica datele ne
permit sa tragem concluzii folositoare in legatura
cu fapte aparent intamplatoare si aleatorii.
Lumea in care traim produce vaste cantitati de
fapte care au nevoie de structura si ordonare
pentru a fi folositoare.
E esential sa invatati despre entitati pentru ca
acestea sunt lucrurile in legatura cu care se
stocheaza datele. De exemplu:
O facultate trebuie sa stocheze date despre (cel
putin): STUDENT(i), PROFESOR(i), CURS(uri),
SALA(i) DE CURS(uri), NOTA(e).

Diagrame Entitate Relatie (ERD)

Oamenii vorbesc limbi diferite dar unele


semne au un inteles global.
Ce inseamna aceste semne de circulatie?:

Diagrame Entitate Relatie (ERD)


Este

eficient sa comunici
informatia astfel incat sa fie
inteleasa de cat mai multa lume.

ERD-urile

sunt exact asa:


indiferent de limba vorbita, toata
lumea deseneaza aceste
diagrame in acelasi fel, urmand
aceleasi conventii de notare.

O entitate este:
Ceva

semnificativ legat de afacere in


legatura cu care trebuie stiute date;
Un nume pentru o multime de lucruri similare;
De obicei sunt denumite prin substantive.
Exemple:
Entitatile

obiecte, evenimente, persoane

au instante. O instanta este o


singura aparitie (materializare) a unei entitati.

Entitati si Instante

PERSON

Mahatma Gandhi

PRODUCT

PRODUCT TYPE

JOB

SKILL LEVEL

CONCERT

U2 at the Palladium

ANIMAL

Dog

CAR

Nike Air Jordan


shoe

electrician
beginner

Volkswagen beetle

Entitati
Tangibile, de ex. PERSON sau PRODUCT
Intangibile, de ex. SKILL LEVEL
Un eveniment, de ex. CONCERT
Este CAINE o entitate sau o instanta?
Depinde:

Daca ne gandim la diferite tipuri de animale, are


sens sa ne gandim la entitatea ANIMAL cu instantele
CAINE, PISICA, CAL, etc.
Dar daca avem o cerscatorie de caini? Sistemul
intreprinderii trebuie sa stocheze date legate de
diverse rase de caini, nu de alte specii de animale
Pentru crescatoria de caini, CAINE este o entitate cu
instantele TERRIER, POODLE, LABRADOR, etc..

Ce este un atribut?

Ca si o entitate, un atribut reprezinta ceva


semnificativ pentru afacere.
Un atribut este o bucata specifica de
informatie care:
Descrie o entitate
Cuantifica o entitate
Califica o entitate
Clasifica o entitate
Specifica o entitate

Un atribut are o singura valoare.

Atribute

CUSTOMER family name, age, shoe size, town of


residence, email
CAR model, weight, catalog price
ORDER order date, ship date
JOB title, description
TRANSACTION amount, transaction date
EMPLOYMENT CONTRACT start date, salary

Atributele au valori. Valoarea unui atribut poate fi: un


numar, un sir de caractere, o data calendaristica, o
imagine, un sunet, etc.
Acestea sunt numite tipuri de date sau formate de date.

Atribute

Unele atribute trebuie sa aiba o valoare.


Acestea se numesc atribute obligatorii.
De exemplu, daca se stocheaza date
legate de o persoana, nume este un
atribut obligatoriu.
Alte atribute pot sa aiba o valoare sau
pot fi nule. De exemplu, daca se
stocheaza date legate de o persoana,
numar telefon este un atribut optional.
Adresa email poate fi un atribut
obligatoriu al entitatii angajat daca se
modeleaza o aplicatie de mesagerie, dar

Exemplu:
Un

DJ trebuie sa cunoasca diverse


tipuri de muzica (cantece, coloane
sonore, etc.). Daca am modela
afacerea unui DJ, entitatea care se
refera la colectia de cantece s-ar
putea numi PIESA.

Ce

atribute ar putea avea entitatea


PIESA?
Ce valori ar putea avea aceste
atribute?

Identificatori
Un

Identificator Unic (UID) este un


atribut, sau o combinatie de atribute,
care separa o instanta a unei entitati
de alta instanta.

Cum

ati gasi o anumita piesa in


intreaga colectie? Care ar putea fi
UID-ul pentru PIESE?
Ganditi-va la toti studentii din sectie.
Fiecare student are cateva atribute.
Ce atribut va permite sa gasiti un

Termeni cheie:

Atribut
Tip de date (data type)
Entitate
Instanta
Atribut Obligatoriu
Null
Atribut Optional
Identificator Unic (UID)

Modele conceptuale
Un

model conceptual bine


realizat ramane neschimbat
indiferent de sistemul in care va
fi implementa efectiv. Aceasta
este ceea ce se numeste un
model implementation-free.

Ce este un Model Entitate Relatie?


O lista cu toate entitatile si atributele
acestora precum si relatiile dintre acestea.
Ofera informatii suplimentare cum ar fi descrieri
ale entitatilor, tipuri de date si constrangeri.
Modelele ER au patru obiective:

Sa surprinda toate informatiile importante;


Sa se asigure ca orice informatie apare o singura data
in model;
Nu modeleaza informatii care pot fi derivate din alte
informatii care se gasesc deja in model;
Plaseaza informatiile intr-un loc logic, previzibil.

Scenariul Afacerii DJ on Demand


Am inceput afacerea deoarece eram un grup de
prieteni care oraganizau petreceri si se ocupau de
muzica diferitelor evenimente. Asa ca ne-am gandit
sa castigam ceva bani din aceste activitati. Ne-am
denumit afacerea DJs on Demand (DJ la cerere).
Toti angajatii firmei sunt parteneri. Fiecare partener
are o responsabilitate specifica. Managerul de
proiect ia primul legatura cu clientu si discuta
detaliile evenimentului. De exemplu, despre ce tip
de petrecere este vorba: o zi de nastere, o nunta, o
aniversare, absolvire, etc. Alt detaliu important este
data la care are loc evenimentul.

Scenariul Afacerii DJ on Demand

Dupa ce clientul decide ca evenimentul va avea


loc, partenerul responsabil cu planificarea
evenimentelor ia legatura cu acesta pentru a
stabili: locatia, catering-ul, decoratiunile si alte
detalii. DJ-ul discuta cu clientul despre muzica
dorita. Managerul de proiect supervizeaza
planificatorul de evenimente si DJ-ul. El ami
autorizeaza cheltuielile legate de eveniment.
Avem o colectie larga de CD-uri. Fiecare CD
contine cateva piese, iar aceeasi piesa poate
aparea pe mai multe cd-uri. Clasificam fiecare
piesa dupa tip (hip hop, salsa, R & B (rhythm and
blues), techno, salsa, polka, rock, jazz, new age,
classical, etc.)
Putem propune o lista initiala de piese clientului,

Scenariul Afacerii DJ on Demand

Lista noastra de clienti creste. Avem o multime de


clienti care revin dupa ce le-au placut evenimentele
organizate anterior. De asemenea, avem multi clienti
ocupati care au nevoie sa desfasoare mai multe
evenimente in acelasi timp.
Avem si o lista de teme pe care le folosim pentru a
clasifica evenimentele. De exemplu, o nunta poate
avea o tema tropicala, o petrecere poatea avea ca
tema un bal mascat, o aniversare poate avea tema
retro, etc. Aceasta clasificare ne ajuta sa selectam o
locatie potrivita si ajuta DJ-ul sa selecteze muzica si
imbracamintea. Unii dintre parteneri au o specialitate
deci tema ne ajuta sa alocam persoana cea mai
potrivita.

Scenariul Afacerii DJ on Demand


Evenimentele

se tin fie intr-un loc public fie


intr-o locatie privata. Managerul de eveniment
este responsabil cu persona care inchiriaza
spatiul public sau detine locatia privata.
Deoarece mai multi parteneri pot lucra
simultan la un eveniment, si un eveniment
poate fi realizat de mai multi parteneri avem
nevoie sa stim permanent cine se ocupa de ce
eveniment. Tinem evidenta in legatura cu ce
si cand a facut fiecare partener si DJ in
legatura cu un eveniment.

Relatiile in Modelele de Date


Relatiile:
Reprezinta

ceva semnificativ/important
pentru afacere;
Arata cum sunt legate intre ele
entitatile;
Exista intotdeauna intre doua entitati
(sau intre aceeasi entitate);
Au intotdeauna doua parti;
Au nume la ambele capete;
Au optionalitate;
Au cardinalitate.

Optionalitatea
Relatiile

sunt fie obligatorii fie


optionale.
Optionalitatea se determina
raspunzand la patru intrebari.
De exemplu:

Trebuie ca fiecare angajat sa aiba o functie?


Adica, este obigatorie sau optionala relatia
dintre angajat si functie?
Pot angajatii sa aiba mai mult de o functie?
Trebuie ca orice functie sa fie ocupata de un
angajat? Adica, este obigatorie sau optionala
relatia dintre functie si angajat?

Cardinalitatea
Cardinalitatea

reprezinta gradul unei

relatii.
Raspunde la intrebarea cat de
multe.
De

exemplu:

Cate functii sunt detinute de un angajat? Una


sau mai multe?
O functie poate fi detinuta de cati angajati?
Doar unul? Unul sau mai multi?

Exemple de optionalitate si cardinalitate

Fiecare ANGAJAT trebuie sa detina una si


doar o FUNCTIE

Fiecare FUNCTIE poate fi detinuta de unul


sau mai multi ANGAJATI

Fiecare PRODUS trebuie sa fie clasificat unul


si doar un TIP DE PRODUS

Fiecare TIP DE PRODUS poate contine unul


sau mai multe PRODUSE

Mai multe exemple - sunt corecte?

Fiecare LOC poate fi vandut catre unul sau


mai multi PASAGERI.

Fiecare PASAGER poate achizitiona un singur


LOC.

LOCUL este vandut unui PASAGER (sau


PASAGERI deci duce la supravanzare)

PASAGERII achizitioneaza sau rezerva un LOC.

Scenariu 1
In

colectia noastra clasificam


toata muzica pe tipuri. Tipurile
diferite sunt rock, jazz, country,
classical, pop, new age, etc.
Oricand se pot adauga noi tipuri.
De exemplu am adaugat recent
un nou tip pentru muzica rap. Ne
dam seama ca o piesa poate fi
clasificata in mai multe tipuri dar,
pentru nevoile noastre, alegem

Scenariu 1

PIESA are un TIP: optionalitate si cardinalitate

Optionalitate = Must (trebuie) sau may (poate)?


Fiecare PIESA trebuie sa fie clasificata de un (si
doar un) TIP.
Fiecare TIP poate sa fie clasificarea pentru una
sau mai multe PIESE.

Cardinalitate = Cat de multe?


Fiecare PIESA trebuie sa fie clasificata de un
(si doar un) TIP.
Fiecare TIP poate sa fie clasificarea pentru una
sau mai multe PIESE.

Scenariu 1

Scenariu 1
SONG are un TYPE
Poate fi un TYPE cu nici un SONG?
De ce ar exista un TYPE cu nici un SONG?

Scenariu 2

Care sunt relatiile in urmatorul scenariu?

In restaurantul nostru clientii vin la bar si


plaseaza comenzile. Un client poate
comanda pentru sine sau pentru un
intreg grup de persoane. De exemplu,
daca o mama comanda pentru sine si
pentru copii consideram ca mama este
titularul comenzii si ea este responsabila
cu plata. Desigur, un client poate plasa
cate comenzi doreste.

Scenariu 2

CLIENT are COMENZI: optionalitate si


cardinalitate

Optionalitate = Trebuie (Must) sau poate (may)?


Fiecare COMANDA trebuie sa fie realizata de un
(si doar un) CLIENT.
Fiecare CLIENT poate sa plaseze una sau mai
multe COMENZI.

Cardinalitate = How many?


Fiecare COMANDA trebuie sa fie realizata de un
(si doar un) CLIENT.
Fiecare CLIENT trebuie sa plaseze una sau mai

Scenariu 2

DJs on Demand: Clienti, Evenimente, si Teme


Lista noastra de clienti creste. Avem o multime de
clienti (customers) care revin dupa ce au fost
multumiti de prestatia initiala. Unii dintre clientii nostri
pot sa desfasoare mai mult de un eveniment (event) in
acelasi timp. Fiecare partener al firmei are o
specialitate. Ne place sa clasificam evenimentele pe
care le organizam dupa teme (theme). Aceasta ne
ajuta sa distribui partenerului potrivit organizarea
evenimentului in care este specializat. O tema (theme)
de eveniment (event) poate fi: petrecere pe plaja,
medievala, carnavalm retro, etc. Adaugam teme pe
masura ce acestea sunt cerute de clienti.
Determinati Entitatile, Atibutele si Relatiile

Conventii ERD
Entitatile

sunt
reprezentate in
dreptunghiuri.
In dreptunghi sunt
scrise numele
entitatilor.
Numele entitatilor
sunt intotdeauna
la singular si scrise
cu litere mari.

Conventii ERD

Atributele sunt
scrise sub numele
entitatilor.
Atributele
obligatorii sunt
marcate cu: *
Atributele optionale
sunt marcate cu :
o
Identificatorii unici
sunt marcati cu:
#

Conventii ERD
Relatiile sunt linii
care leaga
entitatile.
Aceste linii sunt
fie continue
(trebuie - must)
sau punctate
(poate- may).
Liniile se termina
cu single toe
sau cu crows
foot.

Solutie

Vorbind limba ERD

Vorbind limba ERD


Deoarece o relatie are
doua parti vom citi prima
data de la stanga la
dreapta.
1.FIECARE
2.Entitate

A
3.OPTIONALITATE
(trebuie/poate) - (must
be/may be)
4.NUME RELATIE
5.CARDINALITATE (unul si
doar unul/ unul sau mai
multi) - (one and only one/
one or more)
6.Entitate B

Vorbind limba ERD


Acum vom citi de la
dreapta la stanga.
1.FIECARE
2.Entitate

B
3.OPTIONALITATE
(trebuie/poate) - (must
be/may be)
4.NUME RELATIE
5.CARDINALITATE (unul
si doar unul/ unul sau
mai multi) - (one and
only one/ one or more)
6.Entitate A

Vorbind limba ERD

Putin mai complex

Supertipuri

Un supertip
reuneste mai multe
entitati care au
unele din atribute
comune.
Aceste atribute
comune sunt
plasate la nivelul
supertipului. Se
procedeaza la fel
pentru relatii.
Subtipurile
mostenesc toate
atributele si relatiile
entitatii supertip.

Un pic si mai complex. Recunoasteti


afacerea?

Rezolvarea relatiilor mai multe la mai multe

In afacerea DJ, fiecarui


PARTENER ii poate fi
atribuit unul sau mai
multe EVENIMENTE.
Fiecare EVENIMENT
poate fi realizat de unul
sau mai multi
PARTNERi.
Cand un PARTENTER
lucreaza la un
EVENIMENT, vrem sa
stim status-ul
proiectului.
In care entitate ar
trebui adaugat
atributul status?

Entitati de Intersectie

O entitate de
intersectie JOB
ASSIGNMENT a
fost adaugata
pentru a include
atributul status.
Relatia M:M a
fost
transformata in
doua realatii1:M.
Care ar fi UID-ul
entitatii de
intersectie?

Mai multe exemple

Mai multe exemple

Validarea unei ERD


O

buna modalitate de a verifica o


ERD este realizarea unei analize
CRUD.
CRUD este un acronim pentru:
Create, Retrieve, Update, Delete.
Acestea sunt cele patru operatii
elementare pe care baza de date le
permite.
Verificarea CRUD presupune ca toate
operatiile CRUD specificate in
scenariul de afaceri sa fie prezente si

Validarea unei ERD

Realizarea

validari CRUD ajuta la


verificarea completitudinii.
Daca

exista o regula a afacerii care nu


are o entitate pe care sa se realizeze o
operatie CRUD modelul este
incomplet.
Daca exista entitati neatinse de nici o
operatie CRUD (nu exista nici o regula
a afacerii care sa creeze, extraga,
actualizeze sau stearga date din
entitate) atunci entitatea poate fi

Normalizarea si Forma Normala 1

Forma Normala 1
cere ca in entitate sa
nu existe atribute cu
valori multiple.

Exista multe Sali de


clasa intr-o scoala, deci
atributul clasroom are
mai multe valori.
Daca un atribut are mai
multe valori, se creeaza
o entitate suplimentara
care se leaga de
entitatea initiala printro relatie M:1.

1NF - incorect

Normalizarea si Forma Normala 2

Forma normala 2 cere


ca fiecare atribut care
nu este identificator
unic (UID) sa depinda
de intreg UID-ul
entitatii respective.

Ce spuneti de atributil
Supplier Name?
Daca un furnizor livreaza 5
produse diferite, ce se
intampla cand numele
furnizorului se modifica?

Normalizarea si Forma Normala 3

Forma Normala 3 este


atinsa daca nici un
atribut care nu este UID
nu depinde de un alt
atribut care nu este UID.

Daca doriti sa stocati date


privind colectia voastra de
CD-uri, are sens sa stocati
si detalii legate de
magazinul din care ati
cumparat CD-ul in cadrul
aceleiasi entitati?

Exercitii 3NF

Exercitii 3NF

Alte exercitii

Convertirea ERD in tabele din baza de date

Convertirea ERD in tabele din baza de date