Sunteți pe pagina 1din 35

Cursul

4
Modelul relational, partea a 2-a
Obiective
—  Înțelegerea conceptelor modelului relațional

—  Înțelegerea componentelor modelului relațional


Modelul relational
I.  Structura relaţională
II.  Operatorii relationali
III.  Restrictiile de integritate
Structura relationala
1.  Domeniu
2.  Relație
3.  Atribut
Restrictii de integritate
—  Chei
—  Unice

—  Compuse

—  Candidate

—  Primare

—  Surogat

—  Non-unice
—  Externa

—  Not Null - fiecare valoare dintr-o coloană nu trebuie să


fie NULL
—  Check - este specificată o expresie, care trebuie sa fie
adevărata pentru ca restrictia să fie îndeplinită
Restrictia de unicitate a cheii
Restrictia referentiala (cheia
externa)
—  Un atribut sau un grup de atribute dintr-o relaţie R1 ale
cărui/căror valori sunt definite pe acelaşi/aceleaşi
domeniu/domenii ca şi cheia primară a unei alte relaţii, R2
şi care are rolul de a modela asocierea între entităţile
reprezentate cu ajutorul relaţiilor R1 şi R2.
—  R1 şi R2 nu trebuie să fie neapărat distincte.

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

Clauze în comanda SELECT Descriere


restricţionează liniile care se returnează pe baza unui
WHERE condiţie criteriu specificat în condiţia de selecţie
structurează rezultatul într-o manieră ierarhică
clauze de ordonare ierarhică (asemănător cu o organigramă)
grupează liniile în scopul identificării valorilor comune
GROUP BY coloane_grupare grupurilor (valori agregate calculate prin funcţii de
grup)
restricţionează grupurile create prin clauza GROUP
HAVING condiţie BY pe baza unei condiţii asupra funcţiilor de grup
ORDER BY coloane_ordonare sortează liniile (implicit ascendent)

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

S-ar putea să vă placă și

  • Diagrama
    Diagrama
    Document1 pagină
    Diagrama
    Stefanica Daniel
    Încă nu există evaluări
  • Grile FMO
    Grile FMO
    Document114 pagini
    Grile FMO
    Başchir Camelia
    Încă nu există evaluări
  • Test 1-Barem
    Test 1-Barem
    Document9 pagini
    Test 1-Barem
    Stefanica Daniel
    Încă nu există evaluări
  • Grile FMO
    Grile FMO
    Document114 pagini
    Grile FMO
    Başchir Camelia
    Încă nu există evaluări
  • T80 - Protectia BD
    T80 - Protectia BD
    Document23 pagini
    T80 - Protectia BD
    Andreea Matei
    Încă nu există evaluări
  • T12-Crearea BD PDF
    T12-Crearea BD PDF
    Document23 pagini
    T12-Crearea BD PDF
    Aitul
    Încă nu există evaluări
  • BAZE DE DATE c12
    BAZE DE DATE c12
    Document33 pagini
    BAZE DE DATE c12
    Stefanica Daniel
    Încă nu există evaluări
  • BAZE DE DATE c10
    BAZE DE DATE c10
    Document28 pagini
    BAZE DE DATE c10
    Stefanica Daniel
    Încă nu există evaluări
  • BAZE DE DATE c12
    BAZE DE DATE c12
    Document33 pagini
    BAZE DE DATE c12
    Stefanica Daniel
    Încă nu există evaluări
  • BAZE DE DATE c11
    BAZE DE DATE c11
    Document12 pagini
    BAZE DE DATE c11
    Stefanica Daniel
    Încă nu există evaluări
  • BAZE DE DATE c8
    BAZE DE DATE c8
    Document39 pagini
    BAZE DE DATE c8
    Stefanica Daniel
    Încă nu există evaluări
  • BAZE DE DATE c9
    BAZE DE DATE c9
    Document26 pagini
    BAZE DE DATE c9
    Stefanica Daniel
    Încă nu există evaluări
  • BAZE DE DATE C6si7
    BAZE DE DATE C6si7
    Document39 pagini
    BAZE DE DATE C6si7
    Stefanica Daniel
    Încă nu există evaluări
  • BAZE DE DATE c5
    BAZE DE DATE c5
    Document26 pagini
    BAZE DE DATE c5
    Stefanica Daniel
    Încă nu există evaluări
  • BAZE DE DATE c3
    BAZE DE DATE c3
    Document13 pagini
    BAZE DE DATE c3
    Stefanica Daniel
    Încă nu există evaluări
  • BAZE DE DATE c2
    BAZE DE DATE c2
    Document16 pagini
    BAZE DE DATE c2
    Stefanica Daniel
    Încă nu există evaluări