Sunteți pe pagina 1din 16

PREZENTAREA CURSULUI BAZE DE DATE partea intai

Partea intai este structurata pe cinci capitole si se adreseaza studentilor de la toate formele de
invatamant.
CAPITOLUL 1 - INTRODUCERE ÎN BAZELE DE DATE
1.1. Organizarea internă a datelor (masiv, înregistrare, fişier); modele de date (entitate, atribut, articol, tabel,
abstractizare,
tipizare, instanţiere, agregare); bază de date, informaţie, dată
1.2. Componente, aplicaţie, proprietăţi, tipuri, limbajele bazelor de date
1.3. SGBD: module, arhitectură, obiective, funcţii
1.4. Comunicarea între un SGBD şi o aplicaţie
CAPITOLUL 2 - MODELUL RELAŢIONAL (I)
2.1. Schema lui Chen (diagrama entitate-relaţie) [21]
2.2. Modele de reprezentare a bazelor de date
2.2.1. Modelul ierarhic
2.2.2. Modelul reţea
2.2.3. Modelul orientat-obiect
2.2.4. Modelul relaţional
2.3. Regulile lui Codd
CAPITOLUL 3. - MODELUL RELAŢIONAL (II) - ALGEBRA RELAŢIONALĂ
3.1. Algebra relaţională – operatori [21]
3.1.1. Operatorul UNION (reuniune)
3.1.2. Operatorul DIFFERENCE
3.1.3. Operatorul PRODUCT
3.1.4. Operatorul PROJECT
3.1.5. Operatorul SELECT
3.1.6. Operatorul JOIN
3.1.7. Operatorul INTERSECT
3.1.8. Operatorul DIVISION
3.1.9. Operaţii adiţionale
3.2. Expresii şi proprietăţi ale Algebrei Relaţionale (AR) [21]
3.3. Calculul relaţional [18]
CAPITOLUL 4 - PROIECTAREA BAZELOR DE DATE
4.1. Proiectarea bazelor de date relaţionale [18], [21]
4.2. Normalizare; Scheme de descompunere
4.3. Forme normale, algoritmi
4.4. Normalizarea BDOO [12]
CAPITOLUL 5 - SQL
5.1. LMD – generalităţi [21]
5.2. Standardul SQL
5.3. SGBD ACCESS şi limbajul SQL

BIBLIOGRAFIE
1. Popa Mariana, Baze de date, Ed. FRM, 2006
2. Basca Octavian, Baze de date, Ed. All Educational, 1996
3. Popescu Ileana, Modelarea bazelor de date, Ed. Tehnică 2001
4. Popescu Ileana, Baze de date relationale, Ed. Universitatii din Bucuresti, 1996

1
CAPITOLUL 1.
INTRODUCERE ÎN BAZELE DE DATE

1.1. Organizarea internă a datelor (masiv, înregistrare, fişier); modele de date (entitate, atribut, articol, tabel,
abstractizare,
tipizare, instanţiere, agregare); bază de date, informaţie, dată

Lumea în care trăim, lumea reală, este un imens sistem ce poate fi modelat ca o infinită colecţie de date.
In memoria calculatorului datele se stochează sub formă de:
• masive
• şi înregistrări .
pag. 12
Definiţie: Numim entitate orice existenţă din lumea înconjurătoare, orice realitate. Entităţile au caracteristici sau
proprietăţi.
Informaţiile despre fenomenele lumii reale devin atribute în asocierea făcută de analist în lumea reprezentărilor, vor fi
numite în lumea datelor articole şi vor avea de asemenea valori.
13-14
Lor li se pot ataşa prescurtări, codificări, astfel încât să fie uşor introduse de operatori şi uşor de prelucrat de către
programele specializate.
pag. 15
Ultima fază a modelării sistemului va fi cea de introducere efectivă a datelor în bază.
Aceasta constă în cazul bazelor de date relaţionale (BDR) din crearea unuia sau mai multor tabele.
Tabelul este format din coloane şi linii.
Coloanele se numesc câmpuri şi cuprind valorile atributelor, numele lor fiind date de articole.
Liniile reprezintă datele, se numesc înregistrări şi cuprind valori ale articolelor. Ele sunt identificabile prin nume.
pag. 15-16
Definiţie: Se numeşte bază de date o colecţie persistentă, neredundantă, coerentă logic de date corelate.
O altă definiţie a bazei de date, luată din literatura de specialitate este următoarea:
Definiţie [2]: Se numeşte bază de date o colecţie partajată de date, între care există relaţii logice (şi o descriere a
acestor date), proiectată pentru a satisface necesităţile informaţionale ale unei organizaţii.
Fişierele - reprezintă tot o colecţie de date.
dezavantaje ale lucrului cu fişiere:
Redundanţa ridicată (din cauza existenţei aceloraşi date în mai multe fişiere);Acces greoi la date;Dependenţa datelor
de programele sub care a fost creat fişierul;Inconsistenţa datelor (modificările făcute asupra datelor dintr-un fişier nu
apar în toate fişierele ce conţin dubluri ale datelor respective).
În cazul lucrului cu baze de date, datele sunt definite o singură dată şi sunt accesate de diferiţi utilizatori. Un utilizator
al bazei de date trebuie să poată: Adăuga fişiere noi, vide;Insera noi date în fişierele existente;Regăsi datele din
fişiere;Actualiza date;Şterge date;Elimina fişiere din baza de date.
pag. 17-18
Pentru a putea avea acces la toate aceste operaţii au fost concepute SGBD-urile (sisteme de gestiune a bazelor de date).
1.2. Componente, aplicaţie, proprietăţi,
tipuri, limbajele bazelor de date
Componentele ce intervin în realizarea unei baze de date:
Baza de date în care sunt memorate datele;
Sistemul care va gestiona şi prelucra datele (SGBD);
Dicţionarul bazei de date (catalog de date sau metadate) în care sunt cuprinse documentaţia legată de structura
şi tipul datelor, diferite statistici, etc. Conţine schemele: internă, externă şi procedurile necesare trecerilor aferente,
iar informaţiile sunt memorate în forma sursă şi obiect.
Necesarul de aparatură (hard),
Personalul uman autorizat (specializat sau nespecializat) ce va utiliza baza de date: beneficiarul, utilizatorii,
operatorii, programatorii, administratorul, etc.
Pentru a crea şi prelucra o bază de date trebuie realizat un sistem de programe numit aplicaţie care rezolvă problemele
cerute de beneficiar dupa un numar de paşi .
pag. 19-20
Printre proprietăţile ce trebuie îndeplinite de orice bază de date enumerăm:
Confidenţialitate – să aibă un mecanism de securitate bine pus la punct;
Flexibilitate – să răspundă oricăror interogări ale beneficiarului şi să poată fi uşor modificabilă în timp atunci când
apar elemente noi ce trebuie introduse, analizate şi prelucrate;
Sincronizare – să poată fi exploatată simultan de un număr mare de utilizatori;
2
Integritate – să poată valida şi recupera datele în caz de deteriorare, adică să păstreze corectitudinea informaţiilor
conţinute în baza de date;
Redundanta redusa prin identificarea informaţiilor comune şi alcătuirea corespunzătoare a aplicaţiilor;
Eliminarea inconsistenţelor ce rezultă din reducerea redundanţelor;
Costuri minime de întreţinere şi prelucrare.
Exista numeroase tipuri de baze de date. 21
Bazele de date folosesc mai multe tipuri de limbaje:
Limbajele LDD (limbaje pentru definirea datelor). Un LDD defineşte:
Tipurile de date;
Relaţiile dintre date;
Atributele asociate relaţiilor, structura lor, domeniul lor de definiţie (ex: numele, forma de memorare, lungimea
atributelor unei entităţi);
Modul de accesare a datelor;
Criteriile de validare automată a datelor
Limbajele LMD (limbaje pentru manipularea datelor)- se mai numesc şi limbaje de interogare – folosite pentru : inserare,
actualizare, ştergere a datelor
Limbajele LCD (limbaje de control al datelor) - răspunzătoare de:
Integritatea datelor,
Confidenţialitatea datelor;
Performanţele bazei de date.
pag. 22
1.3. SGBD: module, arhitectură, obiective, funcţii
Definiţie: Se numeşte SGBD o colecţie de programe care permite crearea şi întreţinerea unei baze de date.
Componentele cele mai importante ale unui SGBD sunt:
Subsistemul de memorare;
Subsistemul de modelare şi manipulare a datelor;
Interfaţa dintre SGBD şi utilizatori.
pag. 23
SGBD-urile sunt construite modular. Cele trei componente prezentate, se regăsesc şi sunt mai explicit prezentate în
sistemul de module care compune un SGBD:
Module ce conţin programele de gestiune a bazei:
Permit accesul fizic la date;
Primesc cereri de la LMD (în cod C, COBOL, tabele de constante) pentru care caută:
o Descrierea datelor; Descrierea globală (schema conceptuală) a datelor;Descrierea fizică a bazei.
Controlează dacă datele sunt disponibile;
Convertesc datele dacă este nevoie;
Extrag datele;
Plasează datele în spaţiul de memorie al utilizatorului;
Se ocupă de gestionarea partiţiilor în cazul bazelor de date cu acces concurent.
Module pentru LDD care oferă informaţii despre:
Descrierea logică a bazei de date;
Fişierele de date şi legăturile logice dintre ele;
Modul de criptare, cheile de confidenţialitate şi constrângerile de integritate;
Localizarea înregistrărilor, indexarea înregistrărilor şi identificarea datelor dintr-o înregistrare fizică.
Module pentru LMD, care au sarcina de a şterge, modifica, reactualiza şi manipula datele.
Module utilitare care se ocupă cu:
Securitatea bazei, rezolvând problemele ce apar în baza de date: După un atac;După o pană de curent; După diferite
modificări aduse bazei.
Încărcarea sau reorganizarea bazei de date astfel încât spaţiul utilizat de aceasta să fie optim (recuperează spaţiul
vid);
Prezentarea permanentă a statisticilor despre accesarea şi utilizarea bazei de date.
Module pentru LCD care se ocupă cu întreţinerea bazei, astfel încât orice modificare în bază să nu interfereze cu alte
aplicaţii; să nu se facă modificări, reactualizări în bază concomitent cu citirea acestora de către utilizatori, etc.
SGBD-urile pot avea diferite tipuri de arhitecturi:
în funcţie de organizare:
1) SGBD-uri cu arhitectura organizată pe trei nivele:Nivelul conceptual (sau logic):
- Nivelul intern (sau fizic):Nivelul extern:

