Documente Academic
Documente Profesional
Documente Cultură
Am creat o bază de date care detine informații despre produsele pe care o cafenea le
ofera, precum și despre recenziile utilizatorilor pentru acestea. Misiunea cafenelei este de a
aduce pe piata o gama variata de cafea, din diferite colturi ale lumii Directorii si personalul de
pe diverse nivele din cadrul localului sunt reprezentaţi în mod obligatoriu de persoane calificate
în cele două tipuri de profesii.
Tabelul Clienții stochează toate informațiile despre clienți. Informațiile esențiale sunt definite ca
NOT NULL. De exemplu, fiecare client trebuie să aibă o adresă de expediere. Cu toate acestea, clienții
din tabel nu gestionează relația dintre un client și comanda lui de achiziție. Deci, această relație trebuie
gestionată de comenzile de masă, pe care le definim ca subtipuri, fiecare dintre acestea prezentand
attribute unice specifice. Entitatea preparator are in plus atributul specializare, entitatea ospatar
atributul pregatire,
iar entitatea manager atributul experienta. Subtipurile trebuie să se
excludă reciproc. Aceasta regula se traduce pe exemplul de mai sus prin faptul ca un angajat nu poate fi
si preparator si ospatar in acelasi timp.
Fiecare client poate scrie cât mai multe comentarii despre produsele pe care le-a
cumpărat împreună cu data și ora trimiterii recenziei. Utilizatorii pot evalua produsul folosind
sistemul de examinare de 5 stele. Revizuirea va conține un cod unic. De asemenea, clientul
poate da rating de la 1 la 5, acesta fiind ilustrat prin stele strălucitoare de aur. Deci, site-ul web
poate fi o zonă deschisă pentru a discuta despre cea mai bună opțiune de cumpărare.
Diagrama ERD
Angajat
Clienti
#id
#id
*nume
*nume
Preparator *prenume
*prenume
*cnp
*oras *specializare
*data_nasterii
*sex
*adresa
Produs
Ospatar Manager
#id
*pregatire *experienta
*tara
*denumire ------
*prêt email
Recenzie
#id
*produs_id
- - -------------p *recenzor_id
*comentariu - - - -
*valoare_rating
ERD FINAL
*data_publicarii
Tabele de mapare
Tabela produs:
Tabela clienti:
Tabela comanda:
Tabela angajati:
Clienti
#id
*nume
Angajat
*prenume
#id
*oras
*nume
*prenume
*cnp
Ospatar *data_nasterii
Comanda
*sex
*pregatire
#id
*strada
*idclient - - - -
*oras
*data *tara
Preparator Manager
Produs
*specializare *experienta
#id
- - - -
*denumire
*pret
Recenzie
#id
*produs_id
*recenzor_id
- - - - - - - - -
*comentariu
*valoare_rating
*data_publicarii
Pentru că adresa este de forma "str. Florilor, bl. 45, sc. A, ap. 28, etaj 3, Braşov, cod
123123", formă care de fapt conţine mai multe informaţii elementare, acest atribut ar trebui
impartit în mai multe atribute care se refera la adresa.O entitate se găseşte în prima formă
normală dacă şi numai dacă:- nu există atribute cu valori multiple;- nu există atribute sau
grupuri de atribute care se repetă. Cu alte cuvinte toate atributele trebuie să fie atomice, adică
să conţină o singură informaţie.
Relatia M:M dintre client si produs a fost rezolvata prin introducerea entitatii de
intersectie, Comanda O entitate se găseşte în a treia formă normală dacă nici un atribut care nu
este parte a UID-ului nu depinde de un alt atribut non-UID. Cu alte cuvinte nu se acceptă
dependenţe tranzitive, adică un atribut să depindă de UID în mod indirect. Astfel se tine evident
fiecarui produs comandat de catre client. Se creaza o relatie 1:M intre entitatile client si produs.
Relatii:
One-to-many:
Fiecare manager poate coordona unul sau mai multi angajati, iar fiecare angajat trebuie
sa fie coordonat de un manager.
Un client poate comanda mai multe produse, dar un produs poate apartine doar unui
client
FIecare ospatar trebuie sa ia una sau mai multe comenzi, iar o comanda poate fi luata de
catre un ospatar
Fiecare client poate avea una sau mai multe comenzi, iar fiecare comanda trebuie sa
apartina unui client.
Fiecare comanda trebuie sa contina un produs, iar fiecare produs trebuie sa apartina
uneia sau mai multor comenzi.
Un produs poate avea mai multe recenzii, iar o recenzie apartine unui produs.
Un client poate face mai multe recenzii, iar o recenzie apartine unui client.
Many-to-many:
Fiecare preparator trebuie sa efectueze unul sau mai multe produse, iar fiecare produs
trebuie la randul lui sa fie facut de unul sau mai multi preparatori.
Creare tabele
);
);
data DATE
);
Am configurat o cheie străină în tabelul Comanda care face referire la cheia primara din
tabelul Clienti, astfel tinandu-se evidenta fiecarui produs comandat de fiecare client.
);
comentariu VARCHAR(255),
data_publicarii TIMESTAMP
);
Am configurat o cheie străină în coloana Recenzii care face referire la cheia primară din
tabelul Produs si o cheie straina care face referire la cheia primara din tabelul clienti. Astfel,
fiecare revizuire este legată de produsul corespunzător si de comentariul dat de cel care face
recenzia, păstrându-se în același timp integritatea referențială.
Modificari de structura:
- coloana nou creată va deveni ultima coloană a tabelei si va fi completată cu NULL în toate
liniile existente deoarece contine déja date.
Actualizari de continut:
UPDATE angajati
produs_recenzii(denumire,
GROUP BY p.denumire;
Interogari:
8.
9. Produs cartezian
SELECT c.id, c.data, t.nume, t.prenume
FROM comanda c CROSS JOIN clienti t
10.
11.
SELECT id, denumire
FROM produs
WHERE pret > ( SELECT pret
FROM produs
WHERE id='78' )
FROM recenzie