2017
BUCUREŞTI
2017-2018
3 4
1
05.11.2017
7 8
2
05.11.2017
Activitate facultativă
Cursuri online, gratuite, facultative
BAZE DE DATE
◦ Semestrul 1: Oracle Academy Database Design and Programming with SQL
◦ Semestrul 2*: Oracle Academy Database Programming with PL/SQL
Condiţii de absolvire a cursurilor: ASPECTE CONCEPTUALE PRIVIND
◦ finalizare curs online (susţinere examene intermediare online + examen final
organizat la ASE)
ORGANIZAREA DATELOR
◦ cel mult 3 absenţe curs+seminar Baze de date
◦ cel puţin nota finală 7 la disciplina Baze de date
Beneficii:
◦ obţinere diplome de absolvire a cursurilor
◦ obţinere vouchere de reducere pentru cursuri Oracle University sau pentru
examene de certificare (www.oracle.ro)
* Cursul poate fi urmat NUMAI de către studenţii care au absolvit primul curs şi care au în planul de învăţământ
9
disciplina SGBD Oracle.
11 12
3
05.11.2017
13 14
15 16
4
05.11.2017
17 18
19 20
5
05.11.2017
21 22
23 24
6
05.11.2017
25 26
27 28
7
05.11.2017
29 30
31 32
8
05.11.2017
Entitatea
BAZE DE DATE
O entitate desemnează un obiect concret sau
abstract, reprezentat prin proprietăţile sale.
◦ Entitate concretă: persoană, produs, clădire
CURSUL 2.
ELEMENTE DE TEORIA BAZELOR DE DATE ◦ Entitate abstractă: nivel calificare
BUCUREŞTI
2017-2018
Instanţa Atributul
Este o proprietate care:
O instanţă desemnează o singură manifestare a unei
descrie o entitate
entităţi
cuantifică o entitate
◦ Persoana: Ionescu califică o entitate
◦ Produs: mobilier clasifică o entitate
◦ Nivel calificare: ridicat specifică o entitate
35 36
9
05.11.2017
Atributul Valoarea
Definirea unui atribut poate fi extinsă prin impunerea
unui tip de dată: un format de reprezentare, o valoare Reprezintă măsura atributului unei entităţi
implicită, restricţii de integritate.
Volatile: vârsta
Un atribut are o singură valoare, la un moment dat,
pentru fiecare instanţă a entităţii. Non-volatile: data naşterii
Fiecare atribut este caracterizat de natura valorilor pe
care le poate lua: numeric, alfanumeric, date
calendaristice etc. Orice proprietate a unei entităţi poate fi exprimată
prin una sau mai multe perechi (atribut, valoare).
Poate avea valori elementare sau compuse.
Atribute cheie, non-cheie, opţionale, obligatorii
37 38
Terminologie alternativă
Entitate (obiect): SALARIAT
39 40
10
05.11.2017
41 42
Modelul de date
Model abstract care descrie modul în care datele
BAZE DE DATE sunt reprezentate şi accesate, utilizând formalizări
matematice.
Elementele modelului de date:
MODELE DE DATE 1. Structura de date
2. Operatorii
3. Restricţiile de integritate
44
11
05.11.2017
47 48
12
05.11.2017
49
51 52
13
05.11.2017
55 56
14
05.11.2017
59 60
15
05.11.2017
63 64
16
05.11.2017
Operatorii relaţionali
CURSUL 3.
MODELUL DE DATE RELAŢIONAL Restricţiile de integritate
BUCUREŞTI
2017-2018
17
05.11.2017
Relaţia Relaţia
Relaţia reprezintă un subansamblu al produsului cartezian al R : {<a, 1, α >, <b, 2, β >}
mai multor domenii, care este caracterizat printr-un nume şi
conţine tupluri cu semnificaţie. Reprezentare ca tabel bidimensional
Să presupunem că se acordă o anumită semnificaţie Extensia unei relaţii: ansamblul tuplurilor care compun
valorilor domeniilor D1, D2, D3.
Numai unele dintre tuplurile produsului cartezian: D3 D1
la un moment dat relaţia
D2 pot avea o semnificaţie şi anume cele care conţin Numărul tuplurilor dintr-o relaţie reprezintă cardinalul
numele, sexul şi vârsta aceleiaşi persoane
relaţiei, în timp ce numărul valorilor dintr-un tuplu
defineşte gradul acesteia.
Tuplul
R (A1:D1, ..., An:Dm)
Tuplul reprezintă linia unei tabele de date şi nu are nume.
18
05.11.2017
R A1 A2 A3 A4
Proiecţia Proiecţia
Definită asupra unei relaţii R, proiecţia constă din Ai,……, Am (R)
construirea unei noi relaţii P, în care se regăsesc numai R[Ai,..., Am]
acele atribute din R specificate explicit în cadrul
operaţiei. PROJECT(R, Ai,..., Am)
Implică efectuarea unor tăieturi verticale asupra relaţiei ANGAJATI Varsta,salariu
R şi care pot avea ca efect apariţia unor tupluri Nume Varsta Salariu Varsta Salariu
duplicate, care se cer a fi eliminate. Ion 25 3000 25 3000
Varsta Salariu
Se trece de la o relaţie de grad n la o relaţie de grad p, Mihai 30 2000 30 2000
25 3000
mai mic decât cel iniţial (p < n), adică de la un spaţiu de Anca 25 3000 25 3000
30 2000
n dimensiuni la unul cu mai puţine dimensiuni, ceea ce Sofia 30 2000 30 2000
explică şi numele de proiecţie. Mircea 30 2000 30 2000
19
05.11.2017
R A1 A2 A3 A4
SELECT DISTINCT varsta, salariu Reprezintă operaţia definită asupra unei relaţii R,
care constă din construirea unei relaţii S, cu aceeaşi
FROM angajati; schemă ca R şi a cărei extensie este constituită din
acele tupluri din R care satisfac condiţia menţionată
explicit în cadrul operaţiei.
Implică efectuarea de tăieturi orizontale asupra
relaţiei R, adică eliminarea unor tupluri ale relaţiei.
20
05.11.2017
FROM angajati CROSS JOIN comenzi; Extensia relaţiei R3 va conţine combinaţiile acelor
tupluri care satisfac condiţia de concatenare.
21
05.11.2017
22
05.11.2017
SELECT *
FROM angajati a JOIN comenzi c
ON a.id_ang=c.id_ang;
SELECT *
FROM angajati a JOIN comenzi c
USING (id_Ang);
23
05.11.2017
Joncţiunea completă
BAZE DE DATE
CURSUL 4.
MODELUL DE DATE RELAŢIONAL (continuare)
BUCUREŞTI
2017-2018
24
05.11.2017
◦ R1 – R2
◦ REMOVE (R1, R2)
◦ MINUS (R1, R2)
25
05.11.2017
Diferenţa Intersecţia
Reprezintă o operaţie definită pe două relaţii, R1 şi
R2 ambele cu aceeaşi schemă, prin care se obţine o
nouă relaţie, R3, cu schema identică cu a relaţiilor
NU! operand şi cu extensia formată din tuplurile din R1
DE CE?
şi R2.
Clienti – Comenzi
Clienti – Comenzi
◦ R1 R2
◦ INTERSECT (R1, R2)
◦ AND (R1, R2)
DA
26
05.11.2017
27
05.11.2017
reprezentate cu ajutorul relaţiilor R1 şi R2. Id_client Cheie primară Nr_comanda Cheie primară
Denumire Not null Data_comanda Not null
R1 şi R2 nu trebuie să fie neapărat distincte. CUI Cheie candidată Data_livrare
CNP Cheie candidată Modalitate_comanda
CLIENTI Modalitate_livrare
COMENZI Capital_social
Nivel_venit Id_client Cheie externă
Id_client Cheie primară
Nr_comanda Cheie primară Denumire Email Not null RAND_COMENZI
Data_comanda CUI Cheie candidată Id_produs Cheie primară
Data_livrare CNP Cheie candidată Nr_comanda compusă
Modalitate_comanda Capital_social Cantitate Not null
Modalitate_livrare Nivel_venit Pret Not null
Id_client Cheie externă Email
28
05.11.2017
29
05.11.2017
Exemplificare SQL-Oracle
BAZE DE DATE
CURSUL 5.
BAZE DE DATE RELAŢIONALE
BUCUREŞTI
2017-2018
119 120
30
05.11.2017
123 124
31
05.11.2017
Asocierile dintre entităţi pot fi clasificate după mai multe criterii, şi anume:
A.Cardinalitatea asocierii:
1. gradul asocierii (maximele cardinalităţii):
a) asocieri de tip unu la unu;
b) asocieri de tip unu la mulţi;
c) asocieri de tip mulţi la mulţi.
125 126
Asocierile dintre entităţi pot fi clasificate după mai multe criterii, şi anume: Asocierile dintre entităţi pot fi clasificate după mai multe criterii, şi anume:
A.Cardinalitatea asocierii: A.Cardinalitatea asocierii:
2. obligativitatea participării entităţilor la asociere (minimele 3. concomitent după gradul asocierii şi după obligativitatea participării
cardinalităţii): la asociere:
a) asocieri parţiale; a) asocieri parţiale de tip unu la unu;
b) asocieri totale (complete). b) asocieri totale de tip unu la unu;
c) asocieri parţiale de tip unu la mulţi;
d) asocieri totale de tip unu la mulţi;
e) asocieri parţiale de tip mulţi la mulţi;
f) asocieri totale de tip mulţi la mulţi.
127 128
32
05.11.2017
Fiecare angajat are un manager, iar un manager poate Asocierile dintre entităţi pot fi clasificate după mai multe criterii, şi anume:
controla mai mulţi angajaţi. C.Semnificaţia asocierii:
1. “este-un” (generalizare);
Identificarea entităţilor: ANGAJAT 2. “este-conţinut-în” (agregare).
Identificarea asocierilor (obligativitate + cardinalitate):
Asociere recursivă
conduce
Un angajat poate să fie condus ANGAJAT
de un singur manager
este condus
Un manager poate conduce
unul sau mai mulţi angajaţi
131 132
33
05.11.2017
133 134
135 136
34
05.11.2017
137 138
139 140
35
05.11.2017
141 142
36
05.11.2017
DEPARTAMENTE
Asociere Cheie externă Id_departament Cheie primară
Denumire Not null
Id_manager Cheie externă, face legătura cu coloana Marca a tabelei ANGAJATI, se arată care
este managerul fiecărui departament. Restricţie NOT NULL.
145 146
Studiu de caz
1. Să se construiască diagrama enititate-asociere pentru următorul scenariu.
2. Să se proiecteze schema conceptuală a bazei de date relaţionale.
Studiul de caz tratează gestiunea activităţii unei unităţi hoteliere.
În vederea cazării, un client poate solicita rezervarea uneia sau mai multor camere prin e-mail sau
telefonic. Pentru aceasta furnizează recepţionerului informaţii privind perioada de cazare şi
tipurile de camere solicitate. Clienţii vor beneficia de reduceri dacă rezervă cel puţin 3 camere sau
dacă perioada de cazare depăşeşte 5 zile. Recepţionerul verifică disponibilitatea camerelor şi îl
înştiinţează pe client de acest lucru precum şi de costul estimat al cazării. Dacă nu există camere
disponibile conform solicitării, recepţionerul poate oferi clientului alternative. De asemenea,
clientul poate solicita un discount (suplimentar sau nu), iar recepţionerul va decide fezabilitatea
discountului, fiind asistat obligatoriu de managerul hotelului. În situaţia în care clientul este de
acord cu preţul propus, se va proceda la realizarea rezervării. Pentru clienţii noi, recepţionerul
solicită datele de identificare, pe care le introduce în aplicaţie.
Odată ajuns la hotel, şi dacă a făcut în prealabil o rezervare, clientul va furniza datele de
identificare ale sale şi/sau ale rezervării şi se face cazarea. Dacă nu există o rezervare, se va
verifica disponibilitatea camerelor pentru perioada cerută. Atunci când se găseşte o astfel de
cameră, se face cazarea. La finalul sejurului, recepţionerul întocmeşte o listă cu toate serviciile
solicitate de client şi preţul acestora. Lista trebuie validată de client, după care se întocmeşte
factura finală. Factura poate fi plătită parţial sau integral, prin transfer bancar, numerar sau
folosind un card bancar. Totodată, înainte de a părăsi hotelul, clientul este rugat să completeze un
formular prin care să evalueze serviciile oferite de unitatea hotelieră. 147
37