3
2) SGBD-uri cu arhitectura organizată pe două nivele (propusă de Gardarin)
în funcţie de sistem - exemple: sistemele distribuite care operează cu arhitecturi client – server sau arhitecturi
federale, etc.
pag. 24-28
Obiectivele SGBD-urilor sunt [12]:
Independenţa fizică a datelor – posibilitatea de a schimba organizarea internă a datelor şi structurile de
înregistrare fără a modifica programele utilizator);
Independenţa logică a datelor – posibilitatea de a modifica cele trei scheme: internă, conceptuală, externă;
Manipularea datelor cu limbaje nonprocedurale;
Administrarea simplă a datelor (descentralizarea descrierii datelor);
Eficacitatea accesului la date;
pag. 28
Funcţiile SGBD-urilor sunt:
Descrierea datelor;Interogarea bazei de date (cu limbaje nonprocedurale, ex. SQL);Conversia datelor (trecerea
datelor prin cele trei nivele ale SGBD-urilor);Controlul integrităţii datelor (SGBD trebuie să asigure coerenţa
datelor);Gestiunea tranzacţiilor;Securitatea datelor.
1.4. Comunicarea între un SGBD şi o aplicaţie
ODBC (Open DataBase Connectivity)
− Este o tehnologie software a firmei Microsoft;
− Cuprinde biblioteca de funcţii care permite accesul universal la SGBD-uri;
− Comunicarea între un SGBD (Oracle, DB2, SQL Server) şi o aplicaţie se realizează prin intermediul limbajului
SQL.
Pe figura următoare poate fi urmărit traseul parcurs de cererea SQL de la aplicaţie la baza de date şi răspunsul
obţinut pe traseul bază de date - aplicaţie.
Cerere SQL Cerere SQL
Aplicaţie ODBC Bază de date
Răspuns Răspuns
Arhitectura ODBC cuprinde:
− Aplicaţia, care comunică cu sursa de date prin intermediul bibliotecii de funcţii ODBC. Biblioteca deţine nu
meroase funcţii
− Gestionarul de driver-e
− Driver-ul, care este o bibliotecă de funcţii specifică fiecărui SGBD
− Sursa de date.
Sursa date

Driver
Gestionarul ............... ......................
Aplicaţia
de driver-e
Driver
Sursa date
pag. 29-30
CAPITOLUL 2.
MODELUL RELAŢIONAL (I)

2.1. Schema lui Chen (diagrama entitate-relaţie) [21]


Bazele de date modelează fenomene ale lumii reale. Modelarea are la bază entităţi. Mai multe entităţi sunt legate între
ele prin relaţii sau asocieri. Entităţile şi relaţiile sunt caracterizate de atribute.
Definiţie: Se numeşte relaţie între entităţile D1, D2,…,Dn orice submulţime a produsului cartezian al mulţimilor
elementelor celor n entităţi, adică mulţimi de elemente de forma (d1, d2,...,dn), unde di este un element din Di, oricare ar
fi i=1,...,n.
In cazul n=2, se lucrează cu relaţii binare.
Relaţia realizează conexiunea între două tabele corelate logic.
Diagrama entitate-relaţie a fost introdusă pentru prima dată de Chen în 1976 şi este un model neformalizat de
reprezentare a fenomenelor din lumea reală. Prescurtat se notează E/R. Cu diagramele entitate-relaţie este reprezentat
grafic modelul conceptual (logic) al unei baze de date. Diagrama este utilizată des pentru a reprezenta grafic modelul
relaţional. După cum îi spune şi numele, modelul E/R se ocupă de entităţi, proprietăţile sau atributele ce definesc anumite
laturi ale entităţilor şi legăturile dintre entităţi.
Proprietăţi ale entităţilor:
− Se pot transpune în tabele; Sunt substantive;Au nume unic;Au descrieri detaliate;Se notează cu litere mari;Sunt
identificate unic de cheia primară;Se reprezintă prin dreptunghiuri;Valorile lor depind de timp.
4
Observaţii:
− Valorile entităţilor nu trebuie confundate cu entitatea însăşi, ele se notează cu litere mici; Nu orice substantiv
desemnează o entitate;Nu pot exista două entităţi cu acelaşi nume într-un model;Cheia primară trebuie să fie
scurtă, simplă, uşor de utilizat, şi poate fi schimbată numai de administratorul de reţea;Entităţile pot fi: entităţi
obişnuite, numite entităţi de sine stătătoare, sau regular entities şi entităţi a căror existenţă este dependentă de
existenţa altor entităţi numite entităţi dependente sau weak entities.
− Entităţile se pot clasifica şi în: superentităţi, subentităţi.
Definiţie: O entitate se numeşte dependentă, dacă cheia ei primară cuprinde în ea şi cheia primară a entităţii de sine
stătătoare.
Observaţie: Subentităţile sunt o submulţime a unei superentităţi, cu aceeaşi cheie primară, aceleaşi atribute şi aceleaşi
relaţii ca şi superentitatea din care provin.
Proprietăţi ale relaţiilor:
− Se pot transpune în tabele sau coloane speciale, care accesează chei primare;Sunt verbe;Au descrieri
detaliate;Au cardinalitate, care se reprezintă în paranteze în cazul cardinalităţii minime şi fără paranteze în cazul
cardinalităţii maxime; O entitate poate să participe la o relaţie total (prin toate elementele) sau parţial;Se
reprezintă prin arce neorientate;Valorile lor depind de timp.
Observaţii:
− Nu orice verb este o relaţie;Prin cardinalitate înţelegem numărul tuplurilor (liniilor, înregistrărilor) ce aparţin
unei relaţii;
Proprietăţi ale atributelor:
− Descriu o entitate sau o relaţie;Sunt substantive;Au descrieri detaliate;Dacă reprezintă chei primare trebuie
subliniate;Valorile lor depind de timp .
Observaţie. Nu orice substantiv este atribut.
Exista mai multe tipuri de atribute. pag. 33
Etapele realizării diagramei E/R (schema lui Chen):
1. Se identifică entităţile
2. Se identifică relaţiile dintre entităţi (legăturile)
3. Se stabilesc cardinalităţile
4. Se identifică atributele pentru fiecare entitate
5. Se stabilesc cheile (atributele de identificare)
pag. 34-35
Definiţie: se numeşte cheie un atribut sau o mulţime de atribute pentru care valorile asociate determină în mod unic
orice element al entităţii respective.
Pentru o aceeaşi entitate pot exista mai multe atribute care să servească drept atribute de identificare, adică pot exista
mai multe chei candidate. Numai una dintre acestea va fi aleasă cheie primară.
Pentru a putea parcurge paşii diagramei trebuie cunoscute tipurile de relaţii ce se pot stabili între entităţi. Spre
exemplu, tipurile de relaţii (legături-asocieri) între entităţi pot fi:
♦ Relaţie unu-la-unu (notată 1:1), în care fiecărui element din prima entitate îi corespunde cel mult un element din a
doua entitate şi reciproc;
♦ Relaţie unu-la-mai-mulţi (notată 1:n), în care fiecărui element al primei entităţi îi pot corespunde mai multe
elemente din cea de-a doua entitate, dar fiecărui element din a doua entitate îi corespunde cel mult un element din
prima entitate;
♦ Relaţie mulţi-la-mulţi (notată m:n), în care fiecărui element al primei entităţi îi corespund mai multe elemente din cea
de-a doua entitate şi invers.
Observaţie: Relaţiile de tip „mulţi la mulţi” se descompun în două relaţii „unu la mulţi” prin introducerea unei
entităţi intermediare (tabel suplimentar), astfel în locul relaţiilor de tip „mulţi la mulţi”, se lucrează cu relaţii de tip
„unu la mulţi”, care sunt mai uşor de implementat şi utilizat.
Definiţie: Se numesc relaţii complexe sau relaţii de tip trei relaţiile între mai mult de două entităţi distincte.
Observaţie: O relaţie de tip trei se poate înlocui cu relaţii binare, prin introducerea de entităţi intermediare.
pag. 37-40
2.2. Modele de reprezentare a bazelor de date
Schema conceptuală a bazei de date combină subschemele vederilor ce privesc o anumită aplicaţie într-un model
unic. Ea se bazează pe un model teoretic care trebuie să fie uşor de înţeles şi de prelucrat. Două dintre modelele mai
puţin folosite în prezent sunt modelul ierarhic şi modelul de tip reţea. Cele două modele au dezavantajul că bazele de
date dezvoltate sunt specifice aplicaţiei, astfel, dacă se dezvoltă o nouă aplicaţie trebuie să se dezvolte şi o nouă bază
de date.
2.2.1. Modelul ierarhic
− A fost utilizat de primele SGBD-uri;
− In acest model articolele sunt aranjate într-o structură arborescentă;

