Sunteți pe pagina 1din 55

Modelarea datelor

• Un model este o abstractizare a unui sistem:

• Captează trăsăturile principale ale unui sistem (concepte) - tehnica de identi care a acestor trăsături se
numește abstractizare.

• Conceptele trebuie sa e relevante din punct de vedere al scopului pentru care se de nește modelul respectiv

• Un model de date stabile te regulile de organizare i interpretare a unei colec ii de date i se reprezint prin:

• Mul imi de entit i

• Asocieri între mul imi de entit i

• În proiectarea bazelor de date se folosesc 2 categorii de modele:

• Modele conceptuale de nivel înalt (modelul Entitate-Asociere, modelul Entitate-Asociere Extins)– descriu
concis mul imile de entit i i asocierile dintre acestea, f r s speci ce modul de structurare sau de prelucrare
a datelor; se reprezint printr-o - schem conceptual de nivel înalt.

• Modele de structurare a datelor (modelul ierarhic, modelul re ea, modelul rela ional, etc.) - descriu
reprezentarea mul imilor de entit i i asocierile dintre acestea prin anumite structuri de date (arbori, grafuri,
tabele) - se reprezint printr-o schem conceptual (logic ).

10








fi


















fi


fi
fi



Modelul entitate-asociere
• Modelul Entitate-Asociere (Entity-Relationship Model) de neste multimile de entit i i asocierile
dintre ele, dar nu impune nici un mod speci c de structurare i prelucrare (gestiune) a datelor
(introdus în 1976 de P.S. Chen).

• O entitate (entity) este „orice există în realitatea obiectivă și poate identi cat în mod distinctiv“ -
exemple: o persoana, o planta, o activitate, un concept etc.

• Un atribut (attribute) este o proprietate care descrie un anumit aspect al unei entit i - exemple:
persoanele au nume, prenume, adresa etc.

• Tip de entitate (entity type): se referă la entit țile similare, care pot descrise prin aceleași atribute -
exemple: tipul persoana, tipul planta.

• Multime de entități (entities set): colec ia tuturor entit ilor de acela i tip dintr-o baz de date
constituie o mul ime de entit i - exemple: mulțimea tuturor persoanelor, mulțimea tuturor plantelor.

• O entitate este o instanță a unui tip de entitate și un element al mulțimii de entități de acel tip. În
exprimarea curentă, adeseori nu se face diferențierea dintre entitate, tip de entitate și mulțime de
entități, dar diferența este evidentă. A se vedea asemănarea cu modelul obiect: tip de entitate -
clasă; entitate - obiect.

11





fi


fi

fi
fi

fi






Asocieri
• O asociere (relationship) este o leg tur (coresponden ) între entit i din dou sau mai multe mul imi de entit i; asocierile
pot avea atribute.

• Tipul asocierii (relationship type) – se referă la asocierile similare, care pot de nite între entități din dou sau mai multe
mulțimi de entități.

• Mulțime de asocieri (relationship set): multimea asocierilor de acelasi tip.

• O asociere este o instanță a unui tip de asociere și un element al mulțimii de asocieri de acel tip.

• În exprimarea curentă, adeseori nu se face diferențierea dintre asociere, tip de asociere si mulțime de asocieri, dar diferența
este evidentă.

• Gradul unui (tip de) asociere (degree): num rul de mul imi de entit i asociate; dupa grad, asocierile pot :

• Binare (de gradul 2, între 2 mul imi de entit i) – majoritatea asocierilor;

• Multiple (între k mul imi de entit i, k > 2).

• Categorii (tipuri) de asocieri binare - dup num rul elementelor din ecare dintre cele dou mul imi puse în coresponden :

• “unul-la-unul” (one-to-one) – 1:1; exemplu: soț-soție;



”unul-la-multe” (one-to-many) – 1:N; exemplu: părinte- i;

“multe-la-unul” (many-to-one) – N:1; exemplu: i-părinte;

“multe-la-multe” (many-to-many) – M:N; exemplu: profesori-studenti;

12











fi
fi



fi




fi

fi



fi





Cardinalitatea asocierilor
• Cardinalitatea (multiplicitatea) unei asocieri fa de o mul ime de entit i
(cardinality, multiplicity) este num rul maxim de elemente din acea mul ime
care pot asociate cu un element din alt mul ime a asocierii.

• Exemplu: asocierea “unul-la-multe” dintre mul imile A i B prezint


multiplicitatea 1 fa de mul imea A i multiplicitatea N (se în elege o valoare
oarecare N > 1) fa de mul imea B.

• Raport de cardinalitate (cardinality ratio): raportul dintre valorile


cardinalit ilor unei asocieri fa de dou din mul imile de entit i asociate.

• Exemple pentru asocieri binare: 1:1, 1:N, N:1, M:N.

• Asocierile multiple (k-are, k > 2) prezint câte un raport de cardinalitate pentru


ecare pereche de mul imi de entit i pe care le asociaz .

15
fi
fi

































Diagrama entitate-asociere
• Diagrama Entitate-Asociere (Entity-Relationship Diagram) reprezint gra c
modelul Entitate-Asociere prin mul imile de entit i i asocierile dintre acestea.

• Multimi de entități de acela i tip:

• Puternice (de sine stătătoare);

• Slabe (depind de alte mulțimi de entități).

• Notații:

Diagrama E-A

16






fi
Exemplu de diagramă entitate-asociere (1)
• Mulțimi de entități puternice:

• SECTII(Numar, Nume, Buget)

• ANGAJATI(Nume, Prenume, DataNasterii, Adresa, Functie, Salariu)

• PROIECTE(Denumire, DataInceperii, Termen, Buget) etc.

• Multimi de entități slabe: DEPENDENTI(Nume, Prenume, DataNasterii,


GradRudenie).

Exemplu de diagrama E-A

17
Exemplu de diagramă entitate-asociere (2)
• Asocieri:
• Asocierea SECTII - ANGAJATI - 1:N;

• Asocierea ANGAJATI - PROIECTE - M:N;

• Asocierea ANGAJATI - DEPENDENTI - 1:N.

• Raportul de cardinalitate al unei asocieri este stabilit de proiectant astfel încât s re ecte
cât mai corect modul de organizare a activit ii modelate

• Modul de stabilire a tipurilor de entit i i a asocierilor nu este unic: aceea i func ionalitate
se poate ob ine printr-o varietate de diagrame E-A.

• O mul ime de entit i se denumește printr-un substantiv, iar o asociere se denumeste (de
regul ) printr-un verb, deoarece o asociere reprezint o interac iune între entit i.

• Modelul E-A nu precizeaz modul în care sunt realizate asocierile între mul imile de entit i:
acest aspect depinde de modelul de structurare a datelor utilizat pentru baza de date:

• în modelul ierarhic i re ea asocierile sunt realizate prin pointeri de la o entitate la


entit ile asociate;

• în modelul rela ional asocierile se realizeaz prin egalitatea valorilor unor atribute
comune ale mulțimilor de entit i (chei);

• în modelul obiect-rela ional asocierile se reprezint prin referin e care folosesc


indenti catori unici ai obiectelor.

18




fi


























fl


Modelul entitate-asociere extins
• Modelul Entitate-Asociere Extins (Enhanced Entity-Relationship Model) permite de nirea
de subtipuri ale unui tip de entit i, care mo tenesc atribute de la tipul de entitate respectiv.

• Crearea ierarhiilor: specializare si generalizare.

• Tipurile i a subtipurile formează ierarhii de tipuri de entit i complexe, organizate pe mai


multe niveluri.

Exemplu de diagrama entitate-asociere extinsă

19






fi
Definiții - relații, atribute și domenii de definiție
• Modelul rela ional a fost propus de E.F.Codd în anul 1970 – IBM.

• O baz de date relațional este compus dintr-o mulțime nit de relații

• ecare relație reprezintă o mul ime (tip) de entităti sau o mul ime (tip) de asocieri

• ecare rela ie este unică într-o bază de date

• o rela ie se de nește prin intermediul atributelor sale

• Atributele unei relații corespund atributelor tipului de entitate sau de asociere pe care îl
reprezint relația respectiv

• ecare atribut are un nume (Ai) i un domeniu de de niție D(Ai)

• pentru o entitate dată, un atribut poate lua o singur valoare (scalar)

• Atributele pot : simple (un element) sau compuse (o submul ime de atribute)

• Domeniu: o mul ime de valori D = {di | i = 1,..., n }, de nit printr-o speci care de tip, unde:

• D este numele domeniului

• di este un element al domeniului care satisface anumite constrângeri

• Elementele domeniilor sunt atomice (indivizibile)

• O valoare specială, null, poate aparține oricărui domeniu (înseamna lipsa de informație
sau valoare necunoscută)

3
fi
fi
fi





fi
fi







fi
fi
fi



fi
Schema relației
• Schema relației: descriere a unei relații (tipul, intensiunea relației)

• Schema relației: R(A1,A2,...Ai,...An), unde:

• R este numele schemei relației

• lista ordonat a atributelor sale A1,A2,…Ai,..An

• ecare atribut Ai de nit pe domeniul s u de de niție, D(Ai)

• Gradul relației: num rul de atribute ale schemei acelei rela ii (n)

• Exemplu: STUDENTI (Nume, Prenume, DataNasterii, Adresa, Facultatea)

• O relație r de nita prin schema R(A1,A2,...Ai,...An) este:

• o mulțime nită de n-tupluri t

• tuplul t este o list ordonat de n valori: t = <v1,v2,...vi,...vn>, unde 1 ≤ i ≤ n

• vi este o valoare a atributului Ai, vi ∈ D(Ai)

• Rela ia r(R): r este variabilă, instantă a schemei (tipului) R

• Valoarea variabilei: starea sau extensiunea rela iei

• Numărul de tupluri ale unei rela ii: cardinalitatea rela iei

• Fiecare tuplu este unic într-o rela ie (nu există tupluri duplicat)

• Corespondența: rela ie -> mul ime de entități (sau de asocieri); tuplu -> entitate

• În mod curent: se foloseste R atât pentru schema cat i pentru rela ia însăși
4
fi

fi

fi

fi








fi




Afișarea tabelelor
• SGBD-urile ofer instrumnente de proiectare i a sare a tabelelor

• De exemplu, a area tabelului CURSE din baza de date zboruri folosind utilizarul MySql Workbench:

Exemplu de interogare a tabelului CURSE din baza de date zboruri

6
fi



fi
Ordonarea valorilor atributelor în tupluri
• Din punct de vedere logic, ordinea valorilor atributelor într-un tuplu nu contează. Aceast structurare poate
exprimat prin urm toarele de niții:

• Schema relației: R = {A1,A2, ...Ai,...An} (o mulțime de atribute)

• Relația r(R): o mulțime de n-tupluri t, unde:

• ecare tuplu t este o mulțime de n perechi ordonate <Ai,vi>, unde 1 ≤ i ≤ n,

• t = {<A1,v1>,<A2,v2>,...<Ai,vi>, …<An,vn>},

• vi este valoarea atributului Ai, vi ∈ D(Ai).

• Observa ii asupra celor dou de ni ii:

• Prima de ni ie simpli c notațiile și corespunde reprezent rii prin tabel a relației și de aceea va folosit în
continuare destul de frecvent

• A doua de ni ie a relației este mult mai general decat prima de nitie

• În implement rile reale, exist o anumit ordine a valorilor atributelor memorate în iere, dar aceasta nu este
relevant din punct de vedere logic

7
fi



fi
fi




fi



fi
fi




fi
fi


fi

fi
Convenții de notație
• Pentru prezentarea limbajului SQL i a altor limbaje, biblioteci i interfețe se folosesc urm toarele conven ii:

Conveții de notație

• Caracterele folosite pentru a speci ca o anumit convenție sintactic (paranteze, bara vertical , virgula, etc.) nu
apar în instrucțiunile propriu-zise.

• Listele de elemente (compuse din elemente separate prin virgul ) vor reprezentate folosind una cele trei din
construc iile de mai sus.

17


fi




fi



Instucțiuni SQL
• Componenta de de nire a datelor din SQL (LDD - Limbajul de De nire a Datelor):

• Crearea (CREATE), modi carea (ALTER) și distrugerea (DROP) obiectelor bazei de date;

• Obiectele bazei de date sunt: tabele de baz (TABLE), tabele vedere (VIEW), indecși (INDEX),
proceduri (PROCEDURE), triggere (TRIGGER), utilizatori (USER).

• Exemple de comenzi SQL de de nire a datelor:

• CREATE TABLE, CREATE VIEW, CREATE INDEX, CREATE USER CREATE FUNCTION,
CREATE TRIGGER, CREATE PROCEDURE

• ALTER TABLE, ALTER VIEW, ALTER FUNCTION, ALTER PROCEDURE DROP TABLE, DROP
VIEW, DROP INDEX, DROP USER, DROP FUNCTION, DROP PROCEDURE, DROP TRIGGER

• Componenta de manipulare a datelor din limbajul SQL (Limbajul de Manipulare a Datelor - LMD)
conține comenzile: SELECT, INSERT, UPDATE i DELETE.

• Instrucțiunile SQL se transmit SGBD-ului:

• de c tre diferite programe client (client gra c, linie de comandă, program executabil);

