Documente Academic
Documente Profesional
Documente Cultură
2013
BAZE DE DATE
Modelul de date
relaional
Structura relaional
Structura relaional
Operatorii relaionali
Restriciile de integritate
Domeniul
Relaia
Domeniu
Relaie
Atribut
Tuplu
Cheie
Schem
BUCURETI
2013-2014
Domeniul
acestuia
implicit,
31.10.2013
Atributul
Relaia
D3
D1
D2
Tuplul
Cheia
R:
A1:D1
...
An:Dm
R A1
Algebra relaional
de baz:
Universali: reuniunea, diferena, produsul cartezian
Specifici: proiecia, selecia i jonciunea
Operatori derivai: intersecia i diviziunea
Extensii
ale
algebrei
relaionale
standard:
complementarea unei relaii, spargerea unei relaii i
nchiderea tranzitiv.
A2
A3
A4
Proiecia
31.10.2013
Proiecia
Exemplu SQL
Ai,, Am (R)
R[Ai,..., Am]
PROJECT(R, Ai,..., Am)
ANGAJATI
Varsta,salariu
Nume
Varsta
Salariu
Varsta
Salariu
Ion
25
3000
25
3000
Mihai
30
2000
30
2000
Anca
25
3000
25
3000
Sofia
30
2000
30
2000
Mircea
30
2000
30
2000
Varsta
Salariu
25
3000
30
2000
Selectia
condiie (R)
R [condiie]
RESTRICT (R, condiie)
ANGAJATI
Nume
Varsta
Salariu
(salariu>2000 or nume=Mircea)
Ion
25
3000
Nume
Varsta
Salariu
Mihai
30
2000
Ion
25
3000
Anca
25
3000
Anca
25
3000
Sofia
30
2000
Mircea
30
2000
Mircea
30
2000
A1 A2 A3 A4
Selecia
Exemplu SQL
Produsul cartezian
SELECT *
FROM angajati
WHERE salariu>2000 or nume=Mircea
31.10.2013
Produsul cartezian
R1 x R2
PRODUCT (R1, R2)
TIMES (R1, R2)
Angajati
Comenzi
ID
Nume
NRC Data
ID
Ion
01.01.11
Mihai
07.01.11
Anca
08.01.11
Sofia
08.01.11
Mircea
09.01.11
Angajati x Comenzi
ID
Nume
NRC
Data
ID
Ion
01.01.11
Ion
07.01.11
Ion
08.01.11
Ion
08.01.11
Ion
09.01.11
Mihai
01.01.11
Mihai
07.01.11
Tipuri de jonciuni
egalitate
Natural
De neegalitate
Exemplu SQL
Jonciune
SELECT *
FROM angajati, comenzi;
SELECT *
FROM angajati CROSS JOIN comenzi;
Tipuri de jonciuni
La
stnga
dreapta
Complet
La
31.10.2013
Jonciunea de egalitate
SELECT *
FROM angajati a NATURAL JOIN comenzi c;
Comenzi
Angajati
Jonciunea natural
Jonciunea de egalitate
Exemple SQL
SELECT *
FROM angajati a, comenzi c
WHERE a.id_ang=c.id_ang;
SELECT *
FROM angajati a JOIN comenzi c
ON a.id_ang=c.id_ang;
SELECT *
FROM angajati a JOIN comenzi c
USING (id_Ang);
Jonciunea extern
Jonciunea la stnga
R2, condiie)
31.10.2013
Jonciunea la dreapta
Jonciunea complet
BAZE DE DATE
Modelul de date
relaional (2)
BUCURETI
2013-2014
Reuniunea
Exemplu UNION
Clienti Angajati
Clienti Angajati
Clienti Angajati
(R1, R2)
APPEND (R1,
UNION (R1,
R2)
R2)
31.10.2013
Diferena
Diferena
Ce afieaz?
NU!
DE CE?
Clienti Comenzi
Clienti Comenzi
R1
R2
REMOVE
(R1, R2)
R2)
MINUS (R1,
DA
Intersecia
Intersecia
Ce afieaz?
R1
R2
INTERSECT (R1,
AND
R2)
(R1, R2)
31.10.2013
Ali operatori
Calculul relaional
Diviziunea
Complementarea
Spargerea unei relaii
nchiderea tranzitiv
Calculul relaional
Variabila poate fi de tip tuplu (valorile sunt dintrun tuplu al unei tabele) sau domeniu (valorile
sunt dintr-un domeniu al unei tabele).
Rezult:
Calcul relaional orientat
Operatori
Conectivele (conectorii):
Conjuncia
Disjuncia
Negaia
Cuantificatorii:
Cuantificatorul
existenial
Cuantificatorul universal
Restriciile de integritate
pe tuplu
pe domeniu
Restriciile de integritate
unicitate a cheii
Referenial
Entitii
Restricii de comportament:
De
domeniu
Temporare
31.10.2013
Restricia entitii
Restricia referenial
Cheia primar
Simpl
Compus
Cheia candidat
ANGAJATI
Marca
CNP
Nume
Prenume
Data_angajare
Salariu
Departament
ANGAJATI
ISTORIC_FUNCTII
Marca
Data_inceput
Data_sfarsit
Id_functie
Marca
CNP
Nume
Prenume
Data_angajare
Salariu
Departament
NOT NULL
Domeniul
UNIQUE
Temporare
PRIMARY KEY
Cheie primar
Cheie candidat, Not null
Not null
Not null
Not null
Marca
Data_inceput
Data_sfarsit
Id_functie
Marca
CNP
Nume
Prenume
Data_angajare
Salariu
Departament
Marca
Data_inceput
Data_sfarsit
Id_functie
>=1000, <= 5000
FIN, IT,CONTA
FOREIGN KEY
ANGAJATI
ISTORIC_FUNCTII
Not null
ISTORIC_FUNCTII
Marca
Data_inceput
Data_sfarsit
Id_functie
suportate n SQL-Oracle
De domeniu
corespunztor unui atribut dintr-o tabel
trebuie s se ncadreze ntre anumite valori;
Cheie primar
Cheie candidat
Restriciile de integritate
CHECK
31.10.2013
Exemplificare SQL-Oracle
create table angajati
(marca number(3),
CNP char (13) not null,
nume varchar2(20) not null,
prenume varchar2(20) not null,
data_angajare date default sysdate,
salariu number(8,2),
departament varchar2(6),
constraint pk_angajat primary key (marca),
constraint uq_cnp unique (CNP),
constraint ck_salariu check (salariu between 1000 and 5000),
constraint ck_departament check (departament IN (FIN, IT, CONTA)));
Exemplificare SQL-Oracle
create table istoric_functii
(marca number(3),
data_inceput date,
data_sfarsit date,
id_functie varchar2(10) not null,
constraint pk_istoric primary key (marca, data_inceput),
constraint fk_angajat foreign key (marca) references angajati (marca),
constraint fk_angajat foreign key (id_functie) references functii(id_functie));
CURSUL 5...
10