Sunteți pe pagina 1din 10

31.10.

2013

ACADEMIA DE STUDII ECONOMICE BUCURETI


FACULTATEA DE CIBERNETIC, STATISTIC I INFORMATIC ECONOMIC

BAZE DE DATE
Modelul de date
relaional

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

Reprezint un ansamblu de valori, caracterizat


printr-un nume.

Un domeniu se poate defini:


explicit,

prin enumerarea tuturor valorilor aparinnd

acestuia
implicit,

prin precizarea proprietilor pe care le au


valorile din cadrul domeniului respectiv
Exemplu:
D1 : {"F", "M" }
D2 : {x | x N, x [0, 100]}
D3 : {s | s=ir de caractere}

Pentru un ansamblu de domenii D1, D2, ..., Dn


produsul cartezian al acestora reprezint
ansamblul tuplurilor <v1, v2, ..., vn>, unde: v1 este
o valoare aparinnd domeniului D1, v2 este o
valoare din D2 .a.m.d.
De exemplu, tuplurile:
<"Maria", "F", 50>,
<"Vasile", "M", 15>,
<"Vasile", "M", 20>,
<"Vasile", "F", 100>
aparin produsului cartezian: D3 D1 D2.

Relaia reprezint un subansamblu al produsului


cartezian al mai multor domenii, care este caracterizat
printr-un nume i conine tupluri cu semnificaie.

ntr-o relaie, tuplurile trebuie s fie distincte (nu se admit


duplicri).
S presupunem c se acord o anumit semnificaie
valorilor domeniilor D1, D2, D3.
Numai unele dintre tuplurile produsului cartezian: D3 D1 D2
pot avea o semnificaie i anume cele care conin numele,
sexul i vrsta aceleiai persoane

31.10.2013

Atributul

Relaia

R : {<a, 1, >, <b, 2, >}


Reprezentare ca tabel bidimensional

Atributul reprezint coloana unei tabele de date,


caracterizat printr-un nume. Numele coloanei
(atributului) exprim, de regul, semnificaia valorilor
din cadrul coloanei respective.

D3

D1

D2

Tuplul

Extensia unei relaii: ansamblul tuplurilor care


compun la un moment dat relaia
Numrul tuplurilor dintr-o relaie reprezint cardinalul
relaiei, n timp ce numrul valorilor dintr-un tuplu
definete gradul acesteia.

Tuplul reprezint linia unei tabele de date i nu are


nume.

Cheia

Schema unei relaii

Aceasta este alctuit din numele relaiei, urmat


de lista atributelor, pentru fiecare atribut
precizndu-se domeniul asociat.

R (A1:D1, ..., An:Dm)

R:

A1:D1

...

An:Dm

Cheia desemneaz un atribut sau un ansamblu de


atribute care are rolul de a identifica o nregistrare
dintr-o tabel.

R A1

Operatorii modelului relaional

Operatori din algebra relaional (AR);


Operatori din calculul relaional (CR).

Algebra relaional

Introdus de E.F.Codd ca o colecie de operaii pe


relaii n care operatorii descriu tipuri de prelucrri
asupra relaiilor, operanzii sunt relaii, iar rezultatul
este, de asemenea, o relaie.
Operatori

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

Definit asupra unei relaii R, proiecia const din


construirea unei noi relaii P, n care se regsesc
numai acele atribute din R specificate explicit n
cadrul operaiei.
Implic efectuarea unor tieturi verticale asupra
relaiei R i care pot avea ca efect apariia unor
tupluri duplicate, care se cer a fi eliminate.
Se trece de la o relaie de grad n la o relaie de grad
p, mai mic dect cel iniial (p < n), adic de la un
spaiu de n dimensiuni la unul cu mai puine
dimensiuni, ceea ce explic i numele de proiecie.

31.10.2013

Proiecia

Exemplu SQL

Ai,, Am (R)
R[Ai,..., Am]
PROJECT(R, Ai,..., Am)

ANGAJATI

SELECT DISTINCT varsta, salariu


FROM angajati;

Reprezint operaia definit asupra unei relaii


