Documente Academic
Documente Profesional
Documente Cultură
4
Modelul relational, partea a 2-a
Obiective
Înțelegerea conceptelor modelului relațional
Compuse
Candidate
Primare
Surogat
Non-unice
Externa
EMITENTI
COTATII
Simbol Cheie primara
Simbol Cheie externa
Denumire
Data_cot
CUI
Pret_Inchidere
Piata
Volum
Data_listarii
Pret_minim
ISIN
Pret_maxim
Capital_social
Restrictia entitatii
Fiecare valoare dintr-o coloană nu trebuie să fie NULL
EMITENTI
Simbol Cheie primară
Denumire Not Null
CUI Cheie candidata, Not Null
Piata Not Null
Data_listarii Not Null
ISIN Cheie Candidata
Capital_social
COTATII
Simbol Cheie primară compusa
Data_cot
Pret_Inchidere Not Null
Volum Not Null
Pret_minim Not Null
Pret_maxim Not Null
Check
Este specificată o expresie, care trebuie sa fie
adevărata pentru ca restricția să fie îndeplinită
EMITENTI
Simbol
Denumire
CUI
Piata ‘REGS’, ‘RGBS’,’XMBS’
Data_listarii
ISIN
Capital_social >10000
COTATII
Simbol
Data_cot >data_listarii
Pret_Inchidere >=pret_min, <= pret_maxi,
Volum >=0
Pret_minim >=0
Pret_maxim >=0
Exemplificare SQL
create table emitenti(
simbol varchar2(12),
denumire varchar2(32) not null,
cui varchar2(12) not null,
piata char(4),
data_listarii date default sysdate,
isin varchar2(12),
capital_soc number(10),
constraint emitenti_pk primary key(simbol),
constraint emitenti_cui_uk unique(cui),
constraint emitenti_isin_uk unique(isin),
constraint emitenti_ch_piata check (upper(piata) in
('REGS','RGBS','XMBS')),
constraint emitenti_ch_cap check (capital_soc>0));
Exemplificare SQL
create table cotatii(
simbol varchar2(12),
data_cot date,
pret_inchidere number(12,4),
volum number(8),
pret_min number(12,4),
pret_max number(12,4),
constraint cotatii_pk primary key(simbol,data_cot),
constraint cotatii_emitenti_fk foreign key(simbol) references
emitenti,
constraint cotatii_preti_ch check (pret_inchidere between
pret_min and pret_max),
constraint cotatii_vol_ch check (volum>=0),
constraint cotatii_pretmin_ch check (pret_min>=0),
constraint cotatii_pretmax_ch check (pret_max>=0));
Operatorii relationali
Algebra Relationala (AR) - introdusa de E.F. Codd ca o
colectie de operatori pe relatii în care operatorii
descriu tipuri de prelucrări asupra relaţiilor, operanzii
sunt relaţii, iar rezultatul este, de asemenea, relaţie.
Operatori de baza
Universali: reuniunea, diferenţa, produsul cartezian
Specifici: proiecţia, selecţia şi joncţiunea
Operatori derivati: intersecţia şi diviziunea
A1 A2 A3 A4
Proiectia
Definită asupra unei relaţii R, care constă din
construirea unei noi relaţii P, în care se regăsesc
numai acele atribute din R specificate explicit în
cadrul operaţiei.
Implica efectuarea unor tăieturi verticale asupra lui R
şi care pot avea ca efect apariţia unor tupluri
duplicate, care se cer a fi eliminate.
Se trece de la o relaţie de grad n la o relaţie de grad p,
mai mic decât cel iniţial (p < n), adică de la un spaţiu
de n dimensiuni la unul cu mai puţine dimensiuni,
ceea ce explică şi numele de proiecţie.
Proiectia
∏ Ai,……, Am (R)
R[Ai,..., Am]
PROJECT(R, Ai,..., Am)
R ∏ Comision,salariu
Nume Comisi Salariu Comisi Salariu
on on
Comisi Salariu
Ion 25 3000 25 3000
on
Mihai 30 2000 30 2000
25 3000
Anca 25 3000 25 3000
30 2000
Sofia 30 2000 30 2000
Mircea 30 2000 30 2000
Limbajul SQL – Comanda Select
Comandă SQL Descriere
regăseşte date din una sau mai multe tabele
SELECT A nu se confunda cu operatorul de selectie
15
Precedenţa operatorilor
Operator
*, /, -,+
= , >= , > , <= , < , <> , != , IS , LIKE , IN
BETWEEN
NOT
AND
|| , OR
Ce afiseaza? SELECT *
FROM angajati
WHERE ID_DEPARTAMENT=100 OR salariul<500*10 AND
ID_DEPARTAMENT = 50;
16
Exemplu SQL
SELECT DISTINCT salariu, comision FROM angajati;
A1 A2 A3 A4
Selectia
Reprezintă operaţia definită asupra unei relaţii R, care
constă din construirea unei relaţii S, cu aceeaşi
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.
Selectia
δcondiţie (R)
R [condiţie]
RESTRICT (R, condiţie)
R
Nume Comision Salariu δ(salariu>2000 or nume=Mircea)
Ion 25 3000 Nume Comision Salariu
Mihai 30 2000 Ion 25 3000
Anca 25 3000 Anca 25 3000
Sofia 30 2000 Mircea 30 2000
Mircea 30 2000
Exemplu SQL
SELECT * FROM angajati
WHERE salariu>2000 or nume=‘Mircea’
Produsul cartezian
Este o operaţie definită pe două relaţii, R1 şi R2.
Pe baza relaţiilor R1 şi R2 se construieste nouă relaţie,
R3, a cărei schemă se obţine prin concatenarea
schemelor relaţiilor R1 şi R2 şi a cărei extensie cuprinde
toate combinaţiile tuplurilor din R1 cu cele din R2.
Produsul cartezian
R1 x R2
PRODUCT (R1, R2)
TIMES (R1, R2) Angajati x Comenzi
ID Nume NRC Data ID
Angajati Comenzi
1 Ion 1 01.01.15 1
ID Num N Data ID 1 Ion 2 07.01.15 2
e R
C 1 Ion 3 08.01.15 3
1 Ion
1 01.01.15 1 1 Ion 4 08.01.15 2
2 Mihai
2 07.01.15 2 1 Ion 5 09.01.15
3 Anca
3 08.01.15 3 2 Mihai 1 01.01.15 1
4 Sofia
4 08.01.15 2 2 Mihai 2 07.01.15 2
5 Mirce
a 5 09.01.15 …… ……. …… …… ……
Exemplu SQL
SELECT * FROM angajati, comenzi;
SELECT * FROM angajati cross join comenzi;
Jonctiune
Reprezintă operaţia definită pe două relaţii, R1 şi R2,
care constă din construirea unei noi relaţii R3, prin
concatenarea unor tupluri din R1 cu tupluri din R2.
Se concatenează acele tupluri din R1 şi R2 care satisfac
o anumită condiţie, specificată explicit în cadrul
operaţiei.
Extensia relaţiei R3 va conţine combinaţiile acelor
tupluri care satisfac condiţia de concatenare.
Tipuri de jonctiuni
Interna (inner)
De egalitate
Naturala
De neegalitate
Externa (outer)
La stanga
La dreapta
Completa
Tipuri de jonctiuni
Jonctiunea de egalitate si
naturala
R1 ⋈ R2
JOIN (R1, R2, condiţie)
JOIN (R1, R2, condiţie) = RESTRICT (PRODUCT (R1,
R2), condiţie)
Jonctiunea de egalitate
Operaţie definită pe două relaţii, R1 şi R2, prin care
este construită o nouă relaţie, R3, a cărei schemă este
obţinută prin reuniunea atributelor din relaţiile
iniţiale iar extensia acesteia conţine tuplurile obţinute
prin concatenarea tuplurilor din R1 cu tuplurile din R2
care au aceleaşi valori pentru atributele folosite in
conditia de jonctiune
Jonctiunea de egalitate
Angajati Comenzi
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);
Jonctiunea naturala
Presupune existenta unor atribute avand aceeasi
denumire in ambele relatii
SELECT * FROM angajati a natural join comenzi c
Jonctiunea externa
Operaţie prin care din două relaţii, R1 şi R2, se obţine o
nouă relaţie, R3, prin joncţiunea relaţiilor R1 şi R2,
relaţie la care sunt adăugate şi tuplurile din R1 şi/sau
R2 care nu au participat la joncţiune.
Aceste tupluri sunt completate în relaţia R3 cu valori
NULL pentru atributele relaţiei corespondente (R2,
respectiv R1).
R1 ⋈ R2
EXT-JOIN (R1, R2)
Jonctiunea la stanga
Jonctiunea la dreapta
Jonctiunea completa