5
− Structura arborelui coincide cu ordinea de accesare a datelor, de la articolul din rădăcină spre cele de pe următorul
nivel etc.;
− Modelul are ca tip de structură: ierarhia:
o Intr-o ierarhie există mai multe înregistrări interconectate prin legături; Se porneşte de la rădăcină care are
mai multe tipuri de înregistrări subordonate, legate sub formă de arbore;Fiecare nod care nu este rădăcină
sau nod final (frunză) are un singur nod superior şi unul sau mai multe noduri inferioare; Legătura de la un
nod superior la unul inferior este de 1:n, iar legătura de la un nod inferior la unul superior este de 1:1; Pentru a
evita redundanţele a fost introdusă noţiunea de element virtual, prin care este înlocuită dublura unui
element cu adresa elementului, fiecare element apărând o singură dată în baza de date reală.
− Restricţii:
o La inserare nu se pot introduce noi realizări ale unei înregistrări subordonate dacă nu sunt cunoscuţi
superiorii;
o Dacă se şterge o realizare rădăcină a unei înregistrări, atunci se şterg automat toate înregistrările subordonate
(tot subarborele).
− Limbajul de interogare este de tip navigator; Comenzile de navigare sunt proceduri scrise de programatori.
Avantajele modelului ierarhic:
− Este un model foarte simplu de implementat şi uşor de înţeles;
− Se poate implementa pe orice tip de suport de memorare.
Dezavantajele modelului ierarhic:
− Redundanţe multe în general;
− Nu este un model flexibil în structurarea datelor.
pag. 41-42
2.2.2. Modelul reţea
− Este cel mai apropiat de forma de reprezentare a bazelor de date sub forma diagramelor E/R cu condiţia ca toate
relaţiile să fie binare de tip 1:1 sau 1:n.
− A fost utilizat cu succes în procese tranzacţionale în timp real. Modelul aranjează articolele într-o listă cu legături de
tip graf orientat, un articol putând avea mai mulţi părinţi.
− Deosebirea faţă de modelul ierarhic este că între un nod inferior şi un nod superior există legătură de tip 1:n.
− Entităţilor le corespund fişiere logice care au drept câmpuri atributele entităţii şi eventuale câmpuri de legătură
pentru relaţii.
− Limbajul este tot de tip navigator.
Avantajele modelului reţea. Modelul permite: Partajarea datelor;Coerenţa datelor;Controlul redundanţei
datelor;Integritate şi securitate crescută a datelor;Concurenţa datelor îmbunătăţită.
Dezavantajele modelului reţea:Performanţe reduse;Costuri mari (hard şi soft) etc.
Modelul retea poate avea o reprezentare: simpla sau complexa, in care intervin cicluri intre noduri.
pag. 42-44

2.2.3. Modelul orientat-obiect


Modelul orientat-obiect a apărut din necesitatea gestionării unor obiecte complexe. Calculatorul a pătruns în mai
toate domeniile de activitate şi astfel au apărut tipurile neconvenţionale de date cum ar fi imaginile grafice, video, sunet,
muzică, pentru care bazele de date „clasice” ofereau prea puţin suport.
Modelul reprezintă articolele ca obiecte. Conceptul de obiect a fost înglobat în tehnologia SGBD-urilor, rezultând
sisteme de gestiune a bazelor de date orientate pe obiecte. Bazele de date orientate pe obiecte se folosesc în diferite
domenii: proiectare CAD, simulare şi modelare, sisteme informatice spaţiale (GIS: Geographic Information System),
multimedia, sisteme expert, controlul proceselor în timp real, etc.
pag. 44-45
2.2.4. Modelul relaţional
Modelul relaţional a fost introdus de E.F. Codd în 1970 şi este descris cu ajutorul teoriei matematice a relaţiilor.
Este un model orientat spre mulţimi, este simplu şi riguros matematic Exemple de SGBD-uri relaţionale: DB2 (produs de
grupul IBM), ORACLE (produs de ORACLE Corporations). pag. 45
Modelul separă aspectele fizice ale unei baze de date de aspectele logice ale bazei, el asigură independenţa
datelor, respectiv abilitatea bazei de date de a exista independent de aplicaţie.
Un model relaţional de baze de date are trei elemente caracteristice:
a. Structura datelor – prin definirea unor domenii (valori atomice) şi a relaţiilor n-are (atribute, tupluri, chei primare
etc.).
b. Prelucrarea datelor – prin operaţii din algebra relaţională sau calculul relaţional.
c. Integritatea datelor – prin impunerea unor restricţii.
Vom dezvolta punctele a si c, punctul b urmand a fi dezvoltat intr-un capitol viitor.
a. Structura relaţională a datelor. Aici se definesc noţiunile :

6
Domeniu : Mulţime de valori posibile pentru atribute care:
• Enumeră elementele componente, ex: bursa de merit, categ A, categ. B,
• Specifică proprietăţi distincte ale valorilor domeniului, ex: integer, real, boolean, etc.
Notând cu:
D1,...,Dn , n ≥ 1domenii, finite, nu neapărat disjuncte
D1x...xDn produsul lor cartezian,
atunci produsul cartezian este definit de mulţimea
v1,...,vn cu vi Є Di, i = 1,...,n ,
unde n este aritatea tuplului.
n

∏D
i =1
i = {(v1 , v 2 ,..., v n )⏐vi ∈ Di , i = 1..n}

In cazul n=2, se lucrează cu relaţii binare.

Relaţia R – Modelul relaţional se bazează pe noţiunea matematică de relaţie, aşa cum este definită în teoria mulţimilor (o
submulţime a produsului cartezian D1x...xDn a unei liste finite de mulţimi numite domenii). Elementele unei relaţii se
numesc tupluri.
n
R ⊆ {v / v ∈ ∏
i =1
D i , n ≥ 1}