R, care const din construirea unei relaii S, cu
aceeai schem ca R i a crei extensie este
constituit din acele tupluri din R care satisfac
condiia menionat explicit n cadrul operaiei.

Implic efectuarea de tieturi orizontale asupra


relaiei R, adic eliminarea unor tupluri ale
relaiei.

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

Este o operaie definit pe dou relaii, R1 i R2.

Pe baza relaiilor R1 i R2 se construiete o nou


relaie, R3, a crei schem se obine prin
concatenarea schemelor relaiilor R1 i R2 i a
crei extensie cuprinde toate combinaiile
tuplurilor din R1 cu cele din R2.

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

Intern (inner join)


De

egalitate
Natural
De neegalitate

Extern (outer join)

Exemplu SQL

Jonciune

SELECT *
FROM angajati, comenzi;

SELECT *
FROM angajati CROSS JOIN comenzi;

Reprezint operaia definit pe dou relaii, R1 i


R2, care const din construirea unei noi relaii
R3, prin concatenarea unor tupluri din R1 cu
tupluri din R2, pe baza unei condiii specificate
explicit n cadrul operaiei.

Extensia relaiei R3 va conine combinaiile


acelor tupluri care satisfac condiia de
concatenare.

Tipuri de jonciuni

Jonciunea de egalitate i natural


R1 R2
JOIN (R1, R2, condiie)
JOIN (R1, R2, condiie) = RESTRICT
(PRODUCT (R1, R2), condiie)

La

stnga
dreapta
Complet
La

31.10.2013

Jonciunea de egalitate

Presupune existena unor atribute avnd


aceeai denumire n ambele relaii

SELECT *
FROM angajati a NATURAL JOIN comenzi c;

Comenzi

Angajati

Operaie definit pe dou relaii, R1 i R2, prin


care este construit o nou relaie, R3, a crei
schem este obinut prin reuniunea atributelor
din relaiile iniiale;
Extensia relaiei R3 conine tuplurile obinute prin
concatenarea tuplurilor din R1 cu tuplurile din R2
care au aceleai valori pentru atributele folosite
n condiia de jonciune.

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

Operaie prin care din dou relaii, R1 i R2, se


obine o nou relaie, R3, prin jonciunea relaiilor
iniiale
La noua relaie R3 sunt adugate i tuplurile din
R1 i/sau R2 care nu au participat la jonciune.
Aceste tupluri sunt completate n relaia R3 cu
valori
NULL
pentru
atributele
relaiei
corespondente (R2, respectiv R1).
R1 R2
EXT-JOIN (R1,

R2, condiie)

31.10.2013

ACADEMIA DE STUDII ECONOMICE BUCURETI


FACULTATEA DE CIBERNETIC, STATISTIC I INFORMATIC ECONOMIC

Jonciunea la dreapta

Jonciunea complet
BAZE DE DATE
Modelul de date
relaional (2)

BUCURETI
2013-2014

Reuniunea

Exemplu UNION

Este o operaie definit pe dou relaii, R1 i R2,


ambele cu aceeai schem, prin care se obine
o nou relaie R3, cu schema identic cu R1 i
R2, dar avnd ca extensie tuplurile din R1 i R2,
luate mpreun o singur dat.
R1 R2
OR

Clienti Angajati

Exemplu UNION ALL

Clienti Angajati

Clienti Angajati

(R1, R2)

APPEND (R1,
UNION (R1,

R2)
R2)

31.10.2013

Diferena

Diferena

Este o operaie definit pe dou relaii, R1 i R2,


ambele cu aceeai schem, prin care se obine o
nou relaie, R3, cu extensia format din acele
tupluri ale relaiei R1 care nu se regsesc i n
relaia R2.

Ce afieaz?

NU!
DE CE?
Clienti Comenzi
Clienti Comenzi

R1

R2

REMOVE

(R1, R2)
R2)