• SGBD-ul compileaz i execut instrucțiunea SQL;

• returneaz un r spuns (rezultatul opera iei sau un cod de eroare).


18



fi


fi

fi

fi


fi
Clauzele secundare - funcțiile agregat
• Clauzele secundare sunt: ORDER BY, GROUP BY, HAVING

• Clauza ORDER BY speci c numele atributului dup care se face ordonarea liniilor tabelului rezultat

• SELECT * FROM city order by CountryCode;


• Ordonarea:

• în ordine crescătoare: parametrul ASC (implicit);

• în ordine descrescatoare: DESC.

• Exemplu: SELECT * FROM city order by CountryCode DESC;


• Clauzele GROUP BY i HAVING se folosesc împreun cu func iile agregat. Funcțiile agregat de nite în
limbajul SQL2 sunt urm toarele:

Funcțiile agregat disponibile în SQL

25


fi




fi
Instrucțiunea INSERT
• Instruc iunea INSERT se folosește pentru introducerea datelor în tabele și are urm toarea sintax :

• INSERT INTO nume_tabel (col1,col2,...coln) VALUES(val1,val2,...valn);


• Între valori i numele de coloane trebuie s existe o corespondență pozițională. De exemplu, inserarea
unei linii în tabelul SECTII(Numar, Nume, Buget):

INSERT INTO SECTII (Numar, Nume, Buget) VALUES (1,‘Productie’, 40000);
• Lista de coloane poate s lipseasc dac se introduc valori în toate coloanele tabelului i în aceast
situație:

• ordinea valorilor introduse trebuie s respecte ordinea coloanelor tabelului

• ordinea coloanelor provine din ordinea de de nire a atributelor prin instrucțiunea CREATE TABLE,
precum i din opera iile ulterioare de alterare a tabelului

• ordinea coloanelor se poate a a prin instrucțiunea DESCRIBE nume_tabel.

• De exemplu, introducerea unei linii cu toate valorile în tabelul ANGAJATI(IdAngajat, Nume, Prenume,
DataNasterii, Adresa, Functia, Salariu)

• INSERT INTO ANGAJATI VALUES(100,‘Mihailescu’, ‘Mihai’,‘1950-04-05’,‘Craiova’,’inginer’, 3000);

• Dac nu se speci c valori pentru toate atributele, cele nespeci cate primesc valoare implicit
(DEFAULT), dac a fost speci cat sau NULL (dac este acceptat ); altfel se returnează eroare:

• INSERT INTO ANGAJATI(IdAngajat, Nume, Prenume, Adresa, Functia) VALUES(100,‘Spiridon’, ‘Ion’,


‘Ploiesti’,’inginer');
27





fi



fi
fl





fi


fi





Instrucțiunile UPDATE și DELETE
• Instrucțiunea UPDATE permite actualizarea valorilor coloanelor (atributelor) din una sau mai
multe linii ale unui tabel i are sintaxa:

• UPDATE nume_tabel SET col1 = expr1 [, . . . n] [WHERE conditie];


• Clauza WHERE: actualizarea valorilor se efectueaza numai asupra acelor linii care îndeplinesc
condi ia dat . Exemplu:

• UPDATE ANGAJATI SET Adresa = ‘Bucuresti’ WHERE Nume = ‘Popescu’;

• Dac este omis clauza WHERE, vor modi cate valorile coloanelor din toate liniile tabelului.

• Instrucțiunea DELETE permite ștergerea uneia sau mai multor linii dintr-un tabel și are sintaxa:

• DELETE FROM nume_tabel [WHERE conditie];

• Din tabel se șterg acele linii care îndeplinesc condiția dat în clauza WHERE.

• Dac este omis clauza WHERE, vor șterse toate liniile din tabel

• Exemplu:

• DELETE FROM ANGAJATI WHERE Nume =‘Ionescu’;


• Pentru siguranță, se preferă manipularea masivelor de date cu ajutorul instrucțiunilor
UPDATE și DELETE doar în interiorul tranzacțiilor (pentru a se permite rularea instrucțiunii
ROLLBACK - de anulare - în cazul în care s-au efectuat operații greșite)
28







fi
fi
fi

Constrângeri de integritate (2)
• Clasi care din punct de vedere al modului de de nire i de veri care a respect rii
constrângerilor: inerente, implicite și explicite.

• Constrângerile inerente sunt cele ale modelului de date însuși, care nu trebuie s e
de nite deoarece sunt incluse în sistemul de gestiune.

• De exemplu: în modelul relațional constrângerea ca valoarea ec rui atribut s e


atomic (indivizibil ) este o constrângere inerent .

• Constrângerile implicite sunt reguli speci ce ec rui sistem de gestiune; acestea se


de nesc de c tre proiectantul bazei de date, iar sistemul de gestiune le veri c și le
impune automat.

• Fiecare SGBD poate are propriile constrângeri implicite, dar, în general constrângerile de
domeniu, constrângerile de tuplu și constrângerile de integritate referențial sunt
constrângeri implicite în orice SGBD.

• Constrângerile explicite sunt constrângeri suplimentare, speci ce bazei de date


respective; proiectantul de ne te constrângerile explicite precum i procedurile de
veri care ale acestora (func ii, proceduri stocate, triggere).

• Exemple: dependențele de date care nu sunt determinate de cheile relațiilor.


30
fi
fi
fi
fi




fi

fi

fi

fi

fi
fi
fi


fi





fi
fi
Constrângeri de domeniu (1)
• Constrângerile de domeniu: constrângerea NOT NULL, constrângerea de valoare implicit (DEFAULT),
constrângerea de veri care (CHECK)

• Constrângerea NOT NULL însemnă c atributul respectiv nu poate lua valoarea NULL în nici un tuplu al relației.

• Valoarea NULL a unui atribut într-un tuplu semni c faptul c valoarea acelui atribut nu este cunoscut pentru acel
tuplu. Exemple:

• nu se cunoaște deloc data de naștere a unei personalități istorice;

• nu se cunoaște valoarea unui atribut în momentul inserării tuplului, dar aceasta va cunoscuta i completat
ulterior.

• La crearea unui tabel opțiunea NULL este implicit (dac nu se speci c nimic), sau se poate introduce explicit
NULL sau NOT NULL; opțiunea NOT NULL se introduce numai explicit.

• Opțiunile NULL i NOT NULL se introduc ca i constrângeri de coloana în instrucțiunea SQL CREATE TABLE.
Exemplu:

CREATE TABLE ANGAJATI(


Nume varchar(20) NOT NULL,
Prenume varchar(20) NOT NULL,
DataNasterii date NULL,
Functie varchar(20),
Salariu numeric
);

31

fi


fi




fi

fi




Constrângeri de domeniu (2)
• Constrangerea de valoare implicit a unui atribut (DEFAULT): dac la inserarea unui tuplu nu se speci c valoarea unui
atribut, atunci:

• atributul primește valoarea implicit (DEFAULT), dac a fost de nit ; ex. Tara

• atributul primește valoarea NULL, dac nu a fost de nit valoare implicit , dar sunt admise valori NULL; ex. DataNasterii

• se genereaz o eroare, dac nu a fost de nit o valoare implicit i nici nu sunt admise valori NULL; ex: Nume

CREATE TABLE STUDENTI(

Nume varchar(20) NOT NULL,

Prenume varchar(20) NOT NULL,

DataNasterii date,

Tara varchar(20) DEFAULT ‘Romania’

);

• Constrângerea de veri care (CHECK) – pentru veri carea valorilor atributelor printr-o condiție care trebuie sa ia valoarea
TRUE.

• Se introduce ca o constrângere de tabel în instrucțiunea CREATE TABLE:

• [CONSTRAINT nume_constrangere] CHECK (conditie); Exemplu:

CREATE TABLE ANGAJATI (


Nume varchar(20) NOT NULL,

Prenume varchar(20) NOT NULL,

Salariu numeric,

CONSTRAINT Veri care_Salariu CHECK (Salariu >= 1500));
• MySql 5.0 nu face veri carea CHECK, chiar dacă admite acest cuvânt cheie.

32

fi
fi
fi




fi

fi

fi

fi





fi

Constrângeri de tuplu
• O relație este o mulțime de tupluri -> tuplurile unei relații trebuie s e distincte (nu pot exista dou sau
mai multe tupluri identice).

• Pentru ca tuplurile unei rela ii s e distincte se folose te câte o cheie primar (primary key) în ecare
rela ie.

• O cheie primar PK a unei rela ii este un atribut (simplu sau compus) al acelei rela ii care are proprietatea
de unicitate, adic ecare valoare a cheii primare este unic în acea rela ie. Aceasta înseamn c :

• Nu exist dou tupluri distincte (diferite) care s aib aceea i valoare a cheii primare (sau
combina ie de valori) pentru orice stare a rela iei, adic :

ti[PK] tj[PK] dac i j, unde ti i tj sunt 2 tupuri diferite ale rela iei.

• Proprietatea de unicitate a cheii primare este o constrângere de integritate a tuplurilor: ecare tuplu poate
identi cat în mod precis.

• Cheia primar trebuie s respecte urm toarele cerin e:

• S e ireductibil : s nu existe o submul ime proprie nevid a cheii PK care s aib proprietatea de
unicitate.

• S e de nit (cunoscut ) pentru orice tuplu din rela ie; de aceea nu se admit valori de NULL
pentru nici unul dintre atributele cheii primare.

• Cheia primar este o constrângere implicit : se de ne te de proiectant la crearea tabelului, iar SGBD-ul
veri c respectarea i men inerea integrit ii tuplurilor:

• La INSERT, tuplul trebuie s aib cheia primar de nit i unic (s nu existe alte tupluri în rela ie cu
aceea i valoare a cheii primare).

• Principial, la UPDATE, se interzice modi carea valorii cheii primare (dar unele SGBD-uri pot să
admit modi carea, cu condi ia ca valoarea cheii modi cate s e unică)
33
fi


fi
fi

fi




fi


fi
fi








fi













fi



fi




fi
fi




fi









fi




fi





fi



fi

Chei primare naturale și artificiale (1)
• Se pot de ni e chei primare naturale, e chei primare arti ciale, cu condi ia ca acestea s
îndeplineasc condi iile de unicitate i ireductibilitate.

• O cheie primar natural este un atribut (simplu sau compus) al rela iei:

• reprezint o proprietate a tipului de entitate (sau asociere) reprezntat de acea rela ie

• are în mod natural valori unice: nu exist dou tupluri cu aceea i valoare a cheii primare,
deoarece nu exist dou entit i cu aceea i valoare a propriet ii respective; de ex. CNP-ul
persoanelor (din relatii precum ANGAJATI, STUDENTI etc.) din Romania.

• O cheie primar arti cial este un atribut (de obicei simplu) care nu reprezint o proprietate a
tipului de entitate sau asociere reprezentat de rela ie, ci se adaugă în schema relației special pentru
identi carea unic a tuplurilor.

• Unicitatea cheii primare arti ciale trebuie s e asigurat de proiectant i SGBD.

• Ireductibilitatea cheii primare arti ciale este asigurat dac este atribut simplu.

• Ex.:ANGAJATI(IdAngajat, CNP, Nume, Prenume, DataNasterii, Adresa, Functia, Salariu)

• IdAngajat este o cheie primar arti cial (de regulă, în MySql se folosește opțiunea
AUTO_INCREMENT)

• Ar putea de nite i chei primare naturale prin atribute simple sau compuse care au
proprietatea de unicitate în anumite condi ii:

• atributul simplu {CNP} – valabil numai pentru persoanele din Romania

• atributul compus {Nume, Prenume, DataNasterii, Adresa} – are prea multe atribute

• Din motive de e cien a opera iilor de identi care a tuplurilor, se prefer chei primare cu un num r
cât mai mic de atribute (atribut simplu).
34
fi

fi
fi

fi
fi

fi







fi



fi



fi


fi



fi


fi
fi






fi










Definirea cheii primare în SQL
• În SQL cheia primar se de nește prin instrucțiunea CREATE TABLE, ca o constrângere de tabel
sau ca o constrângere de coloan .

• De nirea cheii primare ca o constrângere de tabel:

• [CONSTRAINT nume_constrângere] PRIMARY KEY (listă_atribute)

Exemplu:

CREATE TABLE SECTII(
IdSectie BIGINT NOT NULL UNSIGNED AUTO_INCREMENT,
Nume VARCHAR(45) NOT NULL,
Buget numeric,
CONSTRAINT PK PRIMARY KEY(IdSectie));
• Dac cheia primar este simpl (format dintr-un singur atribut), ea se poate speci ca i ca o
constrângere de coloan ; exemplu:

CREATE TABLE SECTII(


IdSectie BIGINT PRIMARY KEY NOT NULL UNSIGNED AUTO_INCREMENT,
Nume VARCHAR(45) NOT NULL,
Buget numeric,
);
Atenție: cuvântul cheie Primary Key se folosește decât odată în interiorul unei instrucțiuni de tip
CREATE TABLE ! Dacă se dorește construcția unei chei primare compuse se va folosi varianta
constrângerii de tabel - CONSTRAINT [Nume_constr_optional] Primary Key(atr1, atr2, … atrN).

36
fi




fi



fi

Menținerea integrității referențiale a relațiilor (2)
• Ștergerea în cascad permite ștergerea unui tuplu din relația referită; dac tuplul șters era referit de
unul sau mai multe tupluri, atunci se șterg și acestea din relația care o refer ; dac tuplurile șterse din
relația care refer sunt, la rândul lor referite de alte tupluri din alte rela ii, atunci trebuie s e șterse și
acestea, etc.; se execut deci o ștegere în cascad .

• Operația UPDATE este o ștergere urmat de o introducere, deci restricțiile de actualizare reprezint
combinația restricțiilor de introducere și de ștergere.

• În limbajul SQL se speci c opțiunile ON DELETE i ON UPDATE constrîngerii de cheie str in ;


valorile posibile ale acestor opțiuni sunt:

• RESTRICT – ștergerea restricționat

• CASCADE – ștergerea în cascad

• SET NULL – setare valoare NULL a cheilor str ine care refereau tuplul ters

• NO ACTION – se admit valori care nu respect integritatea relațional

• Exemplu:

CREATE TABLE Angajati(


• IdAngajat int Primary Key Not Null Auto_Increment,
• Nume varchar(45),
• Prenume varchar(45),
• IdSectie int,
• CONSTRAINT FK FOREIGN KEY(IdSectie) REFERENCES Sectii(IdSectie) ON
DELETE CASCADE ON UPDATE RESTRICT
);

42



fi














fi



Proiectarea relațiilor
• Mulțimile de entități din diagrama E-A devin relații:

• Numele ecărei relații trebuie să e unic în baza de date

• Atributele relației corespund atributelor entităților din mulțimea de entități data

• Cheia primară se de nește:

• e ca o cheie primara naturală (combinație de atribute care de nesc în mod unic un tuplu)

• e ca o cheie primară arti cială

• De exemplu, în relațile ANGAJATI, SECTII, PROIECTE, COMPONENTE, PRODUSE, FURNIZORI,


CLIENTI s-a adăugat câte o cheie primară arti cială (IdAngajat, IdSectie etc.)

• Mulțimile de entități slabe din diagrama E-A devin relații a ate în asociere N:1 cu relația
corespunzătoare mulțimii de entități de care acestea depind

• Pentru realizarea acestei asocieri, în relația dependentă se adaugă o cheie străină care referă cheia
primară a relației puternice referite; de exemplu: cheia straină IdAngajat introdusă in relația
DEPENDENTI . De ex: DEPENDENTI( IdAngajat, Nume, Prenume, DataNasterii, GradRudenie)

• Cheia primară a relației dependente poate :

• o combinație formată din atributul cheie străină și alte atribute care asigură posibilitatea de
identi care unică a unui tuplu sau poate o cheie arti cială. De ex: (IdAngajat, Nume, Prenume)

• sau o cheie primara arti cială (de ex. idDependenti)


10
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
fl
Proiectarea asocierilor binare N:1 (1)
• Asocierea binară N:1 dintre două mulțimi de entități puternice se realizează prin
intermediul unei chei străine introdusă în prima relație (cea cu multiplicitatea N a
asocierii) care referă cheia primară din cea de-a doua relație; exemple:

• Asocierea N:1 între relațiile ANGAJATI - SECTII se realizează prin cheia străină
IdSectie din relația ANGAJATI care referă cheia primară IdSectie din relația SECTII

• Asocierea N:1 între relațiile city-country se realizează prin cheia străină


CountryCode din relația city care referă cheia primară Code din relația country

11
Proiectarea asocierilor binare N:1 (2)
• Asocierea binară N:1 dintre o mulțime de entități slabe și mulțimea de entități
puternice de care depinde se realizează printr-o cheie străină în relația
mulțimii de entități slabe care referă cheia primară a relației mulțimii de entități
puternice.

• Exemplu: asocierea N:1 între relațiile Dependenti si Angajati se realizează prin


cheia străină IdAngajat din relația Dependenti care referă cheia primară
IdAngajat din relația Angajati

12
Proiectarea asocierilor binare M:N (1)
• O asociere binară M:N dintre două mulțimi de entități se realizează cu o nouă relație, numită relație
de asociere.

• Aceasta are rapoartele de cardinalitate M :1, respectiv N :1 cu ecare din cele două relații date, prin
intermediul a două chei străine care referă cheile primare din ecare din cele două relații asociate.

• Cheia primară a unei relații de asociere poate :

• o cheie primară arti cială

• sau poate compusă din cheile străine, eventual împreună cu alte atribute ale relației

• Exemplu: asocierea M:N dintre relațiile COMPONENTE-PRODUSE se realizează cu o relație de


asociere, numită COMPOZITII.

• Relatia COMPOZITII conține cheile străine IdComponenta și IdProdus care referă cheile primare
IdComponenta, IdProdus ale relațiilor Componente, respectiv Produse.

• Cheia primară a relației COMPOZITII este o cheie primară arti cială (IdCompozitii).

13
fi
fi
fi
fi
fi
fi
Proiectarea asocierilor multiple de tip M:N:P
• Asocierea multiplă M:N:P se realizează la fel ca asocierea binară M:N, prin intermediul unei relații de asociere
care se a ă în asociere M:1, N:1, P:1, etc., cu ecare din relațiile date, prin câte o chei străină care referă
cheia primară corespunzătoare.

• Cheia primară a unei relații de asociere multiplă poate :

• O cheie primară arti cială; ex.(a): în relația Vanzari, este de nită cheia primară arti cială idVanzari

• Cheia primară poate compusă din toate cheile străine, eventual împreună cu alte atribute; ex. (b); in
relația de asociere Achizitii cheia primară este formată din toate cheile străine plus atributul DataAchizitiei.

14
fl
fi
fi
fi
fi
fi
fi
Proiectarea asocierilor binare 1:1 (1)
• Asocierea binară 1:1 între două mulțimi de entități puternice se poate transpune în modelul relațional în două
moduri:

• e prin intermediul unei chei străine (caz particular al asocierii 1:N)

• e printr-o relație de asociere (caz particular al unei asocierii M:N).

• e prin intermediul constrângerii UNIQUE selectată pe cheia străină din cadrul asocierii 1:N.

• Exemplu: între relațiile SOTI, SOTII, se realizează o asociere 1:1 cu o cheie străină introdusă într-una dintre relații:

• SOTI (idSOTI, Nume, Prenume, DataNasterii, Adresa)

• SOTII (idSOTII,Nume, Prenume, DataNasterii, Adresa, fkidSOTI)

• Realizarea asocierii 1:1 între două relații folosind o relație de asociere. De exemplu: CASATORII(idSOTI, idSOTII,
DataCasatoriei).

• În ambele soluții, SGBD-ul nu limitează raportul de cardinalitate strict la 1:1, ci acceptă asocieri 1:N, respectiv M:N;
limitarea trebuie asigurată de aplicație.

15
fi
fi
fi
Proiectarea asocierilor binare 1:1 (2)
• Asocierea binară 1:1 dintre o mulțime de entități de subtip și mulțimea de entități supertip se poate
transpune în modelul relațional prin de nirea în relația corespunzătoare subtipului a unei chei străine,
care referă cheia primară din relația se supertip și este în același timp și cheie primară.

• De exemplu: asocierea 1:1 între relația de subtip INGINERI și relația supertipului corespunzător
(ANGAJATI) se realizează prin cheia primară IdAngajati din INGINERI care este și cheie străină și
referă cheia primară IdAngajati din relația ANGAJATI.

• În acest caz, o entitate de subtip este reprezentată prin două tupluri: un tuplu în relația de subtip
(INGINERI) care conține valoarea atributului Specializarea și tuplul referit din relația de supertip
(ANGAJATI) care conține valorile tuturor celorlalte atribute (Nume, Prenume, DataNasterii, Adresa etc.)

• Asocierea este în mod real 1:1, veri cată de SGBD prin veri carea cheilor.

16
fi
fi
fi
Rezumat - proiectarea logică a bazelor de date
• O mulțime de entități se reprezintă printr-o relație.

• Asocierea M:N sau M:N:P... se reprezintă printr-o relație de asociere.

• Asocierea N:1 se reprezintă corect, cu respectarea raportului de cardinalitate, printr-o cheie străină
introdusă în relația cu multiplicitatea N (care referă)

• Asocierea N:1 se poate reprezenta și printr-o relație de asociere, dar, în acest caz, se și poate să
nu e respectat raportul de cardinalitate N:1 dacă nu se prevăd funcții speciale în programul de
aplicație, ceea ce este costisitor ca efort de programare și timp de execuție.

• Asocierea 1:1 între două mulțimi de entități puternice se reprezintă e printr-o cheie străină, (ca un
caz particular al asocierii N:1) e printr-o relație de asociere (ca un caz particular al asocierii M:N)

• În ambele cazuri se poate să nu e respectat strict raportul de cardinalitate 1:1, dacă nu se


prevăd funcții speciale în programul de aplicație. Aici, este recomandabil să se introducă
constrângerea de unicitate pe cheia străină.

• Asocierea 1:1 între o mulțime de subtip și o mulțime de supertip se reprezintă corect printr-o cheie
străină în relația de subtip (care referă cheia primară din relația supertip) și este și cheie primară.

• În orice altă reprezentare (printr-o cheie străină în relația de subtip, dar care să nu e și cheie
primară, sau printr-o relație de asociere) se poate să nu e respectat strict raportul de cardinalitate
1:1, dacă nu se prevăd funcții speciale în programele de aplicație.

• În concluzie, în modelul relațional toate asocierile folosesc chei străine.

17
fi
fi
fi
fi
fi
fi
Proiectarea fizică a bazelor de date
• Fiecare SGBD oferă o mai multe de opţiuni de organizare a șierelor și a
modului de acces la datele stocate:

• Indecși

• Tipuri de șiere

• Gruparea înregistrărilor corelate în aceleași blocuri pe disc (clustering)

• Proiectarea zică a bazei de date este procesul de alegere a acestor structuri


de memorare și de acces la șierele bazei de date, pentru a obține
performanțe cât mai bune pentru SGBD-ul ales, pentru cât mai multe din
aplicațiile proiectate.

• Parametrii generali de alegere a opțiunilor proiectului zic al bazei de date:

• Timpul de răspuns: intervalul de timp dintre lansarea în execuție a unei


tranzacții și primirea răspunsului la acea tranzacții.

• Capacitatea tranzacțională (transaction throughput): numărul mediu de


tranzacții care pot prelucrate pe minut de către sistemul de baze de date.

• Utilizarea spațiului de memorare: dimensiunea spațiului pe disc utilizat de


șierele bazei de date și de structurile de acces la date.
18
fi
fi
fi
fi
fi
fi
fi
Interogarea bazelor de date
m Limbaje de interogare
m Algebra relațională și calculul relațional
m Operațiile pe mulțimi ale algebrei relaționale
• Reuniunea
• Intersecția
• Diferența
• Produsul Cartesian
m Operațiile speciale ale algebrei relaționale
• Selecția
• Proiecția
• Joncțiunea
• Diviziunea
m Interogarea bazelor de date
• Interogarea într-o singură relație
• Interogarea în două sau mai multe relații
2
Limbaje de interogare
m Interogarea (query): operaţia prin care se obţin informațiile dorite dintr-o
bază de date, selectate conform unui anumit criteriu (condiţie);
m Limbaje de interogare: abstracte si “concrete” (reale - implementări în
diferite SGBD-uri)
m Limbaje de interogare abstracte: algebra relațională și calculul relațional
m Algebra relatională (relational algebra) - constă dintr-o mulţime de operaţii
care au ca operanzi relaţii, iar rezultatul este tot o relaţie
m Calculul relaţional (relational calculus) - bazat pe calculul predicatelor -
exprimă o interogare definind rezultatul dorit ca expresie de calcul relaţional
m Calculul relațional al tuplurilor folosește variabile de tuplu (variabile
definite pe mulţimea tuplurilor unei relaţii)
m Calculul relațional al domeniilor folosește variabile de domeniu (variabile
definite pe domenii de definiţie ale atributelor)
m Cele trei limbaje formale sunt echivalente din punct de vedere al
interogărilor
m Limbajele de interogare reale sunt definite pe baza unuia sau altuia din
limbajele de interogare abstracte, sau pe o combinaţie a acestora.
m De exemplu, limbajul SQL2 este în cea mai mare parte bazat pe algebra
relaţională, dar mai conţine şi construcţii derivate din calculul relaţional.
3
Algebră relaţională
Algebra relaţională (relational algebra) - interogările sunt expresii compuse din operatii
care au ca operanzi relatii si rezultatul este o relatie.
• Operatiile algebrei relationale: operatii pe multimi si operatii speciale, la care se
adauga operatia de redenumire (rename) a atributelor (E.Codd).
• Operatiile relationale pe multimi acţionează asupra relaţiilor văzute ca mulţimi (de
tupluri), fără a lua în consideraţie compoziţia fiecărui tuplu; acestea sunt:
Reuniunea
Intersecţia
Diferenţa
Produsul cartezian
• Operaţiile relaţionale speciale iau în consideraţie compoziţia tuplurilor, formate din
valori ale atributelor relaţiilor; acestea sunt:
Restricţia
Proiecţia
Joncţiunea
Diviziunea
• Proprietatea de închidere: operanzii (unul sau doi operanzi) sunt relaţii, rezultatul este
o relaţie; această proprietate permite operaţii imbricate: proiecţia unei joncţiuni etc.

4
Operaţia de reuniune
Reuniunea (union) a două relaţii compatibile r(R) şi s(S):
q = r ∪ s = { t | t ∈ r or t ∈ s}
Pentru ca r si s sa fie compatibile, trebuie ca:
• r si s să aiba acelasi grad (acelasi numar de atribute).
• Atributele corespondente (în ordine pozitională) să fie compatibile.
Tuplurile care aparţin ambelor relaţii se introduc în relaţia rezultat o singură
dată (nu se duplică).
Relatia rezultat are un numar de tupluri (cardinalitatea) mai mic sau egal cu
suma numerelor de tupluri ale celor doi operanzi
Exemplu:

5
Operaţia de intersecţie şi diferenţă
* Intersecţia (set-intersection) a două relaţii compatibile r(R) şi s(S):
q = r ∩ s = { t | t ∈ r and t ∈ s}
Exemplu:

* Diferenţa (set-difference) a două relaţii compatibile r(R) şi s(S):


q = r - s = { t | t ∈ r and t ∉ s}
Exemplu:

* Reuniunea si intersecţia sunt comutative si asociative (r ∪ s = s ∪ r ;


r ∪ (s ∪ t) = (r ∪ s) ∪ t); diferenţa nu este nici nici comutativă, nici asociativă

6
Operaţia de produs cartezian
Produsul Cartesian (Cartesian-Product) a două relaţii r(R) şi s(S):
q = r x s = { tp | t ∈ r and p ∈ s}, Q = R ∪ S
Se presupune că multimile R si S sunt disjuncte, adica R ∩ S = ∅
Daca atributele din R si S nu sunt disjuncte, atunci (unele):
• se pot redenumi (RENAME nume_atribut AS noul_nume_atribut) sau
• se pot califica cu numele relatiei careia ii apartin (folosind operatorul “punct”)
Tuplurile relaţiei rezultat se obtin prin concatenarea valorilor atributelor fiecărui tuplu din
prima relaţie cu valorile atributelor tuturor tuplurilor din a doua relaţie.
Relaţia rezultată are numărul de tupluri (cardinalitatea) egal cu produsul numărului de
tupluri ale relaţiilor operand.
Exemplu:

7
Exprimarea operaţiilor pe mulţimi în SQL (1)
Reuniunea:
SELECT lista_coloane1 FROM tabel1 [WHERE condiţie1]
UNION
SELECT lista_coloane2 FROM tabel2 [WHERE condiţie2];
Exemplu (MySQL, Intreprindere):
SELECT Nume, Prenume, Adresa FROM FURNIZORI
UNION
SELECT Nume, Prenume, Adresa FROM CLIENTI;
Afiseaza numele tuturor furnizorilor si al clientilor, precum si adresa acestora
Intersectia:
SELECT lista_coloane1 FROM tabel1 [WHERE condiţie1]
INTERSECT
SELECT lista_coloane2 FROM tabel2 [WHERE condiţie2];
Diferenta:
SELECT lista_coloane1 FROM tabel1 [WHERE condiţie1]
MINUS
SELECT lista_coloane2 FROM tabel2 [WHERE condiţie2];
8
Exprimarea operaţiilor pe mulţimi în SQL (2)
Produsul Cartesian:
SELECT * from R, S;
SELECT lista_col_R, lista_col_S from R, S;
Exemplu (MySQL, Intreprindere):
SELECT * FROM ANGAJATI, SECTII;
SELECT IdAngajat, Nume, Prenume, DataNasterii, Adresa, Functia,
Salariu, ANGAJATI.IdSectie, SECTII.IdSectie, Denumire, Buget
FROM ANGAJATI, SECTII;
Produsul Cartesian este implementat in toate SGBD-urile
(instructiunea SQL SELECT).
În sistemul Oracle sunt implementate toate operatiile pe multimi.
În alte SGBD-uri nu sunt implementate toate operaţiile pe mulţimi; în
SQL Server 2000 si in MySQL 5.0 nu sunt implementate operaţiile
INTERSECT şi MINUS.

9
Exprimarea operaţiilor pe mulţimi în SQL (3)

Intersecţie (implementare în MySql)


SELECT DISTINCT Nume, Prenume FROM CLIENTI
WHERE EXISTS
(SELECT * FROM FURNIZORI WHERE CLIENTI.Nume =
FURNIZORI.Nume AND CLIENTI.Prenume = FURNIZORI.Prenume);

Diferenţă (implementare în MySql)


SELECT DISTINCT Nume, Prenume FROM CLIENTI
WHERE NOT EXISTS
(SELECT * FROM FURNIZORI WHERE CLIENTI.Nume =
FURNIZORI.Nume AND CLIENTI.Prenume = FURNIZORI.Prenume);

10
Operaţia de selecţie
Selecţia (sau restricţia – select, restriction) într-o relaţie r(R) - definită astfel:
σ p (r) = {t | t ∈ r and p(t)}
unde p, predicatul selecţiei, este o expresie logică compusă din termeni conectaţi prin
operatorii and, or‚ not (şi, eventual, paranteze).
Fiecare termen este o valoare logică obţinută ca rezultat al unei operaţii de comparaţie
de forma:
<atribut> op <atribut> sau
<atribut> op <constanta>, unde
op este un operator de comparatie aritmetic (=, ≠, >, ≥. <. ≤) sau special(IS NULL etc.).
Tuplul t este selectat (introdus în rezultat) dacă p(t) = TRUE.

În limbajul SQL:
SELECT * FROM tabel WHERE p;
În termenii folosiţi în limbajul SQL, restricţia selectează o parte din liniile tabelului
operand.
Exemple (MySQL - WORLD):
SELECT * FROM city where CountryCode=‘ROM’;
SELECT * FROM country WHERE Continent='Europe';
SELECT * FROM country WHERE Continent='Europe' and Population > 10000000;
11
Operaţia de proiecţie
Proiecţia (project) pe atributele A1, A2, .. Ak într-o relaţie r(R) se notează:
Π A1, A2, ...Ak (r), unde A1 ∈R, A2 ∈R, ...Ak ∈R
Rezultatul este o relatie cu k atribute, cele din lista dată.
Daca {A1, A2, ...Ak} nu contine o supercheie, pot sa apară tupluri duplicat;
teoretic, tuplurile duplicat se elimină, dat fiind ca rezultatul este o mulţime.
Exemplu:

În limbajul SQL proiecţia se exprimă astfel:


SELECT DISTINCT A1, A2, ...Ak FROM R
Dacă nu se introduce parametrul DISTINCT, nu se elimina tuplurile duplicat.
Exemplu (MySQL, tabela standard WORLD):
SELECT DISTINCT CountryCode FROM City;
12
Operaţia de joncţiune naturală (1)
Joncţiunea naturală (natural join) combină tuplurile din două relaţii.
Fie mulţimile de atribute: A = {A1,A2,...Am} , B= {B1,B2,...Bn}, C={C1,C2,...Ck} şi
doua relaţii r(R) si s(S), unde:
R ={A, B}, S = {B, C}
deci atributele R ∩ S = B = {B1, B2,...Bn} sunt comune celor două relaţii.
Joncţiunea naturală este o relaţie q = r >< s, care se obţine în felul următor:
•se calculează produsul cartesian al celor doua relaţii: p = r x s, P = {A, R.B, S.B, C};

•din tuplurile produsului cartesian se selecteza acele tupluri care au valori egale

pentru atributele comune (B1, B2,...Bn): R.B = S.B, adică R.B1=S.B1, R.B2=S.B2,..
•se face proiecţia rezultatului pe multimea de atribute R ∪ S = {A, B, C}.

Schema relaţiei rezultat este Q = R ∪ S = {A, B, C}


q = r >< s = Π A,B,C σ (r.B1=s.B1 AND r.B2=s.B2 ... AND r.Bn = s.Bn) (r x s)
Atributele comune R.B si S.B trebuie să fie compatibile în cele doua relatii; dacă
sunt compatibile, ele se consideră identice chiar dacă au denumiri diferite, si în
reuniunea atributelor R ∪ S se introduc o singură dată.
Cazul cel mai frecvent de joncţiune naturală: între doua relaţii asociate (1: N),
atributul comun fiind cheia straină – cheia primară (candidată) referită.

13
Operaţia de joncţiune naturală (2)
Exemplul 1: r >< s = Π A,B,C,D,E σ (r.D = s.D) (r x s)

În SQL trebuie să fie introduse explicit lista atributelor rezultatului şi condiţiile de egalitate
ale atributelor comune:
SELECT A,B,C,R.D,E FROM R, S WHERE R.D = S.D;
Exemplul 2: ANGAJATI >< SECTII; cheia straină: ANGAJATI.IdSectie
SELECT IdAngajat, ANGAJATI.Nume, Prenume, DataNasterii, Adresa, Salariu,
ANGAJATI.IdSectie, SECTII.Nume, Buget FROM ANGAJATI, SECTII WHERE
ANGAJATI.IdSectie=SECTII.IdSectie;
Exemplul 3:(MySQL-WORLD) city >< country; cheia straină: city.countryCode
SELECT ID, city.Name Oras, CountryCode 'Cod Tara', city.Population, country.Name
Tara, Continent from city, country where city.countryCode=country.CODE order by
country.Name;
Dacă nu se afişează toate atributele joncţiunii, înseamna ca s-a combinat cu o proiecţie.
14
Joncţiuni interne şi externe
Joncţiunea naturală se mai numeşte şi joncţiune internă şi se mai poate exprima in SQL
cu cuvintele cheie INNER JOIN
Exemplu de joncţiune (combinată cu o proiecţie si o selectie)(MySQL – world)
SELECT city.Name Oras, Code 'Cod Tara', country.Name Tara, Continent FROM city
INNER JOIN country ON CountryCode=Code WHERE Continent='Antarctica' OR
Continent = 'Europe' ORDER BY Continent;
Joncţiunea externă introduce în plus toate liniile care există în prima relaţie (pentru LEFT
OUTER JOIN) sau în cea de-a doua relaţie (pentru RIGHT OUTER JOIN) şi pentru care
nu există linii în cealălaltă relaţie care să îndeplinească condiţia de join; exemplu:
SELECT city.Name Oras, Code 'Cod Tara', country.Name Tara, Continent FROM city
RIGHT OUTER JOIN country ON CountryCode=Code WHERE Continent='Antarctica'
OR Continent = 'Europe' ORDER BY Continent;
Se vor afişa si ţările care nu au nici un oras înscris în tabelul city.

15
Concluzii: operațiile algebrei relaționale
m Algebra relaţională este o colecţie de operaţii care aplică asupra relaţiilor
m Cele opt operaţii propuse de E.F.Codd nu constituie o mulţime minimă de
operaţii ale algebrei relaţionale
m Mulţimea minimă de operaţii ale algebrei relaţionale consta din cinci operaţii
primitive, pe baza cărora se poate construi orice expresie de algebra
relaţionala:
• Reuniunea
• Diferenţa
• Produsul Cartesian
• Restricţia (selecția)
• Proiecţia
m Celelalte operaţii se pot exprima prin intermediul acestora:
m Intersecţia se poate exprima prin expresia: R ∩ S = R – (R – S);
m Joncţiunea este o proiecţie a unei restricţii a produsului cartezian al relaţiilor;
m Diviziunea este o proiecţie a unei restricţii asupra relaţiei deîmpărţit
m Si celelalte trei operaţii sunt deosebit de utile în formularea interogărilor,
astfel încât algebra relaţională a păstrat toate cele opt operaţii propuse de
E.F.Codd, la care s-a adăugat operaţia de redenumire a atributelor
17
Formularea interogărilor
m Interogarea este operația prin care se obțin informaţiile dorite (care îndeplinesc
o anumită condiție) dintr-o bază de date. O interogare:
• se formulează mai întâi în limbaj natural,
• apoi se exprimă într-un limbaj abstract de interogare (algebra relaţională
sau calculul relaţional),
• se transpune în limbajul de interogare al SGBD-ului folosit (ex., limbajul
SQL), iar aplicația client transmite SGBD-ului instrucțiunea (sau
instrucțiunile) obtinuțe
m Sistemul SGBD prelucrează programul interogarii în mai multe faze:
• analiza lexicală, sintactică şi semantică
• optimizarea interogării
• generarea codului
• execuția și returnarea rezultatului
m În algebra relaţională o interogare se exprimă printr-o expresie care definește
următoarele elemente:
• lista atributelor relaţiei rezultat, care se numesc atribute de proiecţie;
• lista relaţiilor din care se extrag informaţiile
• condiţiile pe care trebuie să le îndeplinească tuplurile relaţiei rezultat.
m Sunt posibile diferite situaţii:
• interogări care se rezolvă în cadrul unei singure relaţii
• interogări care se rezolvă folosind două sau mai multe relaţii ale bazei
18
de date
Interogări într-o singură relație

19
Interogări în doua sau mai multe relații

20
Interogare în două relații în asociere N:1

21
Interogare în trei relații asociate

22
Interogare în trei relații asociate (2)

23
Subinterogări

24

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