Documente Academic
Documente Profesional
Documente Cultură
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)
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
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}
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.
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).
CAPITOLUL 4.
PROIECTAREA BAZELOR DE DATE
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:
CAPITOLUL 5
SQL
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