MINUS (R1,

DA

Intersecia

Intersecia

Ce afieaz?

Reprezint o operaie definit pe dou relaii, R1


i R2 ambele cu aceeai schem, prin care se
obine o nou relaie, R3, cu schema identic cu
a relaiilor operand i cu extensia format din
tuplurile din R1 i R2.
Clienti Comenzi

R1

R2

INTERSECT (R1,
AND

R2)

(R1, R2)

31.10.2013

Ali operatori

Calculul relaional

Diviziunea
Complementarea
Spargerea unei relaii
nchiderea tranzitiv

Introdus, ca i algebra relaional de ctre E.F.


Codd.

Este o adaptare a calculului cu predicate de


ordinul 1 (domeniu al logicii matematice) la
domeniul bazelor de date relaionale.

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

Predicatul este o relaie care se stabilete ntre


anumite elemente i care are drept argumente
variabile care nu sunt predicate.

Restriciile de integritate

Restriciile de integritate, denumite i reguli de


integritate, definesc cerinele pe care trebuie s
le satisfac datele din cadrul bazei de date
pentru a putea fi considerate corecte i coerente
n raport cu domeniul pe care l reflect.

Calcul relaional orientat

pe tuplu
pe domeniu

Restriciile de integritate

Restricii structurale (minimale):


De

unicitate a cheii

Referenial
Entitii

Restricii de comportament:
De

domeniu

Temporare

31.10.2013

Restricia de unicitate a cheii


Impune ca ntr-o relaie R, care are cheia K,
oricare ar fi tuplurile t1 i t2 s fie satisfcut
inegalitatea: t1(K) t2(K).
Aceast inegalitate semnific faptul c ntr-o
relaie nu pot exista dou tupluri cu aceeai
valoare pentru atributele cheie.
Cheia unei relaii trebuie s fie minimal, n
sensul c nicio parte a sa nu trebuie s aib
proprietatea de identificare unic a tuplurilor
relaiei.

Restricia entitii

Restricia de unicitate a cheii

Restricia referenial

Cheia primar

Simpl
Compus

Cheia candidat

ANGAJATI
Marca
CNP
Nume
Prenume
Data_angajare
Salariu
Departament

Cheie primar simpl


Cheie candidat

ANGAJATI

ISTORIC_FUNCTII
Marca
Data_inceput
Data_sfarsit
Id_functie

Marca
CNP
Nume
Prenume
Data_angajare
Salariu
Departament

Cheie primar compus

NOT NULL

Domeniul

UNIQUE

Temporare

PRIMARY KEY

se compar cu nite valori


temporare (rezultate din calcule etc.).

Valorile anumitor atribute


ANGAJATI
ISTORIC_FUNCTII
Marca
CNP
Nume
Prenume
Data_angajare
Salariu
Departament

Cheie primar
Cheie candidat, Not null
Not null
Not null
Not null

Marca
Data_inceput
Data_sfarsit
Id_functie

Cheie primar compus

Marca
CNP
Nume
Prenume
Data_angajare
Salariu
Departament

Marca
Data_inceput
Data_sfarsit
Id_functie
>=1000, <= 5000
FIN, IT,CONTA

Cheie primar compus


Marca cheie externa
Cheie extern

nu permite valori NULL (nespecificate) n coloanele unei tabele;


nu permite valori duplicat n coloanele unei tabele;
nu permite valori duplicate sau NULL n coloana sau coloanele
definite astfel;

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

Alte restricii de integritate

Restricia entitii reprezint restricia de


integritate care impune ca ntr-o relaie, anumite
atribute sa fie nenule.

Un atribut sau un grup de atribute dintr-o relaie R1 ale


crui/cror valori sunt definite pe acelai/aceleai
domeniu/domenii ca i cheia primar a unei alte relaii,
R2 i care are rolul de a modela asocierea ntre entitile
reprezentate cu ajutorul relaiilor R1 i R2.
R1 i R2 nu trebuie s fie neaprat distincte.

presupune ca fiecare valoare din coloana sau setul de coloane


definit astfel s aib o valoare corespondent identic n tabela de
legtur, tabel n care coloana corespondent este definit cu
restricia UNIQUE sau PRIMARY KEY;

CHECK

elimin valorile care nu satisfac anumite cerine (condiii) logice.

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...

Baze de date relaionale

10

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