Documente Academic
Documente Profesional
Documente Cultură
CURS
.l. dr. ing. ec. Mirela Danubianu
mdanub@eed.usv.ro
C209
Scopul cursului
Data1
Data2
Fiier 1
Prelucrare 1
Raport 1
Data 3
Data1
Data 3
Fiier 2
Data 4
Prelucrare2
Raport 1
Raport 1
Raport 1
Raport n
Probleme
Fisier 1
Fisier 2
Catalog de
date
Fisier n
Aplic. 1
Utiliz1
Aplic n
Utiliz n
Instanta bazei de date este data de setul de date operationale din baza
la orice moment dat
se modifica frecvent
Natura autodescriptiva a datelor duce la independenta programdate
analiza necesitatilor informationale ale unei organizatii --> identificarea
entitatilor, a atributelor si a legaturilor dintre ele
Exemplu
baza de date Universitate
entitati : Studenti, Profesori, Cursuri, Sectii,
atribute (proprietati): Nr. Matricol, Nume, Prenume, Data de nastere, adresa,
etc.
legturi: Studentii asist la cursuri
Tranzacii bancare
Linii aeriene: rezervri, planificri
Universiti: evidena studenilor, situaia
colar
Vnzri: eviden clieni, produse, cumprri
Urmrirea produciei: producie, inventar,
comenzi, lanul de furnizori
Resurse umane: nregistrarea angajailor,
salarizare, etc
Nivelul
extern
Vedere1
Vedere 2
Vedere n
Schema
conceptual
Schema fizic
Nivelul
conceptual
Nivelul
intern
Baza de date
Organizarea fizic
a datelor
descrie acea parte a bazei de date care este relevant pentru fiecare
utilizator
cuprinde: unitati logice din modelul conceptual i unitati logice care
nu exista in modelul conceptual si care nu au corespondent direct in
baza de date fizica - uniti logice virtuale
fiecrui utilizator i corespunde un model extern propriu,
individualizat in raport cu cerinele specifice
termenul folosit pentru modelul extern este VEDERE
avantaje:
asigurarea securitatii bazei de date prin limitarea accesului la date
a anumitor categorii de utilizatori, sau prin acordarea de drepturi
de acces diferite pentru un utilizator n cadrul mai multor vederi
viziune individualizat i simplificat asupra bazei de date
realizeaz independena logic a datelor
Vedere 1
nrmatr
Vedere 2
Nume Prenume
Nivel
Conceptual
nrmatr
Vrsta adresa
Nume
nrmatr
Prenume
Nume grupa
DDN
adresa
grupa
struct STUDENT {
int nrmatr;
int grupa;
Nivel
char nume [15];
Intern
char prenume [15];
struct date DDN;
char adresa [20];
struct STUDENT *next; /* pointer ctre urmtoarea nregistrare */
};
index nrmatr; index grupa; /* definete indecii for staff */
Independena datelor
Independena datelor
Bazele de date
baza de date
DDL i DML
Mediul SGBD
Hardware
Software
Proiectanii
bazei de date
Pr. b.d. logice
Date
Proceduri
Administratorul
de baze de date
Programatorii
de aplicaii
Specialiti
Persoane
Utilizatorii
bazei de date
Utilizatorii
finali
Nespecialiti
SGBD
Funciile unui SGBD
3. asigurarea tranzaciilor
tranzacia const ntr-o serie de aciuni realizate de un singur utilizator
sau un program aplicaie prin care se acceseaz sau se schimb coninutul
bazei de date.
SGBD furnizeaz un mecanism care garanteaz ca sunt efectuate toate
reactualizrile corespunztoare unei anumite tranzacii sau c nu se
efectueaz nici una
SGBD
Funciile unui SGBD
5.
servicii de reconstituire
6.
servicii de autorizare
7.
8.
servicii suplimentare:
Avantaje
Dezavantaje:
complexitate
dimensiune
costul sistemelor SGBD
costuri adiionale pentru elemente
hardware
costul conversiei
performana
impactul crescut al unei
defeciuni
BAZE DE DATE
CURS 2
Modelul relaional
Orice tabel este o mulime ale crei elemente sunt linii sau coloane
numrul liniilor din tabel la un moment dat = cardinalitate
numarul de coloane din tabel = n = gradul (aritatea )
Domeniul reprezint ansamblul de valori admisibile pentru o component a unui
tabel
domeniul numelor de orae, domeniul numelor de persoane, domeniul
numerelor ntregi, etc
Dou domenii sunt compatibile dac ele sunt comparabile din punct de vedere
semantic (dac mulimile de valori care le definesc nu sunt disjuncte)
noiunea de domeniu interpretat restricioneaz problema compatibilitii
domeniilor chiar n cazul n care, conform definiiei, dou domenii ar fi
compatibile
proprieti:
ntr-un tabel nu exist dou linii identice (st la baza definirii
conceptului de cheie a unui tabel)
ordinea liniilor intr-un tabel este arbitrar
Terminologie
Nume
Pre
Editura
tehnic
TEORA
Office 2000
299
tehnic
Microsoft
Informatica
149
tiinific
ALL
economic
Polirom
Contabilitate 203
Structuri de reprezentare
Structuri de reprezentare
nume
login
specializare adresa
53666
Axinte
ax@cs
cs
SV
53688
Drgan
dr@ee
ee
NT
53650
Croitoru cr@mat
mat
BT
Chei relaionale
Supercheie - un atribut sau un set de atribute care identific n mod unic un tuplu al
unei relaii.
Poate conine atribute adiionale care nu sunt strict necesare identificrii
unui tuplu
Cheie candidat (K) a unei relatii R - o supercheie pentru care nici o submulime
nu este supercheie in cadrul relaiei respective.
Proprietile cheii candidat K: unicitate - valorile cheii identifica in mod unic
orice tuplu al unei relatii
ireductibilitate
Tipuri de chei candidat:
simple
compuse - atributele care o compun sunt atribute prime ( celelalte
atribute sunt neprime)
Cheie primar este cheia candidat care este selectat pentru a identifica n mod
unic tuplurile unei relaii.
Restricii:
nu sunt admise valori nedefinite pentru nici un atribut al cheii primare
nici o valoare a unui atribut dintr-o cheie primara nu poate fi modificat
printr-o operatie de actualizare
Chei alternative sunt cheile candidat care nu sunt selectate drept chei
primare.
Cheia strin este un atribut sau o multime de atribute din cadrul unei
relaii provenite prin propagarea unei chei candidat a unei alte relaii.
Valoarea unei chei strine = o referin la tuplul a crei valoare
este identic cu cea a cheii strine.
Relaia care conine cheia strin - relaie de referin
relaia care conine cheia care s-a propagat ca i cheie strain relaie referit
10
Integritatea relaional
11
Integritatea entitatilor
(constrngeri asupra cheii primare)
ntr-o relaie de baz nici un atribut al unei chei primare nu poate fi null.
Null - valoare a unui atribut care este n mod curent necunoscut sau care
nu este aplicabil unui anumit tuplu.
modalitate de tratare a datelor incomplete sau deosebite
nu trebuie confundat cu o valoare numeric egal cu zero sau cu un ir de
caractere completat cu spatii.
este tratat diferit fa de alte valori=> pot s apara probleme de
implementare, ca urmare a faptului c trebuie renunat la logica boolean
(specific calculului predictiv de ordinul nti) i trebuie lucrat cu o
logic polivalent ( tri sau cvadrivalenta)
12
Integritatea referenial
(constrngeri de cheie strin)
13
14
15
Operaia de adugare - valorile tutoror atributelor care fac parte dintr-o cheie strin trebuie s se
regseasc printre valorile atributelor pe care le refer n relaiile referite.
Operaia de tergere - fr nici un fel de restricii d.p.d.v. al condiiilor de integritate referenial.
Operaia de actualizare = o operaie de tergere urmat de una de adugare..
Relaii de referin
Relaiile referite
tergerea restricionat- nu se accept tergerea unui tuplu din relaia referit dac acesta
este referit de cel puin un tuplu din relaia de referin.
tergerea cascadat - tergerea unui tuplu din relaia referit va fi urma de tergerea tuturor
tuplelor din relaiile de referin care fac referire la tuplul ters. Dac tuplurile terse din relaia
de referin sunt, la rndul lor referite de alte tuple, atunci tergerea se propag, n cascad,
asupra tuplurilor care fac referire la cele din urm .a.m.d.
Operaia de actualizare Actualizarea unei chei dintr-o relaie referit se poate face n dou moduri:
actualizare restricionat
actualizare cascadat problema integritii - abordat n dou variante: declarativ sau procedural.
M. Danubianu - Baze de date
16
Proprieti:
Avantaje
independena datelor
redundan minim
suplee in
comunicarea cu
utilizatorul
Limite:
necesita volum mare de spaiu
nu lucreaz cu obiecte
complexe
nu realizeaz gestiunea
datelor distribuite
nu realizeaz gestiunea
cunotinelor
pot s apar fenomene de
inconsisten
M. Danubianu - Baze de date
17
Concluzii
Simplu i intuitiv
18
BAZE DE DATE
CURS 3
Limbaje relaionale
Caracteristici
Cnp
056
456
872
659
Nume
Lupu
Marinescu
Ilea
Stoica
Funcie
Prof
Assist
Conf
asist
Salar
6000000
4000000
5500000
3500000
ALGEBRA RELAIONAL
operatori fundamentali
operatori derivai
Algebra Relaional
, ><, / ,
Deoarece fiecare operaie ntoarce o relaie, operaiile pot fi compuse.
Selecia( p)
Selecteaz rndurile care
satisfac o condiie (predicat)
de selecie.
Nu exist duplicate n instana
relaiei de ieire. (De ce?)
Schema rezultatului este
identic cu schema relaiei de
intrare.
Relaia rezultat poate fi
intrare pentru o alt operaie
algebric.
condiie de selecie (predicatul selectiv) - expresie care conine: nume
de cmpuri, constante i operatori relaionali sau logici
Evaluarea predicatului ntoarce o valoare logic de tipul TRUE sau
FALSE.
Exemplu
PERSONAL (cnp, nume, pren, funcie, loc_m, salar)
Cnp
056
456
872
659
Nume
Lupu
Marinescu
Ilea
Stoica
Pren
Adriana
Dana
Dan
Ileana
Funcie
Prof
Assist
Conf
asist
Loc_m
FIE
FSE
FS
FIE
Salar
600
400
550
350
salar>500 ( Personal )
Cnp Nume Pren Funcie Loc_m
056 Lupu Adriana Prof
FIE
872 Ilea
Dan
Conf
FS
M. Danubianu - Baze de date
Salar
600
550
9
Proiecia(
list cmpuri
10
Exempu
S se realizeze o list cu salariile ntregului personal care
s conin numai detaliile: Cnp, Nume, Funcie, Salar.
cnp,nume,functie,salar,.( Personal )
Cnp
056
456
872
659
Nume
Lupu
Marinescu
Ilea
Stoica
Funcie
Prof
Assist
Conf
asist
Salar
600
400
550
350
11
Reuniunea (R S)
(Selecia tuplurilor distincte a dou relaii)
12
Exemplu
StudC
StudAII
StudC StudAII
13
Intersecia(R S)
14
Exemplu 1
Ce produse care sunt n stoc
au mai fost comandate?
15
Exemplu 2
Client_X1
Client_X2
CUI
Denumire
CUI
Denumire
Localitate
Strada
Telefon
1034567
OLPO SRL
1034567
OLPO SRL
Suceava
N.Balcescu
532567
2439873
MICROPIC
2394560
IUPS
Suceava
1198034
ELIANA
2935467
AVERSA SA
Bucuresti
Primaverii
021345627
2935467
AVERSA SA
5683456
ATAC SRL
Galati
CUI
Denumire
1034567
OLPO SRL
2935467
AVERSA SA
16
Diferena R-S
(Selecia tuplelor carte apar numai ntr-o relaie)
17
Produsul cartezian
18
Exemplu
S se gseasc toate
combinaiile posibile de
produse i depozite.
PRODUSE x DEPOZITE
19
20
Theta JOIN
R
p S
21
Exemplu
-FACTURI( numar, codp, cantitate, data) i
-COMENZI (numar, data, cod_ben), cu urmtoarele instane:
Facturi
facturi.numar=comenzi.numar
Comenzi
22
Natural Join
R
S
23
24
25
Diviziunea
26
Exemple A/B
x
s1
s1
s1
s1
s2
s2
s3
s4
s4
y
p1
p2
p3
p4
p1
p2
p2
p2
p4
A
y
p2
B1
y
p2
p4
B2
y
p1
p2
p4
B3
x
s1
s2
s3
s4
x
s1
s4
x
s1
A/B1
A/B2
A/B3
27
x (( x ( A ) B ) A )
28
29
30
31
BAZE DE DATE
Curs 4
SQL
SELECT
INSERT
DELETE
UPDATE
CREATE TABLE
DROP TABLE
ALTER TABLE
CREATE VIEW
DROP VIEW
GRANT
REVOKE
COMMIT
ROLLBACK
SELECT
[ALL | DISTINCT] [*]
[<alias>.]<camp>
[AS <nume_nou>]
[, [<alias>.]<camp>
[AS <nume_nou>] ...]
FROM <tabel>
[<local_alias>]
[, <tabel> [<local_alias>] ...]
[WHERE <cond_leg> [AND <cond_leg> ...]
[AND | OR <cond_filtru> [AND | OR <cond_filtru> ...]]]
[GROUP BY <lista_campuri>]
[HAVING <cond_filtru>]
[ORDER BY <camp_ord> [ASC | DESC] [, <camp_ord> [ASC |
DESC] ...]]
...este urmtoarea:
- FROM - specific tabelul sau tabelele care vor fi utilizate;
- WHERE - filtreaz rndurile supuse unei anumite condiii
sau conine condiia de jonciune ntre mai multe tabele
- GROUP BY - formeaz grupuri de rnduri cu aceleai
valori ale coloanelor din lista de parametri;
- HAVING - filtreaz grupurile supuse unei anumite condiii;
- SELECT - specific ce coloane vor aprea n tabelul
rezultat;
- ORDER BY - specific ordinea ieirii.
Operaia SELECT este nchis: rezultatul unei interogri unui tabel
este un alt tabel.
rezultatul poate fi un tabel "normal" (tabel salvat pe disc), un tabel
temporar (cursor - tabel care se terge automat la nchiderea unei
sesiuni de lucru) sau chiar o variabil-tablou (matrice).
M. Danubianu - Baze de date
Interogri n SQL
Selecia
Ce agenti economici mari au sediul n zona BURDUJENI?
intervine un singur tabel i anume Agenti1. In clauza WHERE apare
predicatul de selecie (conditia) : zona="BURDUJENI"
SELECT *
FROM AGENTI1
WHERE zona="BURDUJENI"
10
Operatorul BETWEEN
11
Operatorul LIKE
societi pe aciuni?
SELECT *
FROM Agenti1
WHERE Nume LIKE "S%SA"
12
Operatorul IN
13
Operatorul IS NULL
14
Proiecia
15
16
Diferena
17
Intersecia
FROM Ageni
INTERSECT
SELECT cod
FROM Contracte
sau , innd cont de faptul c este un operator drivat:
SELECT cod
FROM Ageni
MINUS
(SELECT cod
FROM Ageni
MINUS
SELECT cod
FROM Contracte)
M. Danubianu - Baze de date
18
Produsul cartezian
SELECT *
FROM Ageni, Contracte
19
Jonciunea n SQL
20
Dac s-ar fi dorit ca relaia rezultat s conin toate atributele celor dou
tabele, fraza SELECT ar fi avut una din urmtoarele forme:
SELECT Agenti.* , NRSP.*
FROM Agenti,facturi, NRSP
WHERE Ageni.cod=facturi.cod and facturi.numar=NRSP.numar and
facturi.data=NRSP.data
sau
SELECT *
FROM Agenti,facturi, NRSP
WHERE Ageni.cod=facturi.cod and facturi.numar=NRSP.numar and
facturi.data=NRSP.data
21
22
Subconsultri
posibilitatea imbricrii a dou sau mai multe fraze SELECT astfel
nct pot fi formulate interogri cu mare grad de complexitate
Forma general a unei subconsultri:
SELECT list_cmpuri1
FROM List_tabele1
WHERE cmp1 operator
(SELECT list_cmpuri2
FROM List_tabele2
WHERE condiii)
unde operator poate fi:
IN sau NOT IN
EXIST sau NOT EXIST
ALL, ANY etc.
Subconsultri : corelate sau necorelate
23
Rezultatul subconsultrii
(SELECT Data
FROM Facturi
WHERE Cod=16)
SELECT *
FROM Facturi
WHERE Data IN
(SELECT Data
FROM Facturi
WHERE Cod=16)
Data
27-Ian- 1999
27-Ian- 1999
Clauza WHERE Data IN determin
cutarea n tabelul Facturi a tuturor
tuplurilor (liniilor) care au valoarea
atributului Data egal cu una din
valorile tuplurilor din tabelul obinut
prin subconsultare
M. Danubianu - Baze de date
24
Care sunt facturile emise n alte zile dect cea n care a fost ntocmit
factura 10013?
SELECT *
FROM Facturi
WHERE Data NOT IN
(SELECT Data
FROM Facturi
WHERE Numr=10013)
25
SELECT *
FROM Clieni1
WHERE (cod, nume, adresa, localitate) NOT IN
(SELECT cod, nume, adresa, localitate
FROM Clieni2)
M. Danubianu - Baze de date
26
27
SELECT numr
FROM Facturi
WHERE Val>ANY
(SELECT val
FROM Facturi
WHERE tip=12 AND Data={27.01.1999})
28
29
Funcia COUNT
30
Funcia SUM
31
Funcia AVG
32
Gruparea tuplurilor.
Clauzele GROUP BY i HAVING
33
34
35
Clauza HAVING
36
Care sunt agenii pentru care, n facturi, exist mai mult de dou
poziii pentru un produs furnizat?
SELECT nume
FROM Agenti
WHERE cod IN
(SELECT cod
FROM FACTURI
GROUP BY tip, cod
HAVING COUNT(*)>2)
M. Danubianu - Baze de date
37
38
39
40
41
42
43
Vederi
44
Vederile
sunt dinamice
furnizeaz un mecanism de securitate puternic i flexibil
ascunderea unor pri ale bazei de date fa de anumii
utilizatori,
permit utilizatorilor accesarea datelor ntr-un mod personalizat,
conform cerinelor lor i
pot simplifica operaiile complexe asupra relaiilor de baz.
45
Crearea vederilor
CREATE SQL VIEW [NumeVedere ] [REMOTE]
[CONNECTION NumeConexiune ][SHARE]
| CONNECTION NumeSursaDate]
[AS SQL SELECT Statement]
Vedere orizontal
CREATE VIEW ag_zamca
AS SELECT *
FROM agenti
WHERE zona="Zamca"
Vedere vertical
CREATE VIEW date_ag_zamca
AS SELECT cod, nume, adresa
FROM agenti
WHERE zona="Zamca"
46
Atta timp ct definiia vederii curente nu este recursiv, bucla este finit
M. Danubianu - Baze de date
47
48
49
50
NUMBER (n ,d )
FLOAT
INTEGER
DOUBLE PRECISION
CHAR
VARCHAR
DATE
TIME
LOGICAL
51
Exemplu 1
52
Exemplu 2
53
54
sau
ALTER TABLE NumeTabel1
ALTER [COLUMN] NumeCmp
[NULL | NOT NULL]
[SET DEFAULT Expr1]
[SET CHECK Expr2 [ERROR Mesaj2]]
55
sau
ALTER TABLE NumeTabe1
[DROP [COLUMN] NumeCmp]
[SET CHECK Expr1 [ERROR Mesaj1]]
[DROP CHECK]
[ADD PRIMARY KEY Expr2 TAG NumeTag1]
[DROP PRIMARY KEY]
[ADD UNIQUE Expr3 [TAG NumeTag2 ]]
[DROP UNIQUE TAG NumeTag3]
[ADD FOREIGN KEY [Expr4] TAG NumeTag4
REFERENCES NumeTab2 [TAG NumeTag5]]
[DROP FOREIGN KEY TAG NumeTag6 [SAVE]]
[RENAME COLUMN NumeCmp TO NumeCmp_nou]
[NOVALIDATE]
* Se elimin o coloan sau se adaug, respectiv se elimin constrngeri
n tabel
M. Danubianu - Baze de date
56
57