Altfel spus, dacă v este un tuplu al relaţiei R, atunci v=<v1, …,vn> cu vi=R·Ai(v)∈Di, unde prin R·Ai se înţelege
valoarea atributului Ai.
De obicei relaţiile sunt reprezentate sub formă de tabele în care fiecare rând (înregistrare) reprezintă un tuplu şi
fiecare coloană (camp) reprezintă valorile tuplurilor dintr-un domeniu dat al produsului cartezian.
pag. 46-47
Pentru caracterizarea unei relaţii este nevoie de un element invariant în timp. Acest element este:
Schema relaţională – notată R(A1,...,An), unde A1,...An reprezintă mulţimea numelor atributelor, şi R relaţia.
Structura de date a modelului este reprezentată de o tabelă (relaţia), constituită din linii (tupluri – numărul tuplurilor
determină cardinalitatea relaţiei) şi coloane (atribute – numărul atributelor determină gradul relaţiei).
Schema unei relaţii conţine, pe lângă numele relaţiei şi atributele acesteia, şi restricţiile de integritate. Deci
schema conţine schemele tabelelor (compuse din structura tabelelor şi restricţiile de integritate la nivel de atribut şi
respectiv tabel) şi restricţiile de integritate inter-tabele [6].
Definiţie: Mulţimea tuturor schemelor relaţionale corespunzătoare unei aplicaţii se numeşte schema bazei de date
relaţionale, iar conţinutul curent al relaţiilor la un moment dat se numeşte bază de date relaţională.
Valoarea NULL – corespunde unui atribut necunoscut sau neaplicabil, cu semnificaţia „lipsa oricărei informaţii”.
pag. 48
Relaţie virtuală (numită şi vizualizare, relaţie derivată, filtru, tabel view, vedere) – cuprinde definiţia vizualizării; este
un tabel virtual al datelor, compus din câmpuri provenite din două sau mai multe tabele sau/şi câmpuri din alte
vizualizări în care nu se pot face modificări, ştergeri, deci are avantajul păstrării securităţii tabelului iniţial de date.
Vizualizările pot fi:
− Vizualizări de date (tabele);,
− Vizualizări de validare (tabele de validare);
− Vizualizări agregate (informaţii selectate din mai multe tabele).
Privită ca un model relaţional, baza de date este formată dintr-o colecţie de relaţii (tabele bidimensionale) în care:
− Coloanele sunt atribute diferite;
− Liniile sunt tupluri diferite (care se identifică unic cu ajutorul unuia sau mai multor atribute cu rol de cheie primară
pentru relaţia respectivă).
b. Prelucrarea datelor se face utilizand operaţii din algebra relaţională sau calculul relaţional. pag. 49
c. Regulile de integritate – reprezintă condiţiile ce trebuie îndeplinite de datele din bază. Condiţiile pot fi împărţite în
:
a) Condiţii de integritate structurală, care şi ele la rândul lor sunt de trei categorii:
• Condiţii de unicitate a cheii – Se numeşte cheie pentru o relaţie R o mulţime minimală K de atribute ale căror
valori identifică un tuplu unic în relaţia R. Altfel spus, cheia garantează identificarea cu precizie a fiecărei
înregistrări şi ajută la stabilirea relaţiilor între perechi de tabele. O relaţie are cel puţin o cheie. Dacă există mai
multe chei ele se numesc chei candidat (candidate key) CK.. Cheia primară (P) este un caz special de cheie
candidată care identifică unic o tabelă. Cheia primară (P), este o coloană (câmp, atribut) sau o combinaţie de
coloane cu proprietatea că nu există două linii din tabelă cu aceeaşi valoare pentru cheia primară. Conţine valori
unice, nenule. Valoarea cheii primare poate fi modificată doar în cazuri rare sau extreme. Celelalte chei candidate
se numesc chei alternative. O cheie folosită ca index pentru a accesa tupluri se numeşte cheie secundară (S).
Cu ajutorul indexului se determina locul tuplurilor. Un grup de atribute din cadrul unei relaţii care conţine o
cheie a relaţiei se numeşte supercheie. Fiind date două scheme relaţionale R1(P1,S1) şi R2(S1, S2) în care P1
7
cheie primară pentru R1 şi S1 cheie secundară pentru R1 şi cheie primară pentru R2, atunci spunem că S1 este
cheie externă pentru R1.Cheia primară este stabilită de administratorul de reţea.
Cheia primară trebuie să fie unică şi minimală.
• Condiţii de integritate a referirii – o cheie trebuie să fie null în întregime sau să corespundă unei valori a
cheii primare asociate.
• Condiţii de integritate a entităţii – atributele cheii primare trebuie să fie diferite de valoarea null.
b) Condiţii de funcţionare, specifice unei aplicaţii particulare.
Am prezentat la 2.1 diagrama E/R şi paşii ce trebuie urmăriţi pentru realizarea acesteia. Pornind de la diagrama E/R se
poate construi schema conceptuală a unei baze de date. Aceasta trebuie să reducă pe cât posibil redundanţa bazei de
date şi numărul de valori null.
Etapele ce trebuie parcurse pentru realizarea schemei conceptuale se referă atât la entităţi cât şi la relaţii şi atribute:
1. Entităţile independente devin tabele independente, acestea nu conţin chei externe în cheia primară;
A avea
Student n:m profesor
Cnp st. cnp pr.
Sex student-profesor sex
Varsta cnp student varsta
An studiu cnp profesor functie
Cod curs urmat m:n cod curs predat

m:n
Cursuri cursuri-profesor Cod curs
cod curs
Nume curs cnp pr.
Semestru predare
tabele
chei primare cheia primara formata din
exemple de tabele asociative cele doua chei externe ale
sau de legatura tabelelor asociate
2. Entităţile dependente devin tabele dependente, acestea conţin în cheia primară o cheie externă şi una sau mai
multe coloane adiţionale;
3. Subentităţile devin subtabele, cheia primară conţine o cheie externă;
4. Relaţiile 1:1 şi 1:n devin chei externe;
5. Relaţiile m:n devin tabele de legătură numite şi tabele asociative, în care cheia primară este formată din cele
două chei externe ale tabelelor asociate şi opţional coloane adiţionale. Tabelele asociative se reprezintă cu
chenar punctat în schema conceptuală;
6. Relaţiile care implică mai mult de două entităţi se numesc relaţii de tip trei. Relaţiile de tip trei devin tabele de
legătură (asociative), în care cheia primară este formată din trei chei externe;
7. Atributele singulare devin coloane;
8. Atributele multiple devin tabele dependente în care sunt incluse cheia primară a entităţii şi atributul multiplu.
Cheia primară este formată dintr-o cheie externă plus una sau mai multe coloane adiţionale.
Avantajele utilizării modelului relaţional [15], [10]
− Integritate încorporată multinivel, prin care datele sunt structurate în tabele caracterizate unic prin tupluri şi prin
câmp, astfel că înregistrarea este unic determinată;
− Interdependenţa logică şi fizică în raport cu aplicaţiile de baze de date, astfel datele nu pot fi alterate fizic sau logic
de eventualele modificări ale structurii logice ale unui utilizator sau, în cazul unui up-grade ale SGBD-ului
structura va rămâne cea iniţială;
− Consecvenţa şi acurateţea garantată a datelor; această caracterstică poate fi asigurată de impunerea unor nivele de
acces şi securitate în ceea ce priveşte manipularea datelor;
− Regăsire facilă a datelor, asigurată de proprietăţile de căutare criterială şi a modalităţilor de vizualizare după
cerinţele de interogare furnizate de utilizator.
2.3. Regulile lui Codd
Modelul relaţional, cel mai utilizat model din cele prezentate, are la bază cele 13 reguli de fidelitate ale lui Codd în raport
cu care un SGBD poate fi analizat cât este de relaţional. Aceste reguli au fost completate în timp, numărul lor ajungând la
100.

3. MODELUL RELAŢIONAL (II)


ALGEBRA RELAŢIONALĂ

3.1. Algebra relaţională – operatori [21]


Algebra relaţională constă dintr-o colecţie de operatori ce au ca operanzi relaţii. Rezultatul aplicării unui operator la
una sau două relaţii este tot o relaţie.
8
Algebra relaţională standard a fost introdusă de E.F.Codd prin utilizarea a opt operatori (unari şi binari) pe relaţii.
Operaţiile de bază sunt: Reuniunea, UNION;Diferenţa, DIFFERENCE;Produsul cartezian, PRODUCT;Proiecţia,
PROJECT;Selecţia, SELECT;Joncţiunea, JOIN (compunerea;Intersecţia, INTERSEC;Diviziunea, DIVISION.
La algebra relaţională standard s-au adăugat noi operaţii: complementarea unei relaţii, splitarea (spargerea) unei
relaţii, închiderea tranzitivă etc, numite operaţii adiţionale sau extensii ale algebrei relaţionale standard.
Pentru a se putea defini operatorii algebrei relaţionale se introduc notaţiile:
Fie R∈Rn(A1:D1,…, An:Dn) o relaţie
{A1:D1,…, An:Dn}, schema sa, A1,…An distincţi,
si DR (Ai) domeniul asociat atributului i, adică Di.
Fie v∈R, tuplu în relaţia R ,
notăm R.Ai (v) proiecţia sa pe atributul Ai, mulţimea v este
de forma <v1,…,vn>, cu vi = R.Ai (v) ∈Di.
Dacă v∈R, şi K⊆{A1,…,An},atunci mulţimea vk se defineşte prin
<R.A(v)/A∈K>.
Dacă R1∈Rn(A1:D1,…An:Dn) şi R2∈Rm(B1:D’1,…Bm:D’m), cu
A1,…,An,B1,…,Bm distincte,
şi v1∈R1, v2∈R2,
atunci, vom nota cu v = < v1, v2>
pe <R1.Ai(v1)/i=1..n> ∪ < R2.Bi(v2)/i=1..m >.
3.1.1. Operatorul UNION (reuniune)
Definiţie. Se numeşte reuniunea a două relaţii R1,R2∈Rn(A1,…, An), relaţia R care are aceeaşi schemă (structura ca
R1(implicit R2) şi care are mulţimea tuplurilor formată din tuplurile celor două relaţii luate o singură dată.
R = R1 ∪ R2 ⇔ [R∈Rn(A1,…,An) şi v∈R ⇔ (v∈R1 sau v∈R2)]
Notaţii: R1∪R2, sau OR(R1,R2), sau APPEND(R1,R2), sau UNION(R1,R2).
3.1.2. Operatorul DIFFERENCE
Definiţie. Se numeşte diferenţa a două relaţii R1,R2∈Rn(A1,…, An), relaţia R care are aceeaşi schemă (structură) ca R1
(implicit R2) şi care are mulţimea tuplurilor formată din tuplurile relaţiei R1 ce nu se găsesc printre tuplurile relaţiei R2.
R = R1-R2 ⇔ [R∈Rn(A1,…,An) şi v∈R ⇔ (v∈R1 şi v∉R2)]
Notaţii: R1-R2, sau REMOVE(R1,R2), sau DIFFERENCE (R1,R2), sau MINUS(R1,R2),.
3.1.3. Operatorul PRODUCT
Definiţie. Se numeşte produsul cartezian a două relaţii R1∈Rn(A1,…,An) de aritate n şi R2∈Rm(B1,…,Bm) de aritate m, cu
A1,…,An, B1,…,Bm distincţi, relaţia R cu schema obţinută prin concatenarea schemei relaţiei R1 cu schema relaţiei R2 şi
care are mulţimea tuplurilor formată din toate perechile de tupluri de aritate n+m astfel încât primele n componente
formează un tuplu în R1 iar următoarele m un tuplu în R2.
R = R1xR2 ⇔ [R∈Rn+m(A1,…,An,B1,…,Bm) şi v∈R ⇔ (v = <v1,v2>, v1= vA1,…,An∈ R1 şi v2 = vB1,…,Bm ∈ R2)]
Notaţii: R1xR2, PRODUCT(R1,R2), TIMES(R1,R2).
3.1.4. Operatorul PROJECT
Definiţie. Se numeşte proiecţia relaţiei R1∈Rn(A1,…,An), pe atributele K, unde K⊆{A1,…,An}|K|=p≥1, relaţia unară R cu
schema dată de atributele din K şi care are mulţimea tuplurilor formată din componentele tuplurilor din R1 corespunzătoare
atributelor din K, luate o singură dată.
R= Π K(R1) ⇔ [R∈Rp(K) şi v∈R ⇔ (v = v’K, v’∈R1)]
v’K = proiecţia tuplului v’ pe coloanele din K.
Notaţii: Π K(R), sauΠ A1, ... ,Am(R)
PROJECT(R,K), sau PROJECT(R,A1, ... ,Am), ,
R[K] sau R[A1, ... , Am], unde A1, ... , Am sunt parametrii proiecţiei relativ la relaţia R.
3.1.5. Operatorul SELECT
Definiţie: Se numeşte selecţie a relaţiei R1∈Rn(A1,…,An) printr-o condiţie cond, relaţia unară R cu aceeaşi schemă ca
R1 şi cu mulţimea tuplurilor formată din tuplurile relaţiei R ce satisfac condiţia cond.
Observaţii.
- Operatorul produce o submulţime pe orizontală a relaţiei R (selectează anumite tupluri), reducând astfel numărul
înregistrărilor, dar păstrând numărul de coloane.
- Condiţia cond este o formulă logică ce poate conţine nume de atribute, constante, operatori logici, operatori
aritmetici de comparare, etc.
- Dacă relaţia R1 are asociate nume pentru atribute, se pot înlocui indicii cu numele atributelor respective, relaţia R
rezultată având acelaşi nume ca şi relaţia R1.
R=σcond(R1) ⇔ [R∈Rn(A1,…,An) şi v∈R ⇔ (v∈R1 şi cond(v))],
unde cond(v) = “v îndeplineşte condiţia cond”.
Notaţii: σcond(R1), sau R1[cond], sau RESTRICT(R1,cond)
9
3.1.6. Operatorul JOIN
Definiţie. Se numeşte joncţiune (compunere) operaţia algebrei relaţionale care construieşte o nouă relaţie R prin
concatenarea (combinarea) unor tupluri din R1∈Rn(A1,…,An) cu tupluri din R2∈Rm(B1,…,Bm), respectând anumite
condiţii puse tuplurilor.
Pentru a putea aplica operatorul JOIN trebuie ca tuplurile ce intră în combinare să fie similare. Operatorul combină
produsul cartezian, selecţia şi proiecţia.
Notaţie: JOIN(R1, R2, cond)
Operatorul Join are mai multe variante, în funcţie de condiţia impusă tuplurilor ce se combină:
JOIN are diferite forme:
a. Operatorul θ-JOIN (θ-joncţiune)
Definiţie. Se numeşte θ-joncţiune a relaţiilor R1∈Rn(A1,…,An) şi R2∈Rm (B1,…,Bm), cu A1,…,An,B1,…,Bm distincte,
prin condiţia cond ce depinde de valorile tuplurilor celor două relaţii, relaţia R cu schema formată din atributele celor
două relaţii (luate de câte ori apar) şi cu mulţimea tuplurilor formată din concatenarea acelor tuple ce verifică condiţia
cond.
R = JOIN (R1,R2,cond) ⇔ [R∈Rn+m (A1,…,An,B1,…,Bm) şi v∈JOIN (R1,R2,cond) ⇔ ( v = <v1,v2>,v1∈R1, v2∈R2 şi
cond (v1,v2))]
Observaţie. Operaţia de θ-joncţiune se poate scrie ca: JOIN(R1,R2,cond)=σcond(R1xR2)
Notaţii: JOIN(R1,R2,cond),
b. Operatorul NATURAL JOIN (joncţiune naturală)
Fie R1∈Rn (A1,…,An), R2∈Rm (B1,…,Bm)
K = {A1,…,An}∪{B1,…,Bm}, |K|=k
K’= {A1,…,An}∩{B1,…,Bm}, |K’|=k’≥0
şi oricare ar fi A∈K’, DR1(A)=DR2(A) (condiţia necesară pentru a putea compara valorile atributelor comune, adică,
tuplurile ce se combină sunt similare).
Definiţie. Se numeşte joncţiunea naturală a relaţiilor R1 şi R2 relaţia R cu schema formată din reuniunea atributelor
relaţiilor R1 şi R2 (cele comune se iau o singură dată) şi cu mulţimea tuplurilor formată din tuplurile R1 concatenate cu
tuplurile din R2 pentru care valorile atributelor comune au valori identice, adică:
R = [JOIN(R1,R2) ⇔ R∈Rk(K) şi v∈R ⇔ (v = <v1,v2{B1,…,Bm}\K>, v1∈R1 şi v2∈R2 şi v1K’ = v2K’)], sau
Π
R = JOIN(R1,R2) = i1, … , imσ(R1.A1=R2 A1) Λ … Λ (R1.Ak=R2.Ak)(R1xR2), unde A1, … ,Ak sunt atributele comune lui R1 si R2,
i1, … , im lista componentelor din R1 x R2 din care s-au extras componentele R1.Ak=R2.Ak .
Notaţie: JOIN(R1,R2)
Observaţii
− Operaţia de joncţiune naturală se poate scrie:
JOIN(R1,R2)=ΠK(σcond(R1xR2))
unde cond = ∧ (R A=R A)
A∈K '
1. 2.

− Pentru K’=φ, relaţiile nu au atribute comune şi JOIN(R1,R2)=R1xR2.


c. Operatorul SEMI-JOIN (Semi-joncţiune)
Definiţie. Se numeşte semi-joncţiune a relaţiei R1 cu relaţia R2 prin condiţia cond, relaţia R cu aceeaşi schemă ca şi R1
şi mulţimea tuplurilor formată numai din tuplurile relaţiei R1 care concatenate cu tupluri din R2 verifică condiţia cond.
R = SEMIJOIN(R1,R2,cond) ⇔ [R∈Rn(A1,…,An) şi v∈R ⇔ (v∈R1 şi ∃ v2∈R2 astfel încât cond(v,v2))].
Observaţii
− Operaţia de semi-join se poate scrie ca:
Π
SEMIJOIN(R1,R2,cond)= A1,…,An(JOIN(R1,R2,cond))
− Dacă nu se specifică condiţia cond atunci:
Π
SEMIJOIN(R1,R2)= A1,…,An(JOIN(R1,R2))
− Operatorul este asimetric şi se foloseşte în situaţiile în care nu sunt necesare toate atributele compunerii, deoarece
el păstrează numai atributele uneia din relaţiile ce intră în compunere.
− Este folosită în operaţiile de optimizare a cererilor, ea conservă atributele unei singure relaţii ce intră în joncţiune.
Notaţie: SEMIJOIN(R1,R2,cond).
d. OUTER JOIN
Left – uniunea în care înregistrările din relaţia R1, care nu au valori similare în câmpurile comune ale relaţiei R2 sunt de
asemenea incluse în tabelul rezultat. Valorile lipsă din relaţia R2 sunt stabilite la valoarea NULL.
OUTER JOIN păstrează informaţia.
Right – uniunea în care referinţa este relaţia R2, la care se ataşează tuplurile şi câmpurile din relaţia R1.

10
Complet – uniunea care păstrează înregistrările ambelor relaţii, completând cu NULL în cazul în care nu există tupluri
similare.
3.1.7. Operatorul INTERSECT
Definiţie. Se numeşte intersecţia a două relaţii, relaţia binară R cu aceeaşi schemă ca R1(implicit R2) şi cu mulţimea
tuplurilor formată din tuplurile care aparţin ambelor relaţii în acelaşi timp.
R= R1∩R2 ⇔ [R∈Rn(A1,…,An), v∈R ⇔ v∈R1 şi v∈R2)]
Observaţie. Intersecţia se mai poate scrie
prin operaţiile de bază ca:
R1∩R2=R1-(R1-R2)
sau R1∩R2= R2-(R2-R1)
Notaţii: R1∩R2, sau AND(R1,R2) sau INTERSECT(R1,R2).
3.1.8. Operatorul DIVISION
Definiţie. Se numeşte diviziune a relaţiei R1∈Rn(A1,…,An), cu relaţia R2∈Rm(B1,…,Bm), m<n şi
{B1,…,Bm}⊆{A1,…,An}, relaţia binară R cu schema formată din atributele relaţiei R1 ce nu se găsesc în schema relaţiei
R2 şi cu mulţimea tuplurilor din R1 pentru care există tuple în R2 care concatenate dau un tuplu din R1.
R = R1÷R2 ⇔ [R∈Rn-m(C1,…,Cn-m) şi
v∈R ⇔ ( v = v1{C1,…,Cn-m}, v1∈R1 şi v1{B1,…,Bm} ∈ R2)]
(unde: {C1,…,Cn-m}={A1,…,An}\{B1,…,Bm})
Notaţii: R1÷R2, sau DIVISION(R1,R2).
Observaţie: diviziunea se mai poate scrie prin operaţiile de bază ca:
R1÷R2= Π C1,…,Cn-m(R1)- Π
C1,…,Cn-m(( Π
C1,…,Cn-m(R1)xR2)-R1).

3.1.9. Operaţii adiţionale


9. Complementarea. Operaţie adiţională pentru determinarea complementului unei relaţii (tuplele ce nu se află în
relaţia considerată). In cazul lucrului cu cardinalităţi foarte mari, operaţia de complementare este o operaţie foarte rar
folosită.
10. Despicarea (splitarea). Operaţie adiţională, prin care, în funcţie de o condiţie se împarte o relaţie în două relaţii,
dintre care una singură verifică condiţia impusă.
11. Funcţii asociate. Funcţii pentru calcularea:maximului (MAX), minimului (MIN), dispersiei (VAR), etc. pentru
valorile unui atribut.
12. Închiderea tranzitivă. Operaţie adiţională pentru adăugarea de noi tupluri într-o relaţie, tupluri deduse prin
tranzitivitate.
pag. 56-70
3.2. Expresii şi proprietăţi
ale Algebrei Relaţionale (AR) [21]
Definiţie. Relaţiile legate prin operaţii din algebra relaţională formează o expresie.
Expresia se reprezintă grafic printr-un arbore algebric în care:nodurile interioare corespund operaţiilor; nodurile
terminale (frunzele) corespund relaţiilor.
Definiţie. Două expresii se numesc echivalente dacă în urma evaluării lor se obţine aceeaşi relaţie.
Proprietăţi ale algebrei relaţionale
1. Operaţiile JOIN şi PRODUCT sunt: comutative , asociative.
2. Operaţia de compunere se poate aplica:proiecţiei cu JOIN, selecţiilor: selecţiei cu proiecţia si selecţiei cu JOIN
3. Comutarea se poate aplica: selecţiei cu produsul cartezian , selecţiei cu reuniunea, selecţiei cu diferenţa, proiecţiei cu
produsul cartezian, proiecţiei cu reuniunea.
pag. 70-72
3.3. Calculul relaţional [18]
In algebra relaţională o relaţie se descrie procedural (adică explicându-se cum se obţine). In calculul relaţional
o relaţie se defineşte neprocedural (declarativ), în sensul precizării ei cu ajutorul proprietăţilor tuplurilor şi nu prin
derivarea efectivă a tuplurilor.
După cum s-a specificat în capitolul 2, calculul relaţional este de două tipuri: orientat pe tuplu şi orientat pe
domeniu.
Definiţie. Se numeşte calcul relaţional orientat pe tuplu calculul relaţional în care variabilele sunt definite asupra
relaţiilor (ale căror valori reprezintă tupluri de relaţie – numite variabile tuplu). Acest calcul a fost introdus de Codd.
Calculul relaţional operează cu atomi (sau formule atomice), formaţi din constante, variabile tuplu şi
operatori. Prin combinaţia dintre atomi şi operatori (conjuncţia, disjuncţia, negaţia, cuantificatorii ∀, ∃) se obţin
formule mai complexe. Intr-o formulă atomică orice variabilă tuplu este liberă.
Definiţie. Se numeşte expresie a calculului relaţional orientat pe tuplu o construcţie de forma E={t/F(t)},
unde: F reprezintă o formulă a calculului relaţional orientat pe tuplu,
11
t este o variabilă tuplu (singura variabilă liberă (variabila care nu este precedată de nici un cuantificator) din cadrul
formulei F).
Definiţie. Se numeşte expresie bine formată a calculului relaţional orientat pe tuplu o expresie de forma
E={t/F(t)},
unde: F reprezintă o formulă a calculului relaţional orientat pe tuplu,
t singura variabilă liberă din F , fiecare componentă a lui t este un element al lui DOM(F)
(DOM(F) = mulţime finită de simboluri care, fie apar explicit în F, fie sunt componente ale tuplurilor unei relaţii R).
Definiţie. Se numeşte calcul relaţional orientat pe domeniu, calculul relaţional în care variabilele sunt definite
asupra domeniilor (variabilele se numesc variabile domeniu).
Expresia bine formată din calculul relaţional orientat pe domeniu se defineşte ca si expresia bine formată din
calculul relaţional orientat pe tuplu.
J.D. Ullman a dat două teoreme de reducere:
Teorema 1 (de reducere a calculului relaţional orientat pe tuplu la calculul relaţional orientat pe domeniu) (J. D. Ullman):
Orice expresie bine formată din calculul relaţional orientat pe tuplu are o expresie bine formată echivalentă în
cadrul calculului relaţional orientat pe domeniu 1 .
Teorema 2 (de reducere a calculului relaţional orientat pe domeniu la algebra relaţională):
Orice expresie bine formată din calculul relaţional orientat pe domeniu are o expresie echivalentă în cadrul algebrei
relaţionale.
Din cele două teoreme se obţine următorul rezultat:
Teorema 3 (de echivalenţa dintre algebra relaţională şi calculul relaţional)
Pentru orice expresie din algebra relaţională există o expresie bine formată echivalentă din calculul relaţional
(orientat pe tuplu sau orientat pe domeniu).

CAPITOLUL 4.
PROIECTAREA BAZELOR DE DATE

4.1. Proiectarea bazelor de date relaţionale [18], [21]


Proiectarea modelului unei baze de date (schema bazei de date) se face astfel încât să se evite: redundanţele,
anomaliile şi să se asigure integritatea datelor.
Gardarin a definit 5 etape ale proiectării unei baze de date [12]:
pag. 76-77
4.2. Normalizare; Scheme de descompunere
Codd a arătat că uneori relaţiile ce intervin în baza de date relaţională conţin anomalii cum ar fi:
− Anomalii de modificare;Anomalii de adăugare;Anomalii de ştergere.
Aceste anomalii pot fi eliminate prin procesul de normalizare.
Definiţie. Se numeşte normalizare procesul de organizare şi determinare a coloanelor unui tabel, astfel încât redundanţa
să fie minimă.
Procesul este reversibil, el transformă o relaţie în relaţii de structură mai simplă, evitând anomaliile la reactualizare
(anomalii la inserţie (adăugare), anomalii la modificare, anomalii la ştergere) şi rezolvând problemele reconexiunii
(situaţiile în care descompunerea este ireversibilă).
Procesul de normalizare se realizează în mai mulţi paşi începând cu 1FN şi ajungând la forma normală 5FN. El constă
în descompunerea unei relaţii R într-o colecţie de relaţii noi care conservă informaţiile şi dependenţele funcţionale din
R.
Definiţie. Fie:
R(A1, ... , An) o schemă relaţională
X, Y submulţimi de atribute ale lui R
spunem că X determină funcţional Y sau Y depinde funcţional de X dacă ∀ R relaţie nu există două tupluri care să aibă
aceleaşi valori pentru atributele lui X şi să aibă valori diferite pentru cel puţin un atribut al lui Y.
Există mai multe forme normale (normalizări) introduse de Codd din nevoia de a elimina anomaliile care pot apărea
în lucrul cu relaţiile dintr-o bază de date.
Pentru a obţine o formă normală trebuie aplicată una din schemele de descompunere:
1. Schema de descompunere prin conservarea dependentelor.
2. Schema de descompunere fără pierderi de informaţie numită şi L-Join
Casey şi Deborel au dat o regulă pentru acest tip de descompunere.
pag. 79-82
Observaţie. Formele normale ce vor fi studiate în continuare utilizează descompunerea de informaţii fără pierderi.

1
In [18] se găsesc demonstraţiile teoremelor 1-3.
12
4.3. Forme normale, algoritmi
Procesul de normalizare implica descompunerea reversibilă a unui tabel în tabele mai simple fără a altera informaţia
cuprinsă în el.
In varianta propusă de Codd în 1972, procesul avea doar trei forme. Mai târziu au fost adăugate încă două forme şi a
fost dată o definiţie mai strictă formei normale trei.
Obiectivele normalizării:
− Reducerea spaţiului de stocare a datelor;
− Reducerea anomaliilor ce apar după actualizări;
− Reducerea riscului de a apărea în bază date inconsistente etc.
Prima formă normală (1FN)
Intuitiv, forma normală 1 revine la eliminarea grupurilor care se repetă.
Definiţie. Spunem că o relaţie este 1-normalizată şi notăm 1FN, dacă şi numai dacă orice atribut al său este atomic
(indivizibil) şi un tuplu nu conţine atribute sau grupuri de atribute repetitive.
O altă definiţie a lui 1FN care spune acelaşi lucru, dar este mai intuitivă ar fi: 1FN conţine tabele pentru care
intersecţia fiecărei coloane cu fiecare rând conţine o valoare unică.
Valoarea unui atribut dintr-un tuplu este unică în domeniul atributului respectiv.
Algoritm pentru aducerea unei relaţii în 1FN:

A doua formă normală (2FN)


Intuitiv, forma normală 2 revine la eliminarea datelor redundante.
Definiţie. Spunem că R este 2-normalizată şi notăm 2FN dacă şi numai dacă relaţia este 1FN şi atributele noncheie nu
depind numai de o parte a cheii primare.
Pentru a obţine 2FN se analizează câmpurile în raport cu cheia primară care în acest caz este o cheie multivalorică
(multiplă sau compusă), adică o combinaţie de câmpuri. Dacă există un câmp care nu depinde de întreaga cheie primară,
atunci relaţia nu este 2NF.
Un tabel care are cheie multiplă poate fi transformat în tabel cu cheie primară univalorică prin introducerea unui câmp
nou cu rol de cheie primară, numită şi cheie surogat. Acest câmp nou nu are valoare informaţională, el se produce
secvenţial şi evită lucrul cu chei multiple. Lucrul cu chei multivalorice este mai costisitor în timp, dar alegerea între cheie
primară univalorică sau multivalorică este la latitudinea celui ce creează baza.
Algoritm pentru aducerea unei relaţii în 2FN
pag. 84
A treia formă normală (3FN)
Intuitiv, forma normală trei revine la eliminarea coloanelor care nu depind de chei.
Definiţie. Fiind date: R relaţie, X submulţime de atribute ale lui R, A atribut din R spunem că A este dependent
tranzitiv de X dacă există Y astfel încât X Y, Y A.
Definiţie. Spunem că R este 3-normalizată şi notăm 3FN dacă şi numai dacă este 2FN şi orice atribut noncheie nu
depinde tranzitiv de cheia primară a lui R.
Aceasta revine la a muta în alt tabel fiecare câmp ce depinde de orice altceva decât de cheia primară.
Algoritm pentru aducerea unei relaţii în 3FN prin eliminarea dependenţelor funcţionale tranzitive
pag. 85-86
3FN se poate obţine şi cu ajutorul unei scheme de sinteză. 86-88
Forma normală Boyce-Codd
Definiţie. O relaţie R este în forma normală Boyce-Codd (BCNF) dacă şi numai dacă pentru orice dependenţă
funcţională totală X→A, X este o cheie a lui R.
Relaţia R este în forma normală Boyce-Codd dacă şi numai dacă fiecare determinant (atribut/mulţime de atribute
neredundante, care constituie un identificator unic pentru un alt atribut/mulţime de atribute ale unei relaţii date) este o
cheie candidat.
pag. 88-89
O relaţie poate fi adusă în BCNF chiar dacă nu este în 3FN (ea putând fi în 1FN sau 2FN) deoarece dependenţele
funcţionale parţiale şi cele tranzitive sunt tot dependenţe noncheie (dependenţe ai căror determinanţi nu sunt chei
candidat).
pag. 89-90
A patra formă normală (4FN)
Definiţie. Spunem că R este 4-normalizată şi notăm 4FN dacă izolează relaţiile independente multiple.
Spre deosebire de BCNF care elimină redundanţele date de relaţiile singulare, 4FN elimină redundanţele date de relaţiile
m:n (adică datorate dependenţei multiple).
O relaţie este în a patra formă normală dacă şi numai dacă:
- Relaţia este în BCNF;
- Nu conţine relaţii m:n independente.
pag. 90-91
13
A cincea formă normală (5FN)
Definiţie: 5FN sau a cincea formă normală presupune divizarea tabelelor aduse la a patra formă normală în scopul
reducerii numărului de înregistrări (tuple) care trebuie introduse, modificate sau şterse la diferitele operaţii de
actualizare.
5FN este mai mult teoretică decât practică şi ajută la eliminarea redundanţelor ce apar în relaţiile m:n dependente.
pag. 92
Etapele normalizării [4]
− Se inventariază toate atributele şi se constituie tabelul iniţial, general;
− Se determină cheia primară a tabelului iniţial şi se determină toate dependenţele funcţionale care decurg de aici;
− Se inventariază toate dependenţele funcţionale relevante şi ireductibile dintre câmpurile tabelului iniţial;
− Se elimină dependenţele parţiale prin „ruperea” tabelului iniţial în tabele cu schemă mai simplă;
− Din tabelele obţinute se elimină dependenţele tranzitive, prin „spargerea” succintă a tabelelor în altele cu schemă
din ce în ce mai simplă, astfel încât nici unul din tabelele finale nu conţine dependenţe parţiale sau tranzitive;
− Se identifică eventualele dependenţe multivaloare şi dacă există asemenea dependenţe, se operează noi descompuneri
ale tabelelor, care vor fi în 4FN;
− Se încearcă determinarea eventualelor dependenţe de joncţiune şi pe baza acestora, relaţiile sunt aduse în 5FN.
4.4. Normalizarea BDOO [12]
Proiectarea unei BDOO implică proiectarea schemei obiect care se realizează în 4 paşi:

CAPITOLUL 5
SQL

5.1. LMD – generalităţi [21]


Am studiat în capitolele le anterioare despre LMD-uri şi am văzut că acestea cuprind comenzi pentru modificarea
şi interogarea unei baze de date.
Clasificarea LMD-relaţionale:
− ALGEBRICE – au la bază teoria mulţimilor. Exemplu de limbaj algebric: SEQUEL cu extensia comercială SQL.
− PREDICATIVE – au la bază calcul predicatelor şi pot fi:
• Orientate pe tupluri, exemplu: QUEL,
• Orientate pe domenii, pot fi:
o Non-grafice, ex: FQL;
o Grafice, acestea pot fi:
Cu variabile domeniu explicite, exemplu: limbajul QBE
Fără variabile domeniu explicite, ex: VGQF
SQL limbaj standard introdus de ANSI în 1986 (SQL-86), este atât un limbaj algebric interactiv cât şi integrat într-un
limbaj de programare. El permite definirea, modificarea, interogarea şi controlul securităţii unei baze de date. Există peste
100 de versiuni ale limbajului.
pag. 96-97
5.2. Standardul SQL
SQL (Structured Query Language) standard este unul dintre cele mai puternice limbaje structurate pentru interogarea
bazelor de date relaţionale, permite rapid utilizatorului: manipularea, regăsirea datelor, actualizarea şi administrarea bazei
de date. Este un limbaj de definire a datelor declarativ, în care utilizatorul face interogările fără să specifice algoritmii de
lucru necesari obţinerii răspunsurilor.
Standardul SQL cuprinde:
LDD, limbaj de definire a datelor/schemei relaţionale, folosit pentru:
− Crearea tabelelor
• cuprinde clauze:
o pentru crearea schemei bazei de date: CREATE SCHEMA, CREATE TABLE, CREATE VIEW;
o clauza de identificare a utilizatorului: AUTHORIZATION;
o clauza de acordare a privilegiilor GRANT;
o de modificare a tabelelor ALTER TABLE (cu opţiunile: ADD; MODIFY, ENABLE, DISABLE, DROP
pentru adăugarea, modificarea, activarea, dezactivarea sau anularea unei constrângeri).
• La crearea de tabele pot fi adăugate constrângeri declarative:
o asupra domeniului, cu comanda CREATE DOMAIN (valorile luate de atribute: DEFAULT, NOT NULL,
UNIQUE, CHECK);
o de integritate a entităţii (PRIMARY KEY), sau de integritate referenţială (FOREING KEY);
o referitoare la atribute, cu comanda CREATE ASSERTION.

14
− Definirea indecşilor. Indexul este un obiect al schemei bazei de date, este independent de date atât fizic cât şi
logic, permite acces direct şi rapid la informaţii, se defineşte prin: CREATE INDEX, ALTER INDEX, DROP
INDEX.
− Definirea grupului (cluster-ului) specifică SQL*PLUS. Utilizat în operaţiile de compunere, la regruparea fizică a
două sau mai multor tabele, pentru a face baza mai performantă, se defineşte prin: CREATE CLUSTER, ALTER
CLUSTER, DROP CLUSTER.
− Definirea vizualizării. Se defineşte pornind de la o cerere, este de aceleaşi tip şi are aceleaşi constrângeri cu
obiectul la care se referă, se realizează cu comanda CREATE VIEW.
LMD, limbaj de manipulare a datelor, folosit de utilizator, lucrează cu operatorii: INSERT, UPDATE şi DELETE.
LID, limbaj pentru interogarea datelor bazei de date, lucrează cu clauza SELECT care are sintaxa:
SELECT [ALL/DISTINCT/UNIQUE] listă selecţie
FROM listă nume_tabele
WHERE criteriul de selecţie asupra liniilor (pe orizontală)
ORDER BY listă de atribute, criteriu [..]
GROUP BY listă de atribute de grupare
HAVING criteriul de selecţie asupra grupurilor
LCD, limbaj pentru controlul securităţii şi integrităţii bazei de date, asigură:
o Coerenţa datelor în cazul manipulării lor de către mai mulţi utilizatori, folosind conceptele de tranzacţie şi acces
concurent. Prin tranzacţie înţelegem unitatea logică ce grupează mai multe comenzi SQL. LCD marchează
începutul şi sfârşitul unei tranzacţii prin BEGIN şi END. Încheierea normală sau anormală a unei tranzacţii este
semnalată prin: COMMIT şi ROLLBACK.
o Confidenţialitatea datelor prin protejarea lor la accesul neautorizat al unor utilizatori. Pentru aceasta se folosesc
clauzele GRANT pentru acordarea de privilegii unui utilizator, cu sintaxa:
GRANT privilegiu1 [, privilegiu 2...]
ON nume tabel sau vizualizare
TO utilizator 1 [, utilizator 2... ]
şi clauza REVOKE pentru retragerea privilegiilor. Clauza are
sintaxa similară cu GRANT.
5.3. SGBD ACCESS şi limbajul SQL
SGBD-ACCESS:
• acceptă utilizarea limbajului SQL;
• face parte din pachetul de programe Microsoft Office;
• lucrează sub sistemul de operare Windows;
• conţine o colecţie de obiecte: Table; Form; Query sau grila QBE (Query by Example-interogare prin exemplu);
Report; Module; Macro.
Obs. QBE permite proiectarea unor interogări complexe. Informaţia din grila QBE este automat transformată folosind
SQL în instrucţiuni.
Deschiderea ferestrei SQL
1. Se lansează programul ACCESS;
2. Se selectează crearea unei noi baze de date;
3. Din panoul din stânga al ferestrei ACCESS, din lista OBJECTS se selectează QUERIES (Interogări);
4. In fereastra nou deschisă se selectează opţiunea CREATE QUERY IN DESIGN VIEW;
5. Se închide caseta SHOW TABLE;
6. Din meniul View se selectează modul de vizualizare SQL View sau de pe bara de instrumente se selectează
butonul vizualizare SQL. Se deschide fereastra SQL.
Crearea unei interogări
1. Se repetă paşii 1-4 de la deschiderea unei ferestre SQL;
2. Din caseta SHOW TABLE se aleg cu butonul Add: tabelele (Tables); interogările (Queries) sau ambele (Both) care
vor fi folosite în interogarea SQL;
3. Din meniul View se selectează modul de vizualizare SQL View sau de pe bara de instrumente se selectează
butonul vizualizare SQL;
4. În fereastra deschisă se tastează instrucţiunile SQL.
Execuţia unei interogări:
− Cu butonul din bara Query Design;
− Cu comanda Run, meniul Query.
Observaţie. Dacă cererea de interogare SQL ACCESS are erori de sintaxă sau rezultatul nu este cel aşteptat se revine
în modul de afişare SQL View şi se fac corecturile necesare.
Pentru a-şi asigura exclusivitatea, majoritatea producătorilor de sisteme de gestiune a bazelor de date îşi creează
propriile extensii ale limbajului SQL. SQL ACCESS nu face excepţie, astfel, deşi respectă îndeaproape standardul
ANSI şi el prezintă modificări, cum ar fi:
15
− Limbajul DCL nu este suportat de ACCESS. Controlul şi permisiunile de securitate acceptate de ACCESS nu au fost
implementate prin DCL
− Access are suport limitat pentru limbajul DDL, la crearea tabelelor folosindu-se în general instrumentele grafice.
pag. 99-112
Se dezvolta la laborator.

16

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