Sunteți pe pagina 1din 55

2.

Baze de date, sisteme de baze de date, etapele realizarii unei baze de date
Baza de date
= un ansamblu structurat de date coerente, fr redundan inutil, astfel nct acestea pot
fi prelucrate eficient de mai muli utilizatori ntr-un mod concurent
= o colecie de date persistente, care sunt folosite de ctre sistemele de aplicaii ale
unei anumite ntreprinderi
Sistem de baze de date = consta din:
1.BD propriu-zis (n care se memoreaz datele)
2.SGBD (gestionarea i prelucrarea complex a datelor)
3. dicionarul BD (metabaza de date: informaii despre date, structura acestora, statistici, documentaie)
4.mijloace hardware (comune sau specializate);
5.reglementri administrative destinate bunei funcionri a sistemului
6.personalul implicat:
administratori de date i baze de date,
proiectani (designeri) de baze de date,
programatori de aplicaii,
utilizatori finali.
Administratorul de date:
= un manager care stabileste
1)care sunt datele ce trebuie stocate
2)regulile de intretinere si de tratare a acestor date
Administratorul bazei de date:
= o persoan sau un grup de persoane ce rspund de ansamblul activitilor legate de BD

creeaz baza de date real,


implementeaz elementele tehnice de control,
asigura funcionarea sistemului la performane adecvate, monitorizeaza performanele BD,
furnizeaz diverse servicii tehnice

este responsabil cu implementarea deciziilor DA i cu controlul general al sistemului, la nivel tehnic =>
are 4 mari categorii de atribuii:
de proiectare,
administrative,
operative,
de coordonare.
Proiectanii de BD: (i) cei care abordeaz nivelul logic:
proiecteaz conceptual baza de date (independent de programele de aplicatii si limbajele de
programare) (ii) cei care abordeaz nivelul fizic:
aleg modul de implementare fizica a modelului conceptual
Programatorii de aplicaii:
scriu programele aplicaie ce confer funcionalitatea cerut de utilizatorii finali
utilizeaza limbaje de programare de nivel inalt (C++, Java, PL/SQL etc.).

Utilizatorii finali:
acceseaz interactiv baza de date
pot fi:

Etapele realizarii unei BD


1) Analiza situatiei existente
2) Priectarea BD
3) Implementarea
1)

a) examinam sistematic si aprofundat acel aspect din viata reala


b)I)gradul de generalitate(scope-ul)
II)dimensiunea BD
III)cateogriile si numarul de viitori useri.
2) 3 etape:
I)proiectare la nivel conceptual
II) proiectare la nivel logic
III) proiectare la nivel fizic
Aici imi selectez SGBD-ul, se fac interfetele si aplicatiile.
3)Realizarea propriu-zisa(scrierea programelor)
Conversia + incarcarea datelor;
Testearea prototipului
Implementarea propriu-zisa
3. Clasificarea BD
Criterii de clasificare a BD:
1)modelul de date
Prerelational
Relational
Postrelational
2)nr de useri
Cele mai frecvente
Permit accesul concurrent la BD;
Pot fi si sisteme monoutilizator
3)nr. De calc pe care sunt sticate BD si SGBD
centralizate:
datele si SGBD sunt stocate pe o singura statie (calculator)
distribuite:
i datele si SGBD sunt distribuite pe mai multe calculatoare interconectate printr-o retea de
comunicatie.
4)modul de functionare
teleprocesarea
arhitectura tradiional: 1! calculator cu 1! unitate CPU i
un numar de terminale, incapabile s funcioneze singure;

arhitectura fiier-server
procesarea este distribuit n reea (de obicei LAN)
arhitectura cuprinde fiierele cerute de aplicaii i SGBD-ul
aplicaiile i funciile SGBD sunt executate pe fiecare staie de lucru, solicitnd atunci cnd este nevoie
fiiere de pe serverul de fiiere;
arhitectura client-server exist
un proces client, care necesit resurse i
un proces server, care ofer resurse.
5) implementarea sistemului de BD.
se combina ultimele 3 criterii : numarul de utilizatori, modul de stocare a BD i SGBD i modul de
functionare a sistemului de baze de date:
I.sisteme client-server centralizate de tip monouser
II.sisteme client-server centralizate de tip multiuser
III.sisteme client-server distribuite de tip multiuser.
I.Sisteme client-server centralizate de tip monouser
BD i SGBD sunt stocate pe acelasi server care raspunde cererilor unui singur client care acceseaza BD

II.Sisteme client-server centralizate de tip multiuser

BD i SGBD sunt stocate pe acelasi server care raspunde cererilor mai multor clienti care acceseaza
BD

aplicatiile client sunt executate pe statii diferite (=> cu puteri de calcul inferioare serverului), conectate
printr-o retea de comunicatie cu calculatorul pe care ruleaza serverul.
III.Sisteme client-server distribuite de tip multiuser
O BD distribuita = = o colectie de date care, din punct de vedere logic, apartin aceluiasi sistem dar
care, din punct de vedere fizic, pot sa fie memorate pe mai multe statii de calcul conectate printr-o retea
de comunicatie
SGBD distribuit = = sistemul software care gestioneaza o astfel de BD
Caracteristici:
cresterea capacitatii destocare i prelucrare
cresterea complexitatii
Principala cerinta (partial indeplinita): transparenta = capacitatea unui sistem distribuit de a ascunde
detaliile de implementare, astfel nct utilizatorii sa poata accesa datele pe baza unui model de nivel
nalt, fara a fi necesara cunoasterea exacta a modului de amplasare, replicare sau comunicare a datelor.

BD i SGBD sunt distribuite pe mai multe statii conectate printr-o retea de comunicatie
aplicatiile client sunt executate pe statii diferite , conectate printr-o retea de comunicatie cu
calculatoarele (interconectate) pe care ruleaza serverul.
4. Sisteme de gestiune a bazelor de date (definitie, arhitectura, obiective)
Sistem de gestiune a bazelor de date (SGBD Data Base Management System)
= un produs software care asigur interaciunea cu o BD, permind definirea, consultarea i actualizarea
datelor din BD
Structura unui SGBD:
complexa; dinamica; minimum 5 clase de module:
1.programe de gestiune a bazei de date (PGBD): realizeaz accesul fizic la date ca urmare a unei
comenzi;

2.module pentru tratarea LDD permit traducerea unor informaii despre date n obiecte ce pot fi apoi
exploatate n manier procedural / neprocedural;
3.module pentru tratarea LMD (interpretativ, compilativ, generare de programe) permit utilizatorilor
inserarea, tergerea, reactualizarea sau consultarea informaiei dintr-o baz de date;
4.module utilitare asigur ntreinerea, prelucrarea, exploatarea corect i uoar a bazei de date;
5.module de control
permit controlul programelor de aplicaie,
asigurarea confidenialitii i integritii datelor,
rezolvarea unor probleme de concuren, r
ecuperarea informaiei n cazul unor avarii sau defeciuni hardware sau software etc.
Cele 4 niveluri de abstractizare i de percepie a datelor intr-o BD:
LOW
Intern

Conceptual
Logic
Extern

nivel la care datele exista efectiv


aceste nivele reprezinta numai
virtualizari ale datelor care exista
doa r la nivel intern

HIGH
=> arhitectura pe 3 niveluri a BD si existenta unor corespondente intre acestea.
Nivelul extern (modelul extern, subschema, vizualizarea)
reprezint viziunea utilizatorului final asupra datelor
permite asigurarea unui nivel de securitate a datelor: un utilizator va accesa doar datele descrise n
schema sa extern Nivelul logic (una din schemele logice posibile ale datelor)
reprezint viziunea programatorului de aplicaie asupra datelor; Nivelul conceptual (schema
conceptual a datelor: articol, nregistrare, zon)
este nivelul central
reprezint viziunea programatorilor de sistem asupra datelor
corespunde structurii semantice a datelor fr implementarea pe calculator
Nivelul intern (schema fizic a datelor: bit, octet, adres)
permite descrierea datelor unei BD sub forma n care sunt stocate n memoria calculatorului
sunt definite fiierele care conin aceste date, articolele din fiiere, cile de acces la aceste articole etc.
Observatie
La nivel conceptual sau intern:
schemele respective descriu in mod unic o baz de date
La nivel extern:
schemele reprezint o descriere a unei pri a bazei de date ce corespunde viziunii unui program sau
unui utilizator =>Pentru o BD particular exist: 1! schem intern, 1! schem conceptual mai multe
scheme externe.
OBIECTIVE:
SGBD (gestionarea i prelucrarea complex a datelor)
5. Structura fizica a unei BD Oracle (fiiere de date,fiiere de reluare, fiiere de control)

Structura fizic a bazei de date Oracle:


A.fiiere de date (Datafiles),
B.fiiere de reluare (Redo Log Files),
C.fiiere de control (Control Files);
A. Fiierele de date = fiiere fizice ale SO
stocheaz datele tuturor structurilor logice ale bazei;
alocarea unui fiier de date bazei Oracle: SO
terge informaiile nefolosite
acord autorizaii pentru fisier;
primul fiier de date creat: fisierul care stocheaz dicionarul datelor.
B. Fiierele de reluare = nregistreaz toate modificrile care
au loc asupra datelor bazei (indiferent dac au fost permanentizate sau nu) i
nu au fost scrise nc n fiierele de date;
sunt specificate n momentul crerii sau modificrii bazei
sunt utilizate n manier circular (cele care au fost folosite n ntregime, pot fi arhivate pn cnd
sistemul le va reutiliza)
asigur protecia BD n cazul defeciunilor
o BD Oracle conine dou sau mai multe fiiere de reluare.
C. Fiierele de control = fiiere binare de dimensiune redus, necesare pentru pornirea i funcionarea
bazei de date;
orice BD Oracle deine cel puin un fiier de control;
fiecare fiier de control
este asociat unei singure BD
conine informaii despre structura fizic a acesteia
este creat odat cu respectiva BD (Oracle permite existena fiierelor de control multiplexate
La pornirea unei instane Oracle:
sistemul folosete fiierul de control pentru:
a identifica baza i
a determina dac aceasta este n stare valid pentru utilizare;
sunt identificate fiierele de reluare necesare execuiei operaiilor bazei de date;
Fiierele de control reflect automat schimbrile (creare, redenumire sau tergere) care au loc la nivelul
fiierelor de date sau de reluare;
Informaiile din fiierele de control pot fi modificate doar de serverul Oracle;
6. Structura logica a unei BD Oracle (blocurile de date, extensiile, segmentele, spaiile tabel,
obiectele schemei)
Structura logic a bazei de date Oracle:
a.blocurile de date (data block),
b.extensiile (extent),
c.segmentele (segment),
d.spaiile tabel (tablespace),
e.obiectele schemei (schema object).
a)Blocuri de date = unitati logice prin care sistemul administreaz spaiul de stocare al fiierelor de
date; Blocul = cea mai mic unitate I/O folosit de baza de date, = corespunztoare unui bloc fizic de

octei de pe disc, = dimensiunea sa: este definit n momentul crerii BD, poate fi modificat ulterior,
este un multiplu al dimensiunii blocurilor fizice de la nivelul SO; Structura blocului de date Oracle:
un antet (header),
un spaiu liber (free space),
un spaiu pentru date (data space).
Blocuri de date (cont.)
Antetul conine
informaii generale referitoare la bloc
un catalog al tabelelor (table directory):
un catalog al liniilor (row directory):
Spaiul liber al blocului de date este alocat pentru inserarea de noi linii
sau actualizarea liniilor care necesit spaiu suplimentar.
Alegerea blocului n care va fi inserat o linie nou depinde de spaiul
liber al acestuia i de valorile parametrilor PCTFREE i PCTUSED.
ntr-un bloc, se pot introduce date atta timp ct dimensiunea spaiului
liber este mai mare dect limita fixat de parametrul PCTFREE.
Sistemul Oracle va considera acest bloc indisponibil pentru inserarea de
noi linii, pn cnd procentajul spaiului utilizat coboar sub valoarea
dat de PCTUSED.
b) c) Extensia i segmentul
Extensia = unitate logica de alocare a spaiului BD,
= compus dintr-o mulime contigu de blocuri de date (din acelai fiier
de date);
Segmentul = unitate logica formata din una sau mai multe extensii;
Iniial, segmentul are o singur extensie (initial extent).
b) c) Extensia i segmentul (cont.) O extensie
este alocat atunci cnd este creat sau extins un segment,
este dezalocat (in general) cnd segmentul este suprimat sau trunchiat;
Eliberarea unei extensii implic tergerea datelor existente n blocurile
de date alocate acesteia (ele vor fi reutilizate pentru extensiile nou create);
b) c) Extensia i segmentul
Segmentul = corespunde unui singur obiect fizic stocat =
folosete blocuri de date care se gsesc n acelai spaiu tabel; Tipuri de segmente din BD Oracle :
segmente de date (data segment),
segmente index (index segment),
segmente temporare (temporary segment),
segmente de revenire (undo segment) etc.
b) c) Extensia i segmentul (cont.) Segmentele de date
sunt definite atunci cnd este folosit comanda de creare a unui tabel sau a unei grupri
un singur segment de date este folosit pentru stocarea tuturor datelor dintr-un tabel nepartiionat care nu
face parte din nicio grupare, dintr-o partiie a unui tabel partiionat sau dintr-o grupare de tabele
Segmentele index
sunt folosite pentru a stoca datele unui index

fiecare index nepartiionat este coninut ntr-un singur segment. n cazul indecilor partiionai, fiecrei
partiii i se asociaz cte un segment index Segmentele temporare
sunt utilizate de sistem pentru analiza i execuia comenzilor SQL care necesit un spaiu temporar de
stocare
sistemul aloc n mod automat segmente temporare atunci cnd este necesar i le suprim dup
execuia comenzii SQL
segmentele temporare sunt alocate n majoritatea cazurilor de sortare (atunci cnd operaia respectiv
nu se poate face n memorie sau dac folosirea indecilor nu presupune o soluie mai eficient).
b) c) Extensia i segmentul (cont.) Segmentele de revenire
BD conine unul sau mai multe segmente de revenire, folosite pentru:
anularea aciunii tranzaciilor
asigurarea consistenei la citire,
efectuarea operaiile de recuperare a bazei de date;
nu pot fi accesate de ctre utilizatorii sau administratorii bazei de date
doar de ctre sistem.
d) Spatiul tabel = unitate logica de stocare formata din 1,2, segmente
grupeaza logic o mulime de obiecte:
fiecare obiect al BD are specificat un spaiu tabel n care trebuie s fie creat ->
datele care alctuiesc obiectul sunt apoi stocate n fiierele de date alocate spaiului tabel respectiv ->
un fiier de date poate fi alocat unui singur spaiu tabel;
fiecarui utilizator i se poate aloca explicit un spaiu tabel, n care vor fi stocate toate obiectele create de
el
alocarea se efectueaza automat
folosirea mai multor spaii tabel -> flexibilitate n utilizarea BD
BD = {spaii tabel} Tipuri de spatiu tabel in BD Oracle:
spaiul tabel SYSTEM,
spaii tabel non-SYSTEM.
e) Schema = mulimea obiectelor bazei de date, aflate n posesia unui utilizator (fiecare utilizator deine
o singur schem).
numele schemei este acelai cu numele utilizatorului
nu exist o coresponden biunivoc intre spaiile tabel i schemele de obiecte
obiectele aceleiai scheme pot fi n spaii tabel diferite
un spaiu tabel poate conine obiecte din mai multe scheme
pentru referirea unui obiect din schema altui utilizator, trebuie specificat att numele obiectului, ct i
schema din care face parte, prin folosirea notaiei schema.obiect
7. Structura unei BD Oracle: dictionarul datelor
Dictionarul datelor (catalogul de sistem)
= conine date despre date (metabaza de date) i.e. informaii despre baza de date:
definiiile tuturor obiectelor din schemele bazei
cantitatea de spaiu alocat pentru obiectele schemelor
cantitatea de spaiu utilizat de acestea la momentul curent
valorile implicite ale coloanelor
constrngerile de integritate
numele utilizatorilor Oracle
privilegiile i role-urile acordate fiecrui utilizator

informaii de auditare etc.


Dictionarul datelor (cont.)
este generat automat la crearea BD;
este reactualizat de ctre serverul Oracle dup fiecare comand LDD sau LCD;
coninutul su reflect imaginea bazei de date (structura fizic i logic) la un moment dat;
din punct de vedere structural este compus:
tabele de baz ale dictionarului i
vizualizri publice asupra acestora; => vizibil i pt sistem i pt utilizatori.
Dictionarul datelor (cont.)
Tabelele de baz
stocheaz informaiile asociate BD,
sunt primele obiecte create;
Vizualizrile
decodific informaiile stocate n tabelele de baz i
le sintetizeaz pentru a fi disponibile utilizatorilor;
este deinut de ctre utilizatorul SYS i se afl n spaiul tabel SYSTEM;
sistemul poate accesa dicionarul datelor pentru a obine informaii despre:
utilizatori,
obiecte,
structurile de stocare;
orice utilizator poate consulta dicionarul datelor pentru a afla informaii despre baza de date
(documentare sau administrare)
utilizatorii fr privilegii de administrare pot accesa doar vizualizrile prefixate de USER_ sau ALL_
pentru a obine lista vizualizrilor disponibile se poate interoga vizualizarea DICTIONARY care are
sinonimul DICT
se utilizeaza instruciunea SELECT din SQL.
8. Arhitectura interna a sistemului Oracle ( arhitectura proceselor: procese user, procese Oracle
(procese server, procese background))
Arhitectura proceselor
Oracle, se execut:
o aplicaie sau un utilitar Oracle (prin intermediul crora se lanseaz comenzi SQL asupra bazei de
ex. Recovery Manager, Oracle Entreprise Manager, Oracle Forms)
un cod Oracle server (cu ajutorul cruia sunt interpretate i procesate comenzile SQL);
Un proces = un mecanism al sistemului de exploatare care permite executarea unor operaii de calcul
sau operaii I/O;
Fiecrui proces i se aloc o zon privat de memorie
Serverul Oracle : dou tipuri generale de procese:
procese user: execut aplicaiile,
procese Oracle (procese server i background): asigur gestiunea informaiilor dintr-o baz de date.
Un proces user
creat de sistemul Oracle pentru:
a executa codul unei aplicaii program sau
ca urmare a lansrii unui utilitar Oracle

se execut pe maina client


ncepe i se termin odat cu aplicaia utilizatorului resp.;
nu interacioneaz n mod direct cu serverul Oracle ci genereaz mesaje printr-un program interfa
(UPI = User Program Interface).
Un proces Oracle = execut instruciunile interne ale serverului Oracle
este invocat de alte procese pentru a ndeplini anumite operaii n favoarea acestora;
dou tipuri de procese Oracle:
procese server (server process),
procese de fundal (background process).
Procesele Oracle
Un proces server
interacioneaz cu procesele user ,
comunic n mod direct cu serverul Oracle pentru a transmite cererile acestora printr-un program de
interfata Oracle (OPI = Oracle Program Interface),
este lansat cnd utilizatorul iniiaz o sesiune.
Procesele Oracle
Un proces de fundal (background process)
reuneste funciile executate pentru fiecare proces user
execut operaiile I/O asincrone,
monitorizeaz alte procese Oracle;
folosit pentru a mbunti performanele unui sistem multiprocesor, n prezena mai multor utilizatori,
serverul Oracle creeaz cte un set de procese background pentru fiecare instan

9. Arhitectura interna a sistemului Oracle (arhitectura memoriei (SGA, PGA))


Arhitectura interna a sistemului Oracle (cont.)
Arhitectura memoriei
structural, memoria este compus din:
o zona de memorie partajata = zona global sistem (SGA = System Global Area),
o zona de memorie nepartajata = zona global program (PGA = Program Global Area);
toate structurile de memorie se gsesc n memoria central,
sunt create i utilizate pentru a depozita:
codul programelor executate,
datele necesare n timpul execuiei acestora,
datele folosite n comun de mai multe procese Oracle,
informaiile referitoare la sesiunile curente etc.
SGA = System Global Area = zona globala sistem = = este un grup de structuri partajate de memorie
care conin date i informaii de control relative la BD i la o instan;
fiecare instan are propria sa SGA care:
este alocata atunci cnd este pornita instana
este eliberata n momentul opririi instantei;
datele coninute n SGA sunt folosite n comun de ctre utilizatorii conectai la instan,
informaiile coninute n SGA sunt repartizate n diferite zone (database buffer cache, redo log buffer,
shared pool etc.), care sunt alocate la pornirea instanei;

SGA fix = o zona special a SGA folosit pentru stocarea informaiilor despre starea bazei de date i a
instanei
informaiile sunt accesate de ctre procesele background,
nu poate conine date ale utilizatorilor.
PGA = Program Global Area = zona globala program = = zon de memorie care conine date i
informaii de control relative la un singur proces Oracle
poate fi folosit de un singur proces,
este alocat la crearea procesului,
este dezalocat la terminarea acestuia,
este format - in general din:
o zon privat SQL (conine date - de ex., informaii de legtur i structuri de memorie necesare rulrii
comenzilor)
o zon de memorie alocat sesiunii,
zone de lucru SQL.
10. Modelarea semantic a informaiei (modelul i diagrama entitate-relatie E/R)
Modelul entitate-relatie (modelul E/R)
= una dintre cele mai cunoscute i utilizate abordri ale modelrii semantice (= una din primele etape n
proiectarea BD, etapa numita proiectarea schemei conceptuale)
Metodologia E/R: considerata:
cea mai buna metodologie pentru proiectarea BD
una dintre cele mai bune metodologii pentru dezvoltarea
ModelulE/R
= model de date conceptual de nivel nalt, independent de platforma hardwareutilizat i de tipul
SGBD-ului
constituit din concepte care descriu
structura BD i
tranzaciile de regsire sau reactualizare asociate
mparte elementele unui sistem real n dou categorii:
entiti
relaii (legturi, asocieri, nu concept matematic) ntre aceste entiti;
entitiile i legturile au anumite caracteristici, numite atribute.
Diagramele E/R
= reprezentare grafic a modelului E/R
= o tehnic de reprezentare grafica a structurii logice a BD;
Conventii de reprezentare in diagrama E/R1:
1.entitile sunt reprezentate prin dreptunghiuri;
2.relaiile dintre entiti sunt reprezentate prin arce neorientate;
3.cardinalitatea minim este indicat n paranteze, iar cardinalitatea maxim se scrie fr paranteze;
4.atributele care reprezint chei primare trebuie subliniate sau marcate prin simbolul #, plasat la
sfritul numelui acestor atribute; atributele obligatorii/optionale sunt precedate de */o;
5.nu este necesar s fie specificate, n cadrul diagramei, toate atributele.
Algoritm de proiectare a diagramei E/R
1.reprezentarea entitilor din cadrul sistemului analizat;

2.reprezentarea relaiilor (asocierilor) dintre entiti i a cardinalitii;


3.reprezentarea atributelor aferente entitilor i relatiilor dintre entiti;
4.evidentierea atributelor de identificare a entitilor, adic a cheilor.
11. Modelul i diagrama entitate-relatie extinse (specializare, generalizare, mostenire, restrictii n
ierarhia Is-A: definitii, exemplificari)
Modelul Entitate-Relatie Extins (Enhanced Entity-Relationship Model = E-E/R model) =
= permite definirea de ierarhii de clase de entitati prin specializare i generalizare

Cele 2 procese de abstractizare a datelor:


au ca punct de plecare valorile unui/mai multor atribute clasificatoare in raport cu entitatile modelului
E-E/R
nu sunt neaparat inverse unul celuilalt;
Modul de reprezentare grafica:
diagrama entitate-relatie extinsa
Specializare =
= proces de abstractizare a datelor prin care, pornind de la o entitate data, se definesc una sau mai multe
subentitati, diferentiate ntre ele n functie de:
rolul specific pe care l au n modelul de datesau
valorile unui/unor atribute clasificatoare;

1.fie entitatea PERSONAL_FMI; din ea se pot defini prin specializare subentitatile:


PERSONAL_DIDACTIC, PERSONAL_TEHNIC i PERSONAL_ADMINISTRATIV in conformitate
cu atributiile (rolurile) pe care angajatii FMI le au n cadrul facultatii,
2.fie entitatea UNITATE_ADMINISTRATIVA si atributul tip=> se pot defini subentitatile: SAT,
COMUNA, ORAS, MUNICIPIU, SECTOR, JUDET, fiecare avnd atributele sale proprii;

Entitate= clasa; subentitate = subclasa.


Generalizare =
= procesul de abstractizare a datelor prin care se creeaza o supraentitate pornind de la mai multe entitati
care au unul sau mai multe atribute comune
din entitatile TABLET_PC, NOTEBOOK , LAPTOP, DESKTOP, MAINFRAME se poate defini prin
generalizare supraentitatea CALCULATOR ELECTRONIC
Entitati= clase; supraentitate = supraclasa.
Ierarhia de clase ISA =
n modelul E-E/R, subclasele, clasele, supraclasele formeaza o ierarhie de clase;
ntre o subclasa (subentitate ) i o supraclasa (supraentitate) exist o relaie tipic:
numit ISA
de cardinalitatea maxim 1:1 i
de cardinalitate minim 1:0

Reflexivitate i tranzitivitate, nu i simetrie!


Clasele se aliniaz n diagrama E-E/R pe verticala.
Modelul E-E/R este un model de date mult mai general care poate fi transpus n diferite modele de date
specializate, inclusiv modelul OO.
Observatii
pentru noile supraentiti sunt necesare, uneori, chei primare artificiale1
pe langa atributele care le clasifica, subentitatile au i alte atribute specifice rolului lor in model2
Observatie
instanele unei supraclase includ toate instanele subclaselor sale directe, precum i toate instanele
subclaselor acestora =>
exista instante nBD care pot fi vazute simultan la niveluri diferite n ierarhia ISA. =>
conceptul de mostenire din ierarhia ISA permite ca atributele comune la nivelul unei clase i la
nivelurile subclaselor acesteias fie exprimate la nivelul cel mai comun de supraclas, n loc sa fie
repetate la fiecare nivel al ierarhiei de clase=>
atributele sunt motenite descendent n ierarhie NU I ascendent
un cadru didactic (i.e. PERSONAL_DIDACTIC, considerat subentitate a entitii PERSONAL),are ca
atribut titlul stiintific de doctor; acest atribut nu este semnificativ (desi in realitate poate exista) pentru
un inginer (care face parte din PERSONAL_TEHNIC); cheia primar a subentitii
PERSONAL_DIDACTIC va fiCNP, care este si cheia primar a supraentitii PERSONAL.
12. Modelul relational (regulile lui Codd, fundamentarea matematica, structura relationala a
datelor, operatori)
DefiniieRelaie
= se numete relaie peste mulimileM1, M2, Mn orice submulime a produsului lor cartezian:
R M1, x M2, x x Mn.
Exemplu
Fie mulimile
Marca= {Dacia, Ford, Fiat, Audi, Opel, Volvo},
Tip= {benzin, motorin}
CapacCil= {1100, 1200, 1300, 1400, 1600},
NrLoc= {4,5},
NrUi= {2, 4, 5}.
Atunci, entitateaAutomobilpoatefi reprezentatca o relaiepeste acestemulimi:
Automobil Marcax Tip x CapacCilx NrLocx NrUi
Iatctevainstaneale acesteientiti:
(Dacia, benzin, 1400, 5, 4), (Dacia, motorin, 1400, 5, 4), (Dacia, benzin, 1100, 5, 4), (Dacia,
motorin, 1400, 5, 5),
(Ford, motorin, 1400, 5, 5), (Ford, benzin, 1600, 5, 4),
(Fiat, benzin, 1300, 5, 4), (Fiat, benzin, 1100, 5, 4),
(Audi, motorin, 1600, 5, 4), (Opel, benzin, 1400, 5, 5),
(Volvo, benzin, 1400, 5, 5), (Volvo, motorin, 1600, 5, 4)
Modelul relaional
= un model formal de organizare conceptual a datelor,

destinat reprezentrii legturilor dintre date,


bazat pe teoria matematic a relaiilor,
Obiectivele modelului relaional:
1.s permit un grad nalt de independen a datelor,
2.s furnizeze baze solide pentru tratarea semanticii, coerenei i problemelor de redundan a datelor,
3.s permit dezvoltarea limbajelor de prelucrare a datelor;
Modelul relaional vs. modelele prerelationale
3Modelele prerelaionale
apar dou elemente:

accesarea BD:

Modelul relaional
1! element: relaia
=> orice interogare asupra BD este tot o relaie;
independena modelului conceptual de implementarea
fizic
=> s-au introdus o serie de limbaje neprocedurale de
prelucrare a datelor .

Avantaje / dezavantaje ale modelului relaional:


Avantaje:
fundamentarea matematic riguroas,
independena fizic a datelor,
Limite:
exista totui redundan,
ocup spaiu,
apar fenomene de inconsisten,
Regulile lui Codd
SGBD relaional = un sistem de baze de date care respect principiile modelului relaional introdus de
E.F. Codd;
Regula 1regula gestionrii datelor.
Regula 2regula reprezentrii informaiei.
Regula 3regula accesului garantat la date.
Regula 4regula reprezentrii informaiei necunoscute.
Regula 5regula dicionarelor de date
Regula 6regula limbajului de interogare.
Regula 7regula de actualizare a vizualizrii.
Regula 8regula limbajului de nivel nalt.
Regula 9regula independenei fizice a datelor
Regula 10regula independenei logice a datelor.
Regula 11regula independenei datelor din punct de vedere al integritii.
Regula 12regula independenei datelor din punct de vedere al distribuirii.
Regula 13regula versiunii procedurale a unui SGBD.
SGBDminimal relaional:
toate datele din cadrul bazei sunt reprezentate prin valori n tabele,
nu exist pointeri observabili de ctre utilizator,

sistemul suport operatorii relaionali de proiecie, selecie i compunere natural, fr limitri impuse
din considerente interne;
SGBDcomplet relaional:
este minimal relaional i
sistemul suport restriciile de integritate de baz
sistemul suport toate operaiile de baz ale algebrei relaionale.
Principalele caracteristiciale modelului relaional:
1.nu exist tupluri identice,
2.ordinea liniilor i a coloanelor este arbitrar,
3.fiecare coloan definete un domeniu distinct i nu se poate repeta n cadrul aceleiai relaii,
4.articolele unui domeniu sunt omogene,
5.toate valorile unui domeniu corespunztoare tuturor cazurilor nu mai pot fi descompuse n alte valori
(sunt atomice).
13. Regulile de integritate
Reguli de integritate:
a entitilor;
a relaiior
de integritate referenial);
In plus: restricii contextuale(
de integritate impuse de situaia real modelat prinbaza de
date).
Regulile de integritate
(caracteristica de asigurare a integritii)
= aseriuni pe care datele coninute n BD trebuie s le satisfac
Clasificare:
regulile de integritate structurale (inerente modelrii datelor),
minimale pt un SGBDR (definite n raport cu noiunea de cheie a unei relaii):
de cheie,
de entitate,
de referinta;
extinse
regulile de funcionare (de comportament: specifice unei aplicaii particulare).
Cheiecandidat a relatiei R =
= o multime de atribute ale R ale cror valori nu sunt susceptibile de modificari si care pot identifica
unic orice tuplu din R;
Cheieprimara a relatiei R =
= o mulime minimal K de atribute ale R ale cror valori identific unic orice tuplu din R
t1, t2tupluri ale lui R t1(K t2(K) i
t1(K t2(K)
nu poate fi reactualizat ,
reprezentare grafica: atributele componente: subliniate sau urmate de semnul # ;
heie primar;
cheia primara = identifica linii in tabel (tupluri in relatie)
indexul = localizeaz linii in tabel (inregistrari in fisier)

poate folosi in acest scop o cheie secundar.


Supercheiea relatiei R =
= un grup de atribute din cadrul R care conine o cheie a R;
Cheie externaa relatiei R =
fie schemele relaionale R1(P1, S1) i R2(S1, S2),
unde P R1: cheie primar pentru R1,
S
R1: cheie secundar pentru R1,
S
R2: cheie primar pentru R2
S1 este cheie extern(foreign key) pentru R1;
ELEV(CNP, CodClas,Nume, Prenume, Adresa)
CLASA(CodClas, Locaie, nrBanci, nrTable)
Cheia primar poate conine cheia extern

FURNIZOR (codF, nume, prenume, adresa)


COMANDA (data, codP, codF, cantitate,suma).
Modelul relaional respect 3reguli de integritate structural:
Regula 1unicitatea cheii:
cheia primar trebuie s fie unic i minimal;
Regula 2integritatea entitii:
atributele cheii primare trebuie s fie diferite de null;
Regula 3integritatea referirii:
o cheie extern trebuie s fie
-ori nulln ntregime,
-ori s corespund unei valori a cheii primare associate
Observatie
Constrngerile de integritate pot fi implementate:
declarativ,
procedural (cu ajutorul declansatorilor);
Declanator =
= o procedura precompilata
stocata mpreun cu BD,
invocata automat ori de cte ori are loc un anumit eveniment;
14. Proiectarea modelului relational
Problema proiectrii BD:
fiind dat un volum de informaii care trebuie reprezentat ntr-o BD, cum se poate alege o structur logic
adecvat pentru acesta?

exist cteva principii tiinifice care pot fi invocate:


1: Implicarea tuturor participantilor
2: Utilizarea unei abordri constructive
3: Stabilirea fazelor si activittilor
4: Stabilirea unor standarde pentru dezvoltare si documentare coerenta
5: Tratarea BD ca pe nite investitii esentiale
6: Curajul de a renunta sau de a regndi amploarea proiectului
7: Divide et Impera
8: Proiectarea BD in vederea cresterii si modificrii
exist metodologii de proiectare relativ riguroase (ex.: modelarea E/R, care are meritul c este frecvent
utilizat n practic)
n practic:
se ncearc obinerea unei scheme conceptuale corecte
i.e. o schema logica abstracta independenta de hardware, SO, SGBD, limbaj, utilizator etc. ;
se incepe cu modelarea semantic special i.e. cu diagrama E/R;
prezentam 9 reguli de transformare a entitilor, relaiilor i atributelor acestora, n vederea obinerii
schemei conceptuale;

In diagrama conceptuala:

A.Transformarea entitilor
tabeleindependente.
cheia primar nu conine chei externe
cnp;
tabeledependente.
cheia primar a entitilor dependente conine cheia primar a entitii de care depinde (cheie extern)
plus unul sau mai multe atribute adiionale
cheia primara: 2 atribute;
codP (care reprezint cheia primar a entitii de care depinde: PERSONAL_FMI) plus
cod_minor_intr;
subtabele
cheia extern se refer la superentitate si coincide cu cheia primar a acesteia
cheia primara: codPeste si cheia primar a entitii PERSONAL_FMI.
B.Transformarea relatiilorRelaiile 1:1 i 1:n
e tip 1:n
PICTORI_ picteaza_PICTURI

i.e.: cod_pictor
cod_pictor

Relaia 1:1 plaseaz cheia extern n tabelul cu mai puine linii.


Relaia m:n tabelasociativ
cheia primara = juxtapunerea celor doua chei primare (a tabelului principal si a tabelului secundar,
devenite chei externe in tabelul asociativ), eventuale coloane adiionale;
tabelele asociative se deseneaz punctat;
n:m
STUDENTI_urmeaza_CURSURI
i.e.: (codS, codC
codS
codC
cheia primara = juxtapunerea celor trei chei primare (devenite chei externe in tabelul asociativ),
eventuale coloane adiionale;
activitate_didaticastabilita intre entitile CADRU_DIDACTIC, STUDENT i
CURS
i.e.: (codP, codS, codC
codP
codS
codC
Entitatea CADRU_DIDACTIC are cheia primara codPintrucat este subentitate a entitatii
PERSONAL_FMI.
In acest caz, este preferabil o cheie primar artificial.
Transformarea atributelor
cheia primar a entitii,
atributul multiplu
cheia primar: este format din:
o cheie extern,
una sau mai multe coloane adiionale;
=> atributul adresa_email este atribut multiplu

relaii 1:1 i 1:n


relaii m:n
Transformarile de mai sus genereaza urmatoarea clasificare a tabelelor dintr-o BD (in functie de
structura cheii primare):
Tabel
independent

reprezint
entitate independent

Cheie primar
nu conine chei externe

subtabel
dependent

o cheie extern

subentitate

o cheie extern i una sau


mai
multe
coloane
adiionale

entitate dependenta
atribut multiplu

asociativ

relaie m:n
relaie de tip 3

dou
dou sau mai multe chei externe i
(opional) coloane adiionale

15. Operatorii algebrei relationale (clasificari, definitii, exemple)


1.SELECT(selecie) extrage tupluri ce satisfac o condiie specificat;
2.PROJECT(proiecie) extrage atributele specificate;
3.DIFFERENCE(diferen) extrage tupluri care apar ntr-o relaie, dar nu apar n cealalt;
4.PRODUCT(produs cartezian) genereaz toate perechile posibile de tupluri, primul element al
perechii fiind luat din prima relaie, iar cel de-al doilea element din cealalt relaie;
5.UNION(reuniune) reunete dou relaii;
6.INTERSECT(intersecie) extrage tupluri care apar n ambele relaii;
7.DIVISION(diviziune) extrage valorile atributelor dintr-o relaie, care apar n toate valorile
atributelor din cealalt relaie;
8.JOIN(compunere) extrage tupluri din mai multe relaii corelate:
9.NATURAL JOIN (compunere natural) combin tupluri din dou relaii, cu condiia ca atributele
comune s aib valori identice;
10.SEMI-JOIN(semi-compunere) selecteaz tupluri doar dintr-o relaie care vor fi corelate cu
tuplurile celeilalte relaii;
11.-JOIN(-compunere) combin tupluri din dou relaii, cu condiia ca valorile atributelor
specificate s satisfac o anumit condiie;
12.OUTER JOIN (compunere extern) combin tupluri din dou relaii, astfel nct condiiile de
corelare s fie satisfcute. Tuplurile din orice relaie care nu satisfac aceste condiii sunt completate cu
null.
Observatii
1.UNION, INTERSECT, DIFFERENCE:
se aplica numai la relaii avnd aceeai aritate,
ordinea (nu numele) atributelor este aceeai;
2.Scopul fundamental al AR: scrierea expresiilor relaionale;
Aplicaii posibile ale expresiilor relaionale:
definirea unui domeniu pentru interogare sau actualizare,
definirea constrngerilor de integritate i de securitate,
definirea datelor care vor fi incluse ntr-o vizualizare,

definirea datelor care vor reprezenta domeniul de valabilitate al unei operaii de control al concurenei
etc
Operatorul PROJECT
= o operaie unar care elimin anumite atribute ale unei relaii R, producnd o submulime pe
vertical a acesteia
Suprimarea unor atribute poate avea ca efect apariia unor tupluri duplicate, care trebuie eliminate
A1, ..., Am(R),
PROJECT(R, A1, ..., Am),
R[A1, ..., Am],
unde A1, A2, ..., Amsunt parametrii proieciei relativ la relaia R
A1, A2, ..., Amsunt atributele din Rcare nu au fost elimiate prin proiectie (care apar in relatia-rezultat
R).
Exemplu:
S se obin numele si prenumele salariatilor din FMI
Proiecie n algebra relaional:
Rezultat = PROJECT (PERSONAL_FMI, nume, prenume)
Proiecie fr dubluri n SQL:
SELECTDISTINCT nume, prenume
FROMpersonal_fmi;
Operatorul SELECT
= o operaie unar care elimin anumite tupluri ale unei relaii R, producnd o submulime pe
orizontala a acesteia
Relatia R rezultata din relatia R se obine prin extragerea tuplurilor din Rcare satisfac o condiie
specificat
Condiia este o formul logic ce poate cuprinde nume de atribute, constante, operatori logici, operatori
aritmetici de comparare;
SELECT (R, condiie),
R [condiie],
RESTRICT (R, condiie)
Exemplu:
S se obin toate informatiile despre cursurile optionale din FMI
Selectie n algebra relaional:
Rezultat = SELECT (CURS, tip=optional)
Selectie n SQL:
SELECT*
FROMcurs
WHEREtip=optional;
Operatorul UNION
= fie Ssi Tdoua relatii de aceeasi aritate; reuniunea lor, R, este tot o relatie, care consta din multimea
tuplurilor aparinnd fie lui S, fie lui T, fie ambelor relaii

obinerea tuplurilor distincte a dou relaii


adugarea de noi tupluri ntr-o relaie;

UNION (S, T)
OR (S, T)
APPEND (S, T)
Exemplu:
S se obin lista completa a numelor si prenumelor cadrelor didactice si studentilor din FMI
Reuniune n algebra relaional:
S = PROJECT (CADRU_DIDACTIC, nume, prenume)
T = PROJECT (STUDENT, nume, prenume)
Rezultat = UNION (S,T)
Reuniune n SQL:
SELECTnume, prenume
FROMcadru_didactic
UNION
SELECTnume, prenume
FROMstudent;
Operatorul DIFFERENCE
= fie Ssi Tdoua relatii de aceeasi aritate; diferenta lor, R, este tot o relatie, care consta din multimea
tuplurilor care aparin lui S, dar nu aparin lui T

obinerea tuplurilor ce apar numai ntr-o relaie


stergerea tuplurilor dintr-o relaie;
DIFFERENCE (S, T)
MINUS (S, T)
REMOVE (S, T)
ST.
Exemplu:
S se obin numele studentilor care nu se regsesc printre numele angajatilor din FMI
Diferenta n algebra relaional:
S = PROJECT (STUDENT, nume)
T = PROJECT (PERSONAL_FMI, nume)
Rezultat = DIFFERENCE (S,T)
Diferenta n SQL:
SELECTnume
FROMstudent
MINUS
SELECTnume
FROM personal_fmi;
Operatorul INTERSECT

= fie Ssi Tdoua relatii de aceeasi aritate; intersectia lor, R, este tot o relatie, care consta din multimea
tuplurilor care aparin atat lui Scat si lui T

obinerea tuplurilor ce apar simultan in doua relatii


rul INTERSECT este un operator derivat:
S T = S (S T)
S T = T (T S).
INTERSECT (S, T)
AND (S, T)
Exemplu:
S se obin numele studentilor care coincid cu numele angajatilor din FMI
Intersectia n algebra relaional:
S = PROJECT (STUDENT, nume)
T = PROJECT (PERSONAL_FMI, nume)
Rezultat = INTERSECT (S,T)
Intersectia n SQL:
SELECTnume
FROMstudent
INTERSECT
SELECTnume
FROM personal_fmi
Operatorul PRODUCT
= fie Ssi Tdoua relatii de aritate m, respectiv n; produsul cartezian al lui Scu Teste tot o relatie, fie ea R,
care consta din multimea tuplurilor de aritate m+ncu proprietatea ca, in fiecare tuplu, primele
mcomponente reprezinta un tuplu din Siar celelalte ncomponente reprezinta un tuplu din T
zian este o operatie binara NEcomutativa;
=> pentru a menine unicitatea denumirilor atributelor din cadrul unei relaii, denumirile acestor atribute
se prefixeaza cu denumirea relaiei.
Notatii
PRODUCT(S, T)
TIMES (S, T)
S se obin lista tuturor posibilitatilor de alocare de cursuri cadrelor didactice din FMI
Produs cartezian n algebra relaional:
Rezultat = PRODUCT (CADRU_DIDACTIC, CURS)
Produs cartezian n SQL:
SELECT*
FROMcadru_didactic, curs;
Operatorul DIVISION

= fie doua multimi de atribute:


A = {A1, A2, , An}i
B = {B1, B2, , Bm} si
doua relatii S(A,B), de aritate n+msi T(B) de aritate m
(i.e.:multimea atributelor relatiei Teste o submultime a multimii atributelor relatiei S);
=> rezultatul aplicarii operatorului de diviziune asupra relatiilor Ssi Teste o relatie Rde aritate ncu
proprietatea ca:
multimea atributelor sale coincide cu multimea de atribute A (i.e.: consta din acele atribute care apartin
relatiei Ssi nu apartin relatiei T),

Operatorul DIVISION (cont.)


R= S T = A S.B=T.B(S)
adica: intai se selecteaza un tuplu din S doar daca valorile atributelor sale B coinid cu valorile
atributelor unui tuplu din T
apoi, pe un astfel de tuplu,se aplica o proiectie pt a retine doar valorile atributelor din A;
acestea formeaza un tuplu din R;
Notatii
DIVIDE (S, T)
DIVISION (S, T)
S T
R= S T = A S.B=T.B(S) sau:
S T= S1S2.
unde: S1= 1,2,...,n (S), S2= 1,2,...,n((S

T) S )

SQL!)
xP(x
x P(x)
=> operatorul DIVISION poate fi exprimat n SQLprin succesiunea a doi operatori NOT EXISTS.
Exemplu:
S se obin codurile studentilor care urmeaza cel putin un curs facultativ
Diviziune n algebra relaional:
S= PROJECT ( URMEAZA, codS, codC)
T= PROJECT ( SELECT ( CURS, tip=facultativ), codC)
Rezultat = DIVISION (S,T).
Diviziune n SQL:
SELECTUNIQUEcodS
FROMurmeaza x
WHERENOTEXISTS
(SELECT*
FROMcurs c
WHEREcurs.tip = facultativ
ANDNOTEXISTS
(SELECT*
FROM urmeaza b

WHEREc.codC = b.codC
ANDb.codS = x.codS));
Operatorul JOIN
= operator de compunerecare permite regsirea informaiei din mai multe relaii corelate
= operaie binar asupra a 2 relatii, S, T, care are ca rezultat o nou relaie, R, n care fiecare tuplu este o
combinaie a unui tuplu din Scu un tuplu din T
ervatii
1.Condiia necesar aplicrii operatorului JOIN:
tuplurile care se combin s fie similare
2.Operatorul combina alti 3 operatori:
produsul cartezian,
selecia,
proiecia;
n general:
se construiete un produs cartezian,
se elimin tupluri prin selecie,
se elimin atribute prin proiecie;
3.Exist mai multe variante ale operatorului JOIN:
NATURAL JOIN,
-JOIN
SEMI-JOIN,
OUTER JOIN (LEFT, RIGHT, FULL).
Operatorul NATURAL JOIN
= combin tupluri din dou relaii Si T, cu condiia ca atributele comune s aib valori identice
Notatii
JOIN(S, T)
RS
1.se calculeaz produsul cartezian S T,
2.pentru fiecareatribut comun Acare definete o coloan n Si o coloan n T:
se selecteaz din S T tuplurile ale cror valori coincid n coloanele S.Ai T.A(atributul S.Areprezint
numele coloanei din S T corespunztoare coloanei Adin S),
3.pentru fiecare astfel de atribut Ase proiecteaz coloana T.A, iar coloana S.Ase va numi A;
NATURAL JOIN = operator derivat:
JOIN (S, T) = i1,...,im(S.A1 = T.A
S.Ak= T.Ak)(S T),
unde A1, ..., Ak= atributele comune lui Si T,
i1, ..., im= lista componentelor din S T(pstrnd ordinea iniial) din care au fost eliminate
componentele S.A1, ..., S.Ak
S se obin informaii complete despre studentii FMI si liceele pe care le-au absolvit, respectiv.
NATURAL JOIN n algebra relaional:

Rezultat = JOIN (STUDENT, LICEU)


NATURAL JOIN n SQL:
SELECT *
FROMstudent s, liceu l
WHERE s.codL = l.codL;
Operatorul -JOIN
-compunere=
= combin tupluri din dou relaii Si T, cu condiia ca atributele mentionate sa indeplineasca o anumita
conditie specificata explicit in cadrul operatiei

JOIN(R, S, conditie)
-JOIN= operator derivat: produs cartezian si selectie
JOIN (S, T, conditie) = conditie (S T)
Exemplu:
S se obin informaii despre studentii FMI (cod, nume, prenume, data i locul nasterii) i despre
cadrele didactice (cod, nume, prenume, grad didactic, doctorat) cu condiia ca numele de familie ale
cadrelor didactice i studentilor sa nu coincida
Operatorul -JOINn algebra relaional:
S = PROJECT (STUDENT, codS, nume, prenume, data_nastere, loc_nastere)
T = PROJECT (CADRU_DIDACTIC, codCD, nume, prenume, gradD, doctorat)
Rezultat = JOIN (S; T, STUDENT.nume <> CADRU_DIDACTIC.nume)
Operatorul -JOINn SQL:
SELECTcodS, nume, prenume, data_nastere, loc_nastere, codCD, nume, prenume, gradD, doctorat
FROMstudent s, cadru_didactic c
WHEREs.nume <> c.nume;
Operatorul SEMI-JOIN
de semi-compunere=
= genereaz o relaie care conine toate tuplurile din Sce sunt corelate cu cel puin unul dintre tuplurile
din T
1.Operatorul este utilizat cnd nu sunt necesare toate atributele compunerii (sunt conservate atributele
unei singure relaii participante la compunere),
2.Operatorul este asimetric;

SEMIJOIN(S, T)
SEMIJOIN(S, T, condiie).
SEMI-JOIN= operator derivat:
SEMIJOIN (S, T) = M(JOIN (S, T))
SEMIJOIN (S, T, condiie) = M(JOIN (S, T, condiie)),
unde M= mulimea atributelor relaiei S.
Exemplu:
S se obin informaii (nume, localitate) despre liceele ai caror absolventi de alta nationalitate decat cea
romana au devenit studenti ai FMI

Operatorul SEMI-JOINn algebra relaional:


S = SELECT (STUDENT, nationalitate <>romana)
T = JOIN (S, LICEU)
Rezultat = PROJECT (T, denumire, oras)
Operatorul SEMI-JOINn SQL:
SELECTdenumire, oras
FROMstudent s, liceu l
WHEREs.codL= l.codL
ANDnationalitate <>romana
Operatorul OUTER-JOIN
= combin tuplurile din dou relaii Ssi Tpentru care sunt satisfcute condiiile de corelare fr a pierde,
ns, celelalte tupluri
1.n cazul aplicrii operatorului JOINse pot pierde tupluri (exist un tuplu n una din relaii pentru care
nu exist niciun tuplu n cealalt relaie, astfel nct s fie satisfcut relaia de corelare)
2.Operatorul OUTER JOIN elimin acest inconvenient astfel:
practic, se realizeaz compunerea naturala a dou relaii Si T
apoi se adaug tuplurile din Si T, care nu sunt coninute n compunere, completate cu nullacolo unde
valorile atributelor exist ntr-un tuplu din S(respectiv T) dar nu exist i n T(respectiv S);
se pstreaz informaiile (i.e.: se pstreaz tuplurile care ar fi fost pierdute n alte tipuri de join).
Notatii
OUTERJOIN(S, T)
OUTERJOIN(S, T, condiie).
LEFT OUTER JOIN pstreaz n rezultat fiecare tuplu al relaiei din stnga (aici: S)
RIGHT OUTER JOIN pstreaz n rezultat fiecare tuplu al relaiei din dreapta (aici: T)
FULL OUTER JOIN pstreaz tuplurile din ambele relaii, completate cu nullatunci cnd nu exist
tupluri corelate.
Exemplu:
S se obin informaii complete referitoare la studentii FMI i la cursurile optionale urmate de acetia,
sesiznd cazurile n care exist cursuri optionale la care nu s-a inscris niciun student, respectiv studenti
care nu s-au inscris la niciun curs optional
Operatorul OUTER JOIN n algebra relaional:
Rezultat = OUTERJOIN (STUDENT, CURS)
Operatorul OUTER JOIN n SQL:
SELECT*
FROMstudent s FULLOUTERJOIN
(SELECT *
FROM curs c
HERE c.tip =optional)
16. Proprietatile operatorilor relationali
Proprietatile operatorilor AR
Expresie a algebrei relaionale =
o expresie in care:

operanzii = relatii (in sensul lui E.F. Codd),


operatorii =
cei 8 operatori (primitivi sau derivati) ai AR(proiectie, selectie, etc.), plus, eventual,
operatorii suplimentari (complement, despicare , inchidere tranzitiva) si
functiile asociate (MIN, MAX, AVG, VAR);
echivalente
n urma evalurii lor, se obine ca rezultat aceeai relaie.
Observatii
O expresie AR
O expresie se poate reprezenta grafic cu ajutorul unui arbore, numit arbore algebric, n care nodurile
corespund operatorilor din cadrul expresiei respective
Evaluarea unei expresii:
efectuarea prelucrrilor indicate de operatori
n ordinea apariiilor acestora, sau
n ordinea fixat prin paranteze;
Rezultatul evalurii unei expresii:
o relaie derivat din relaiile menionate ca operanzi n cadrul expresiei;
Ordinea n care se efectueaz operaiile:
rolul cel mai important n evaluarea costului necesar realizrii interogrii.
2 metode de determinare a ordinii optime de execuie a operaiilor dintr-o expresie AR:
1.algebric,
2.prin estimarea costului:
(1) Optimizarea cererilor bazat pe AR :
se exprim cererile sub forma unor expresii algebrice relaionale,
se aplic transformri algebrice care conduc la expresii echivalente, dar care vor fi executate mai
eficient;
aceste transformari au la baza o strategie de optimizare:
independent de modul de memorare a datelor (strategie general),
dependent de modul de memorare (strategie specific unui anumit SGBD);
an de executie / expresie AR
care permit ordonarea ntr-o alt form, mai convenabil, a operaiilor din interogare.
Proprietatea 1. Operaiile joini produs cartezian: comutative
JOIN(R1, R2) = JOIN(R2, R1)
R
R2 = R
R1
Proprietatea 2. Operaiile joini produs cartezian: asociative
JOIN(JOIN(R1, R2), R3) = JOIN(R1, JOIN(R2, R3))
(R
R
R3 = R
R
R3)
Proprietatea 3. Compunerea proieciilor:
A1,...,Am(B1,...,Bn(R)) = A1,...,Am(R)
unde {A1, A2,...,Am
B1, B2,...,Bn}
Proprietatea 4. Compunerea seleciilor:
cond1(cond2(R)) = cond cond2(R) = cond2(cond1(R))
unde am notat prin condcondiia dup care se face selecia

Proprietatea 5. Comutarea seleciei cu proiecia:


dac condimplic numai atributele A1,...,Am atunci:
A1,...,Am(cond(R)) = cond(A1,...,Am(R))
dac condimplic i atributele B1,...,Bn, care nu aparin mulimii {A1,...,Am}
A1,...,Am(cond(R)) = A1,...,Am(cond(A1,...,Am,B1,...,Bn(R)))
Proprietatea 6. Comutarea seleciei cu produsul cartezian:
dac condimplic numai atribute ale relaiei R1 atunci:
cond(R
R2) = cond(R
R2
dac cond= cond cond2
cond1 implic numai atribute din R1
cond2 implic numai atribute din R2, atunci:
cond(R
R2) = cond1(R
cond2(R2)
dac cond1 implic numai atribute din R1
cond2 implic atribute att din R1 ct i din R2, atunci:
cond(R
R2) = cond2(cond1(R
R2) .
Proprietatea 7. Comutarea seleciei cu reuniunea:
cond(R
R2) = cond
cond(R2)
Proprietatea 8. Comutarea seleciei cu diferena:
cond(R1 R2) = cond(R1) cond(R2)
Proprietatea 9. Comutarea proieciei cu reuniunea:
A1,...,Am(R
R2) = A1,...,Am(R
A1,...,Am(R2)
Proprietatea 10. Comutarea proieciei cu produsul cartezian:
dac {A1,...,Am} = {B1,...,Bn,C1,...,Ck}
unde B1,...,Bn sunt atribute ale relatiei R1
C1,...,Ck sunt atribute ale relatiei R2 atunci:
A1,...,Am(R
R2) = B1,...,Bn(R
C1,...,Ck(R2)
Proprietatea 11. Compunerea proieciei cu operaia join:
dac {A1,...,Am} = {B1,...,Bn,C1,...,Ck}
unde B1,...,Bn sunt atribute ale relatiei R1
C1,...,Ck sunt atribute ale relatiei R2 atunci:
A1,...,Am(JOIN(R1,R2,D)) =
A1,...,Am(JOIN(D,B1,...,Bn(R1), D,C1,...,Ck(R2),D),
unde am notat prin JOIN(R1, R2, D) operaia de compunere natural ntre R1 i R2 dup atributul
comun D.
Proprietatea 12. Compunerea seleciei cu operaia join:
cond(JOIN(R1, R2, D)) =
cond(JOIN(D,A(R1), D,A(R2), D)),
unde Areprezint multimea de atribute care apar n cond
17. Optimizarea interogarilor
Optimizarea interogarilor
Obiectivul optimizarii:

produs cartezian,
compunere;
Cele mai utilizate metode :

pentru fiecare dintre operaiile elementare care compun interogarea):


prin minimizarea timpului de executie al fiecarei operatii elementare care compune introgarea,
prin maximizarea numrului de operaii paralele;
2.metoda euristica:
are in vedere ordinea de executie a operatiilor AR,
se bazeaza pe cele 12 proprietati enumerate mai sus.
Ambele metode depind de informaiile statistice despre BD
(ex.: n dicionarul datelor pot fi stocate informaii statistice referitoare la:
cardinalitatea relaiilor,
numrul de blocuri necesare pentru stocarea unei relaii,
numrul de tupluri dintr-o relaie care intr ntr-un singur bloc,
numrul de niveluri dintr-un index,
numrul de valori distincte pentru fiecare atribut etc.)
=> reactualizarea: cand sistemul este cu activitate redus, i nu de fiecare dat cnd este inserat, ters
sau reactualizat un tuplu.
Examinarea celor 12 proprietati:
egiei de optimizare (de reordonare a operatiilor din cereri):
efectuarea mai nti a operaiilor unare (selectii inainte de proiectii) -care reduc dimensiunea relaiilor i apoi a operaiilor binare (=> coborrea seleciilor i proieciilor ct mai jos posibil n arborele
algebric),
regruparea compunerilor de selecii i proiecii ntr-o selecie urmat de o proiecie,
regruparea seleciilor i proieciilor in cascad, prin unul dintre operatorii algebrici binari,
combinarea proieciilor cu operaiuni binare adiacente,
combinarea unora din selecii cu produse carteziene care eventual le preced, pentru a obine compuneri,
nainte de compuneri, prelucrareapreliminarafiierelor (relaiilor) prin operaiuni de sortare i de
indexare,
cutarea n expresiilemai complexe asub-expresiilorcare se repet.
Formal: 4 reguli euristice de optimizare:
Regula de optimizare 1.Seleciile se execut ct mai devreme posibil pt ca reduc substanial
dimensiunea relaiilor;
para dou sau mai multe selecii n selecii individuale :
cond1(cond2(R)) = cond

cond2(R) = cond2(cond1(R))
join-ului sau produsului cartezian folosind comutarea

seleciei cu join-ul
Regula de optimizare 2.Produsele carteziene se nlocuiesc cu join-uri, ori de cte ori este posibil
cardinal f mare)
d legtura dintre produs cartezian, joini selecie.
Regula de optimizare 3.Dac sunt mai multe join-uri atunci cel care se execut primul este cel mai
restrictiv
joineste mai restrictiv dect altul dac produce o relaie mai mic
care joineste mai restrictiv:

pe baza factorului de selectivitate


cu ajutorul informaiilor statistice
cu Proprietatea 2: asociativitatea operaiei de join:
JOIN(JOIN(R1, R2), R3) = JOIN(R1, JOIN(R2, R3))
Regula de optimizare 4.Proieciile se execut la nceput pentru a ndeprta atributele nefolositoare.
Algoritm pentru optimizarea expresiilor relationale
Intrare:o expresie relationala, reprezentata printr-un arbore sintactic
Ieire: o expresie relationala optimizata, reprezentata tot printr-un arbore sintactic
Metoda:
Pas
1.
Fiecareselectie
cond cond
condn(R)
este
transformat
n
secvenacond1(cond2(...(condn(R)))) (Proprietatea 4)
Pas 2. Fiecare selecie este deplasat ct mai jos posibil n arborele sintactic (Proprietatile 4-7)
Pas 3. Fiecare proiecie este deplasat ct mai jos posibil n arborele sintactic (Proprietatile 3, 10, 9, 5)
Pas 4. Secvenele de selecii i proiecii sunt combinate n:
selecii unice,
proiecii unice, sau
selecii urmate de proiecii (regulile 3, 4, 5)
curnd posibil

Algoritm pentru optimizarea expresiilor relationale(cont.)


Pas 5. Nodurile interne ale arborelui rezultate prin parcurgerea pailor anteriori sunt grupate n blocuri
Fiecare nod intern care corespunde unei operaiuni binare poate face parte din acelai bloc ca i
predecesorii si imediai cu care sunt asociate operaiuni unare
Din bloc poateface parte i orice lan de noduri succesoare asociate cu operaiuni unare i terminate cu
o frunz
caresase combine cu produsul menionat, astfel nct s formeze o -compunere!
Pas 6. Se evalueaz fiecare bloc, n orice ordine, astfel nct niciunul din blocuri nu este evaluat naintea
grupurilor sale succesoare.
Exemplu.
Fie o baza de date cu entitatile:
CIRCUIT (Cnume, Fnume, Cod),
FURNIZOR (Fnume, Fadr),
UTILIZATOR (Unume, Uadr, Nrdoc),
LIVRARI (Nrdoc, Cod, Data);
Ppc pentru a returna anumite informatii privind livrrile de circuite este construit mai nti o
vizualizare care conine date referitoare la circuitele livrate
Vizualizarea va fi definit prin expresia relaional:
unde:

V = {Cnume, Fnume, Cod, Unume, Uadr, Nrdoc, Data}


U = UTILIZATOR.Nrdoc = LIVRARI.NrdocCIRCUIT.Cod
= LIVRARI.Cod.
Pp c interogareasolicit lista numelor circuitelor livrate nainte de 14februarie 2014
Cnume(Data<14.02.2014(U(V(LIVRARIxUTILIZATORxCIRCUIT))))
Pentru evaluarea expresiei: se construieste arborele ei sintactic
se aplica algoritmul de optimizare
18. Anomalii n proiectarea modelelui relaional
Reamintim:
Tipuri de reguli integritate:
a entitilor:
a relaiior
restricii contextuale
Pentru a prezenta procesul de normalizare, este necesar s definim urmtoarele dou concepte:
1.anomalie,
2.dependen funcional.
I. Redundan logic
II. Anomaliile la actualizare
II.a. anomalie la inserie
II.b. anomalie la tergere
II.c. anomalie la modificare
III. Problema reconexiunii (corelata, in general, cu operatiile de compunere).
19. Dependene functionale n BD relationale
Dependen funcional =
= o restricie care apare ntre atributele unei entiti la nivelul semanticii (semnificaiei) acestora i al
valorilor lor:
fie a1i a2atributele unei entiti E; spunem c atributul a2 este dependent funcional de atributul a1
(sau: atributul a1 determina functional atributul a2)
luri ale entitatii E iau aceleasi valoare pentru atributul a1ele iau valoare i
pentru atributul a2

a1a2
Determinantul unei dependene funcionale =
= atributul care, prin valorile sale, determin valorile celuilalt atribut
(i.e.: atributul aflat, n ambele reprezentri, n stnga sgeii);
a1 se numeste determinantsi atributul a2se numeste determinatal unei dependente
functionale
a1exist cel mult o valoare a atributului a2

Examinarea dependenelor funcionale dintre atributele unei relatii


este aleas cheia candidat care apare ca determinant n toate dependenele funcionale identificate la
nivelul entitii respective.
Un algoritm de calcul al inchiderii unui set de atribute aflate in dependenta functionala
Fie U o relatie [universala],
X = {A1, A2, ... , An} o multime de atribute ale U,
S = o multime de dependente functionale (considerate de proiectantul BD);
se numeste inchidere a multimii de atribute X determinata de multimea de dependente functionale
S, acea multime de atribute Y cu proprietatea ca orice relatie care satisface toate dependentele din S
satisface si dependenta

X+
{A1, A2, ... , An}+.
Algoritm de calcul pentru inchiderea X+a unui set de atribute X in raport cu un set de depenedente
functionale S
1.Se initializeaza X+cu multimea de atribute X = {A1, A2, ... , An} implicate in dependentele
functionale din multimea S

4.Se reiau Pasul 2 si Pasul 3 pana cand nu se mai pot adauga noi atribute la X
5.Multimea X+astfel obtinuta constituie inchiderea multimii de atribute X in raport cu S;

Algoritmul produce, corect, inchiderea X+a multimii X pentru ca:


(i)multimea de atribute ale oricarei relatii [universale] este finita,
(ii)se adauga eventual atribute care fac parte numai din respectiva relatie,
(iii)la niciun pas din algoritm, dimensiunea multimii X+nu se micsoreaza.
Observatie
=>
o supercheie pentru R
(i.e. A determina functional toate atributele lui R atunci i numai atunci cand A+coincide cu multimea
tuturor atributelor din R)
=> putem cauta / verifica daca o multime de atribute A este o supercheie pentru relatia R astfel:
(i) aplicam multimii A algoritmul de mai sus i calculam inchiderea A+;
(ii)testam daca A+= X;

pentru R;

Definitii(tipuri de dependente)
(1)O dependen funcional X Yse numete dependen funcional total(FT)
X
Xa. . X
Y
(2)O dependen funcional X Yse numete dependen funcional partiala
X
Xa. . X
Y
(3) Fie D mulimea dependenelor unei relaii i
p1, p2, ..., pr, r
D
a mulimii Deste derivabil din D
aplicarea proprietilor p1, p2, ..., pr, se numeste acoperire a lui Din raport cu proprietile p1, p2, ..., pr
(4)mulimea D
acoperire minimalpentru D
D
D
Definitii (multime de axiome)
Fie D o multime de dependente functionale si D* inchiderea sa:
(1)O mulime de axiome se numeste complet
D, toate dependenele din D*
(2) O mulime de axiome se numeste nchis
D , face parte D*.
Axiomele lui Armstrong
Fie X, Y, Z, Wmulimi de atribute ale unei entitati:
Ax. 1reflexivitate:
XX
Ax. 2creterea determinantului:
dac XYi X inclus Z, atunci ZY
dac XYi W inclus Z, atunci X U ZY U W
dac XYatunci X U ZY U Z
Ax. 3tranzitivitate:
dac XYi YZ, atunci XZ.
Teorema (J.D. Ullman)
Axiomele Ax.1Ax.3 reprezint o mulime nchis i complet de axiome
Corolar
nchiderea unei multimi de dependente Dconsta din mulimea dependenelor deduse din D prin aplicarea
axiomelor lui Armstrong.
Reguli de inferenta pentru dependente funct.
Fie X, Y, Z, Wmulimi de atribute ale unei entitati:
Reg. 1descompunere:
dac XY si Z inclus Y, atunci XZ
Reg. 2reuniune:
dac XY si XZ , atunci XYZ
Reg. 3semitranzitivitatea:
dac XY si YZW , atunci XZW
Definitii(dependente echivalente)

(1)Fie F o mulime de dependene funcionale totale


nchiderea sa pseudo-tranzitivF+=
reuniunea mulimilor dependenelor funcionale totale care pot fi obinute din F folosind axioma de
pseudo-tranzitivitate (sau, echivalent, axiomele lui Armstrong si cele 3 reguli);
(2)Fie F1si F2dou mulimi de dependene funcionale totale
F1 F2ddac F1 + F2+
(F1si F2sunt echivalente
(3)Fie F o mulime de dependene funcionale totale asociat unei mulimi de atribute A:
F definete o acoperire minimaldac satisface urmtoarele proprieti:
nicio dependen funcional din Fnu este redundant,
toate dependenele funcionale totale ntre submulimi ale lui A se afla n nchiderea pseudo-tranzitiv a
lui F;
Fie Fo multime de dependene funcionale ale unei entitati:
Feste in forma canonica =
i.orice dependenta functionala din Fare in membrul stang un singur atribut,
ii.F este minimala (nu contine dependente redundante);
20. Normalizarea relaiilor
Cele 5 forme normale au un caracter progresiv:
ex.: o relaie aflat n FN3 este automat n FN2 i deci i n FN1;
Din punctul de vedere al modelului relaional, singura form normal obligatorie pentru toate relaiile
din BD este FN1;
dac ns dorim s evitm toate anomaliile de actualizare (analizate mai sus) este necesar s continum
procesul de normalizare cel puin pn la FN3;
Din punct de vedere al performanelor n exploatare, este preferabil ca BD s fie lsat intr-o form
normal inferioar (se execut procesul invers normalizrii: denormalizarea BD).

Normalizarea BD
un proces de ameliorare progresiv a schemei conceptuale,
prin care un set de relaii care ncalc anumite principii de proiectare este nlocuit cu un alt set de relaii
adecvat, coerent i bine structurat;
acest proces trebuie s satisfac urmtoarele cerine:
conservarea datelor
conservarea dependenelordintre date,
descompunere minimala relaiilor iniiale
Normalizarea BD(cont.)
exista 2 metode de modelare a BD fara anomalii si fara pierdere de informatii:
(1)top-down
(2)bottom-up
Definitie formala (metoda top-down)
= procesul prin care relatia universala care modeleaza o situatie reala si respecta restrictiile
contextuale incalcand astfel regulile de integritate este inlocuita cu un set de reguli din ce in ce mai
adecvate, coerente si bine structurate;
se realizeaz plecnd de la o relaie universal ce conine toate atributele sistemului de modelat;
se desfoar n mai muli pai;
fiecare pas (cu excepia aducerii BD la FN1) presupune:
identificarea dependenelor funcionale,
verificarea ndeplinirii unor anumite proprieti denumite generic forme normale.
Orice form normal se obine aplicnd o schem de descompunere
Exist dou tipuri de descompuneri:
I.Descompuneri care conserv dependenele
relatia Reste descompusa ntr-o mulime de proiecii R1, R2, ..., Rka.. dependenele relatiei initiale
Rsunt echivalente (au nchideri pseudo-tranzitive identice) cu reuniunea dependenelor noilor relatii R1,
R2, ..., Rk
II.Descompuneri fr pierderi de informaie(L-join)
relatia Reste descompusa ntr-o mulime de proiecii R1, R2, ..., Rka.. pentru orice realizare a lui Reste
adevrat relaia:
R= JOIN(B1(R), B2(R), ...,Bj(R))
Regula Casey-Delobel
descrie conditia ca o descompunere utilizat n procesul normalizrii sa se efectueze fr pierdere de
informaie:
dac este satisfcut o anumit dependen funcional, atunci exist o descompunere fr pierderi;
Fie: R(A) o schem relaional,
, , o partiie a multimii de atribute Aa.i.
determin funcional pe iar contine restul atributelor in A;
atunci:
R(A
R
R))
A.
O relaie R este n FN1 dac fiecrui atribut care o compune i corespunde o valoare indivizibil
(atomic).

n plus, o relatie nu trebuie s conin atribute sau grupuri de atribute repetitive


elor relaionale;
Algoritm AFN1
(aducerea unei relaii n FN1prin eliminarea atributelor compuse i a celor repetitive)
1.se introduc n relaie, n locul atributelor compuse, componentele acestora,
2.se plaseaz grupurile de atribute repetitive, fiecare n cte o nou relaie,
3.se introduce n schema fiecrei noi relaii de la pasul 2 cheia primar a relaiei din care a fost extras
atributul repetitiv,
4.se stabilete cheia primar a fiecrei noi relaii create la pasul 2,
aceasta este compus din cheia introdus la pasul 3, precum i din atribute proprii ale acestor noi relaii.
O relaie R este n FN2 ddac:
relaia Reste n FN1
fiecare atribut care nu particip la cheia primar este dependent de ntreaga cheie primar;
-Delobel:
fie relaia R(K1, K2, X, Y);
unde K1 i K2 definesc cheia primar
X i Ysunt mulimi de atribute astfel nct K
X;
observam ca R nu este in FN2;
dar R poate fi nlocuita (fr pierdere de informaie) cu doua proiecii:
R1(K1, K2, Y) i
R2(K1, X).
Algoritm AFN2
(aducerea unei relaii n FN2prin eliminarea dependenelor funcionale pariale din cadrul unor relaii
aflate n FN1)
1.pentru fiecare dependen funcional parial se creeaz o nou relaie avnd schema format din
determinantul i determinatul acestei dependene
2.se elimin din cadrul relaiei iniiale atributele care formeaz determinatul dependenei pariale
3.dac n relaia iniial exist mai multe dependene pariale cu acelai determinant, pentru acestea se
creeaz o singur relaie cu schema format din determinant (luat o singur dat) i din determinaii
dependenelor considerate
4.se determin cheia primar a fiecrei noi relaii create; aceasta va conine atributele din determinantul
dependenei funcionale pariale care au stat la baza constituirii relaiei
5.dac noile relaii create conin dependene pariale, atunci se face reia de la pasul 1, altfel STOP
O relaie R este n FN3 ddac:
relaia Reste n FN2
fiecare atribut care nu particip la o cheia candidat este dependent direct de cheia primar;
R
cheie i numai de cheie.
-Delobel:
fie relaia R(K, X1, X2, X3),
unde K este cheia primar a lui R si
atributul X2depinde tranzitiv de K,
presupunem c K X X2.

dependena funcionala X X2care arat c Rnu este n FN3


R(fr pierdere de informaie) prin dou proiecii
R1(K, X1, X3) i R2(X1, X2).

fie K1o parte a cheii K,


tranzitivitatea poate fi de forma K Y X2unde Y = {K1, X1}
in acest caz, Rpoate fi descompus n R1(K, X1, X3) i R2(K1, X1, X2).
Algoritm AFN3
(aducerea unei relaii FN2n FN3prin eliminarea dependenelor funcionale tranzitive)
1.pentru fiecare dependen funcional tranzitiv se transfer atributele implicate n dependena
tranzitiv ntr-o nou relaie
2.se determin cheia primar a fiecrei noi relaii create la pasul 1
3.se introduc n relaia iniial, n locul atributelor transferate, cheile primare determinate la pasul 2
4.se reanalizeaz relaia iniial; dac n cadrul ei exist noi dependene tranzitive, atunci se reia de la
pasul 1, altfel STOP
FN3 poate fi obinut i cu ajutorul unei scheme de sintez.
Informal:
algoritmul de sintez construiete o acoperire minimal Fa dependenelor funcionale totale:
se elimin atributele i dependenele funcionale redundante.
mulimea Feste partiionat n grupuri Fi, astfel nct:
n fiecare grup Fise afl dependene funcionale care au acelai membru stng i
nu exist dou grupuri avnd acelai membru stng
fiecare grup Fiproduce o schem FN3
ritmul realizeaz o descompunere ce conserv dependenele.
Algoritm SNF3
(aducerea unei relaii n FN3prin utilizarea unei scheme de sintez)
1.se determin F, o acoperire minimal a lui D(mulimea dependenelor funcionale)
2.se descompune mulimea Fn grupuri notate Fi, astfel nct n cadrul fiecrui grup s existe
dependene funcionale avnd aceeai parte stng
3.se determin perechile de chei echivalente (X, Y) n raport cu F
4.pentru fiecare pereche de chei echivalente:
se identific grupurile Fii Fjcare conin dependenele funcionale cu partea stng X i respectiv Y
se formeaz un nou grup de dependene Fij, care va conine dependenele funcionale avnd membrul
stng (X, Y)
se elimin grupurile Fii Fj, iar locul lor va fi luat de grupul Fi j
5.se determin o acoperire minimal a lui F, care va include toate dependenele X Y,
unde Xi Ysunt chei echivalente (celelalte dependene sunt redundante)
6.se construiesc relaii FN3(cte o relaie pentru fiecare grup de dependene funcionale).
Condiie de verificat

Soluie (normalizare)

FN1
fie atomice

transform intr-o nou relaie


cesare ntre

noile relaii
modificat

relaia

iniial

FN2

multe atribute;

arte a cheii primare,


mpreun cu atributele care depind
funcional complet de ea formeaz o
nou relaie;

din cheia primar sunt complet


dependente funcional de cheia noile relaii care au nlocuit-o pe cea
primar
iniial
FN3
rte
dintr-o cheie candidat nu este
funcional dependent de un alt atribut
care nu face nici el parte dintr-o cheie
candidat (nici un atribut care nu face
parte dintr-o cheie candidat nu este
funcional dependent de cheia
primar prin tranzitivitate)

pstreaz n relaia iniial


numai cheia primar i atributele care
depind funcional de ea direct
(inclusiv atributul "incriminat");
fiecare atribut care nu face parte din
cheia primar mpreun cu toate
atributele (care nu fac nici ele parte
din cheia primar a relaiei iniiale)
care sunt dependente funcional de
acesta;
noile relaii
modificat

relaia

Forma normala 4(FN4)


a intre valorile atributelor din relatii: dependenta multivaloare;
in general in relatiile in care:
mai mult de un atribut prezinta valori multiple si
intre acele atribute exista relatii de tip 1:m INDEPENDENTE, impuse de context.
Dependenta multivaloare = (MVD= multi-valued dependency)
= o dependenta intre minimum 3 atribute apartinand aceleiasi relatii Rcu proprietatea ca:
(i) pentru fiecare valoare a lui Aexista un set de valori ale lui Bsi un set de valori ale lui C
(ii) aceste seturi de valori sunt independente unul de celalalt.
(A B, A C)
(nrG tipAutoReparat, nrG Client).
Definitii
O dependenta multivaloare ABdintr-o relatie Rse numeste triviala
(a)B inclus in Asau

iniial

(b)A U B = R;
O dependenta multivaloare ABdintr-o relatie Rse numeste netriviala
niciuna dintre cele 2 conditii de mai sus nu are loc;
Forma normala 5(FN5)
descompunerea fara pierdere de informatie (la descompunerea nonaditiva)
cazul FN4) si este rezolvata prin FN5
Dependenta ladescompunerea fara pierdere de informatie (dependenta la descompunerea
nonaditiva)= (Lossless-join dependency)
= o proprietate a operatiei de descompunere care impiedica aparitia de linii nelegitime atunci cand are
loc o operatie de compunere naturala a mai multor relatii
*(R1, R2, , Rk)
O relatie Reste in FN5ddaca
relatia Rnu prezinta nicio dependenta la compunere
Concluzii
Normalizarea
= o tehnica de obtinere a unei multimi de relatii inzestrate cu anumite proprietati, in conformitate cu
constrangerile specifice, impuse de situatia concreta modelata prin baza de date,
= o metoda formala prin care se pot identifica relatiile cu ajutorul campurilor de cheie i se pot
descoperi diversele tipuri de dependente care exista intre atributele lor,
= un proces care transforma o relatie trecand-o dintr-o FNin alta;
la fiecare pas, se incearca eliminarea acelor caracteristici ale relatiei care o fac vulnerabila la anomaliile
de actualizare
trecerea intr-o FNsuperioara face a relatia mai invulnerabila dar i mai restrictiva ca format:

Concluzii(cont.):
FN1 FN2
elimin redundanele datorate dependenei netotale a atributelor care nu particip la o cheie, fa de
cheile lui R
se suprim dependenele funcionale care nu sunt totale;
FN2 FN3
elimin redundanele datorate dependenei tranzitive
se suprim dependenele funcionale tranzitive;
se conserva si datele si dependentele;
FN3 BCNF
elimin redundanele datorate dependenei funcionale
se suprim dependenele n care partea stng nu este o supercheie
se conserva doar datele.

BCNF FN4
elimin redundanele datorate multidependenei
se suprim toate multidependenele care nu sunt i dependene funcionale
se conserva doar datele;
FN4 FN5
elimin redundanele datorate dependenei la compunere
se suprim toate dependenele la compunere care nu sunt implicate de o cheie;
BCNF, FN4 iFN5
toate FN se bazeaza pe regula orice determinant este o cheie,
pentru fiecare FN determinantul se definete in raport cu un alt tip de dependenta:
BNCF)
(FN4)
(FN5).
21. Denormalizarea relaiilor
Deormalizarea
Fie R = {R1, R2, ..., Rp} o mulime de relaii
Denormalizarea R nseamn nlocuirea Rcu
R= JOIN(R1, R2, ..., Rp),
astfel nc
Rdup atributele lui Riva produce din nou relaia Ri
Observatii
mai mic dect gradul de normalizare a cel puin uneia dintre relaiile iniiale;
mrirea redundanei (relaia Rse afl la un nivel de normalizare mai sczut dect relaiile R1, R2, ...,
Rpcompoente)
join-uri care trebuie efectuate pentru rezolvarea unei interogri, prin realizarea
unora dintre acestea n avans (ca parte din proiectarea bazei de date).
Problemele denormalizarii
1.Reaparitia anomaliilor pe care diversele forme normale reusisera sa le elimine;
2.Urmari negative ale denormalizarii asupra fisierelor stocate: un design fizic poate fi bun pentru
anumite aplicaii, dar prost pentru altele(in tabelul obtinut prin denormalizare -joinliniile par adiacente
dar in memorie inregistrarile nu sunt! --> interogarile care vizeaza inregistrari numai in unul dintre
tabelele participante la join vor fi mai lente);
3.Lipsa unui criteriu formal pt stabilirea nivelului la care denormalizarea trebuie sa se opreasca;
4.Lipsa unor reguli formale pentru stabilirea situaiilor n care este indicat denormalizarea relaiilor.
Cazuri in care denormalizarea este indicata:

favoarea cresterii performantelor:


A.Actualizari vs. interogari
Dac o relaie are:
o rat de reactualizare sczut

o rat de interogare foarte ridicat


atunci denormalizarea este o solutie.
B.Calcularea vs. memorarea datelor derivate
Din perspectiva proiectrii fizice a BD se poate opta intre:
stocarea in BD a atributelor derivate
calcularea atributelor derivate de fiecare dat cnd este necesar
Criterii:
costul memorarii vs costul recalcularii
costul meninereii concordanei dintre datele calculate si datele operatioanle din care sunt derivate,
C.Pro sau contra redundantei
Din perspectiva proiectrii fizice a BD se poate opta intre:
eliminarea completa a redundantei (aducerea la FN5)
dublarea unor atribute (pentru simplificarea join-urilor)
dupa evaluarea costurilor /pericolelor implicate de necesitatea actualizarii mai multor copii ale aceleasi
informatii.
22. SQL (caracteristici, implementare, securitate, Oracle SQL)
SQL (Structured Query Language) este limbajul standard de tratarea sistemelor relaionale
SQL limbaj neprocedural, declarativ
Utilizatorii specific CE trebuie obinut, nu CUM
=> compilatorul limbajului SQL genereaz automat o procedur care acceseaz BD i execut comanda
SQL
oara)
Bazat pe
algebra relationala,
calculul relational,
etc., in functie de caracteristicile necesare.
3 metode pt.implementarea limbajului SQL:
1.apelarea direct (Direct Invocation): const n introducerea instruciunilor direct de la prompter
(interactiv)
2.modularizarea (Modul Language): se folosesc proceduri apelate de programele aplicaie
3.ncapsularea (Embedded SQL): instruciunile SQL pot fi combinate cu instruciunile limbajului de
programare al programului respectiv (Standardul SQLinclude suport pentru limbajele C, C++, COBOL,
Java, Ada, M, Fortran, Pascal, PL/1)
SQL i securitatea/ integritatea datelor
2 abordri ale problemei securitii datelor, acceptatede oriceSGBD:
accesul la un anumit obiect este la discreia proprietarului acestuia,
fiecareobiect are un nivel de clasificare,
fiecare utilizator are un nivel de permisiune

Oracle SQL
SQL= asigur comunicarea cu serverulOracle
=>reduce timpul necesar crerii i ntreinerii aplicaiilor de bazede date,
Oracle SQL =include extensii ale limbajuluiSQL standard ANSI/ISO
Instrumentele i aplicaiile Oracle =furnizeaz instruciuni suplimentare.
Utilitarele permit
executarea instruciunilor limbajului SQL standard asupra unei baze de date Oracle,
executarea instruciunilor saufunciilor suplimentare disponibile.
23. Clasificarea comenzilor SQL (LDD, etc.)
Instruciunile SQLse mpart n mai multe categorii, nfuncie de tipul aciunii pe care o realizeaz:
a.limbajul de definirea datelor(LDD);
b.limbajul de prelucrarea datelor(LMD);
c.limbajul de control al tranzaciilor(LCT);
d.limbajul de control al datelor(LCD);
e.comenzispeciale:
i.instruciunile pentru controlul sesiunii,
ii.instructiuni pentru controlul sistemului,
iii.instruciunile SQL ncapsulate.
(a)Limbajul de definirea datelor(LDD):(LDD contine comenzi pt. definirea structurii obiectelor unei
scheme):
specific fiecrui SGBD
funciile principale sunt aceleai
conceptual, LDD realizeaz:
definirea entitilor i a atributelor acestora prin: nume, form de memorare, lungime
precizarea relaiilor dintre date i strategiile de acces la ele
stabilirea criteriilor difereniate de confidenialitate
stabilirea criteriilor de validare automat a datelor utilizate.
(b)Limbajul de prelucrarea datelor(LMD):(LMD contine comenzipt. interogarea si prelucrarea datelor
din obiectele unei scheme);
permite formalizarea operaiilor care trebuie executate asupra unei baze de date sub forma unor
comenzi
o comand are urmtoarea structur:
operaia (deschidere/nchidere, calcul aritmetic/logic, editare, extragere, adugare, tergere, cutare,
reactualizare etc.),
criterii de selecie,
mod de acces (secvenial, indexat etc.),
format de editare;
2 tipuri de LMD:
procedurale (specific modul n care se obine rezultatul unei comenzi LMD)
neprocedurale(descriu doar datele ce vor fi obinute i nu modalitatea de obinere a acestora).
(c) Limbajulde control al tranzactiilor(LCT):
contine comenzipt. gestionarea modificrilo refectuate de ctre comenzile LMD i grupeaz aceste
comenzi n uniti logice, numite tranzacii:
?salvarea modificrilor unei tranzacii (COMMIT);

?anularea modificrilor dintr-o tranzacie fie n ntregime, fie ncepnd de la un punct intermediar
(ROLLBACK);
?definirea unui punct intermediar pn la care tranzacia poate fi anulat(SAVEPOINT);
?stabilirea de proprieti ale tranzaciei (SET TRANSACTION TO).
(d) Limbajulde control al datelor(LCD):
contine comenzi pt. gestionarea accesului la date (asigurarea confidenialitii i integritii datelor,
salvarea informaiei n cazul unor defeciuni, obinerea unor performane, rezolvarea unor probleme
de concuren):
?acordarea de privilegii i role-uri (GRANT);
?revocarea privilegiilor i role-urilor acordate (REVOKE).
(e) Comenzispeciale:
i.Instruciunile pentru controlul sesiunii
ii.Instruciunile pentru controlul sistemului
iii.Instruciunile SQL ncapsulate.
i.Instruciunile pentru controlul sesiunii
permit gestionarea proprietilor sesiunii unui utilizator; ex.
?ALTER SESSION:permite modificarea sesiunii curente, astfel nct aceasta s ndeplineasc funciuni
specializate,
?SET ROLE:determin activarea sau dezactivarea role-urilor pentru sesiunea curent;
ii.Instruciunile pentru controlul sistemului
?ALTER SYSTEM permite controlul sistemului, modificand, n mod dinamic, proprietile instanei
serverului Oracle (schimbarea anumitor setri: numrul minim de servere partajate,restricionarea sau
suprimarea unei sesiuni, golirea zonei shared pooldin SGA, suspendarea tuturor operaiilor I/Oetc.).
iii.InstruciunileSQLncapsulate
= sunt reprezentare de comenzi LDD, LMD i LCT care pot fi ncorporate nprograme scrise n limbaje
procedurale, urmnd s fie utilizate prin intermediul precompilatoarelor Oracle
permit:
?definirea, alocarea i eliberarea cursoarelor (DECLARE CURSOR, OPEN, CLOSE),
?specificarea unei bazede date i conectarea la sistemul Oracle (DECLARE DATABASE, CONNECT),
?declararea de variabile (DECLARE STATEMENT),
?iniializarea de descriptori (DESCRIBE),
?specificarea modului ncare urmeaz s fie tratate erorile i avertismentele (WHENEVER),
?analizarea i executarea instruciunilor SQL (PREPARE, EXECUTE, EXECUTE IMMEDIATE),
?regsirea informaiilor din baza de date (FETCH).
24. Procesarea comenzilor i interogarilor SQL
Instruciunile SQLse mpart n mai multe categorii, nfuncie de tipul aciunii pe care o realizeaz:
a.limbajul de definirea datelor(LDD);
b.limbajul de prelucrarea datelor(LMD);
c.limbajul de control al tranzaciilor(LCT);
d.limbajul de control al datelor(LCD);
e.comenzispeciale:
i.instruciunile pentru controlul sesiunii,
ii.instructiuni pentru controlul sistemului,

iii.instruciunile SQL ncapsulate.


(a)Limbajul de definirea datelor(LDD):(LDD contine comenzi pt. definirea structurii obiectelor unei
scheme):
specific fiecrui SGBD
funciile principale sunt aceleai
conceptual, LDD realizeaz:
definirea entitilor i a atributelor acestora prin: nume, form de memorare, lungime
precizarea relaiilor dintre date i strategiile de acces la ele
stabilirea criteriilor difereniate de confidenialitate
stabilirea criteriilor de validare automat a datelor utilizate.
(b)Limbajul de prelucrarea datelor(LMD):(LMD contine comenzipt. interogarea si prelucrarea datelor
din obiectele unei scheme);
permite formalizarea operaiilor care trebuie executate asupra unei baze de date sub forma unor
comenzi
o comand are urmtoarea structur:
operaia (deschidere/nchidere, calcul aritmetic/logic, editare, extragere, adugare, tergere, cutare,
reactualizare etc.),
criterii de selecie,
mod de acces (secvenial, indexat etc.),
format de editare;
2 tipuri de LMD:
procedurale (specific modul n care se obine rezultatul unei comenzi LMD)
neprocedurale(descriu doar datele ce vor fi obinute i nu modalitatea de obinere a acestora).
(c) Limbajulde control al tranzactiilor(LCT):
contine comenzipt. gestionarea modificrilo refectuate de ctre comenzile LMD i grupeaz aceste
comenzi n uniti logice, numite tranzacii:
?salvarea modificrilor unei tranzacii (COMMIT);
?anularea modificrilor dintr-o tranzacie fie n ntregime, fie ncepnd de la un punct intermediar
(ROLLBACK);
?definirea unui punct intermediar pn la care tranzacia poate fi anulat(SAVEPOINT);
?stabilirea de proprieti ale tranzaciei (SET TRANSACTION TO).
(d) Limbajulde control al datelor(LCD):
contine comenzi pt. gestionarea accesului la date (asigurarea confidenialitii i integritii datelor,
salvarea informaiei n cazul unor defeciuni, obinerea unor performane, rezolvarea unor probleme
de concuren):
?acordarea de privilegii i role-uri (GRANT);
?revocarea privilegiilor i role-urilor acordate (REVOKE).
(e) Comenzispeciale:
i.Instruciunile pentru controlul sesiunii
ii.Instruciunile pentru controlul sistemului
iii.Instruciunile SQL ncapsulate.
i.Instruciunile pentru controlul sesiunii
permit gestionarea proprietilor sesiunii unui utilizator; ex.

?ALTER SESSION:permite modificarea sesiunii curente, astfel nct aceasta s ndeplineasc funciuni
specializate,
?SET ROLE:determin activarea sau dezactivarea role-urilor pentru sesiunea curent;
ii.Instruciunile pentru controlul sistemului
?ALTER SYSTEM permite controlul sistemului, modificand, n mod dinamic, proprietile instanei
serverului Oracle (schimbarea anumitor setri: numrul minim de servere partajate,restricionarea sau
suprimarea unei sesiuni, golirea zonei shared pooldin SGA, suspendarea tuturor operaiilor I/Oetc.).
iii.InstruciunileSQLncapsulate
= sunt reprezentare de comenzi LDD, LMD i LCT care pot fi ncorporate nprograme scrise n limbaje
procedurale, urmnd s fie utilizate prin intermediul precompilatoarelor Oracle
permit:
?definirea, alocarea i eliberarea cursoarelor (DECLARE CURSOR, OPEN, CLOSE),
?specificarea unei bazede date i conectarea la sistemul Oracle (DECLARE DATABASE, CONNECT),
?declararea de variabile (DECLARE STATEMENT),
?iniializarea de descriptori (DESCRIBE),
?specificarea modului ncare urmeaz s fie tratate erorile i avertismentele (WHENEVER),
?analizarea i executarea instruciunilor SQL (PREPARE, EXECUTE, EXECUTE IMMEDIATE),
?regsirea informaiilor din baza de date (FETCH).
25. Optimizarea comenzilor SQL
Optimizarea comenzilor SQL
?constituie o etapa important n procesarea oricrei instruciuni LMD
?exist mai multe posibiliti de a executa o astfel de instruciune(datorate, de exemplu, ordiniincare
sunt accesate tabelele sau indecii)
?se realizeaza
i.cu ajutorul unui modul software al sistemului Oracle numit optimizor,
ii.prin directivele (hint) date de catre proiectantul aplicatiei sub forma de comentarii atasate
instructiunilor SQL.
Sistemul Oracle dispune de:
?optimizori pe baz de cost (utilizati preponderent n versiunile cele mai recente ale lui Oracle Server)
?optimizori pe baz de reguli (nu au fost actualizati n noile versiuni dar au ramas disponibil pentru
compatibilitate).
ii Proiectantul unei aplicaii deine mai multe informaii despre datele specifice acesteia=>
?el poate stabili ci mai eficiente pentru execuia instruciunilor SQL=>
?el include n textul comenzii SQL respective, sub form de comentarii, niste directive (hint) de
executie.

26. Obiectele unei BD Oracle (definitie, reguli de denumire)


Obiectele bazei de date
1.1. Generalitati
O BD Oracle = { scheme }.
O schem = {obiecte}
Obiect = o structura logica de date;

Oracle Database recunoaste 2 tipuri de obiecte:


a)obiecte care sunt asociate unei scheme particulare;
b)obiecte care nu aparin nici unei scheme.
Reguli de denumire a obiectelor bazei de date Intr-o schema a Oracle Database trebuie denumite:
toate obiectele,
anumite parti componente ale anumitor obiecte:
?coloanele tabelelor sau vizualizrilor,
?partiiile i subpartiiile tabelelor i indecilor,
?constrngerile de integritate asupra tabelelor;
(R1)
Numele obiectelor sunt unice la nivelul unei BD
ntr-o instruciune SQL, numele unui obiect poate fi reprezentat printr-un identificator ncadrat, sau
nu, ntre ghilimele
Identificatorii nu pot fi cuvinte rezervate ale serverului Oracle;
(R2)
Identificatorii trebuie s nceap cu o liter i s aib maximum 30 de caractere; Excepii:
numele BD (max. 8 caractere),
numele legturii unei BD (max. 128 caract.); (R3)
Identificatorii pot conine caractere alfanumerice i simbolurile _, $, #
Ei trebuie s nceap cu un caracter alfabetic
(R4)
Fiecare schem din BD are propriul su spaiu de nume (namespace) pentru obiectele pe care le
conine
Dou obiecte din acelai spaiu de nume al serverului Oracle nu pot avea acelai identificator.
?un tabel i o vizualizare din cadrul aceleiai scheme NU pot avea acelai nume, ns
?un tabel poate avea acelai nume cu un index.
Identificatorii obiectelor sunt case-sensitive doar n cazul n care sunt ncadrai ntre ghilimele;
altfel, ei sunt convertii automat n majuscule.
27. Tipuri de date i literali SQL (definitii, clasificare, exemple, modele de format)
Tipuri de date SQL
2.1. Tipurile de date predefinite din sistemul Oracle:
a)caracter,
b)numeric,
c)dat calendaristic i timp,
d) LOB (large objects) i
e)adrese unice ale liniilor din tabele.
a) Tipurile de date predefinite pentru stocarea irurilor de caractere sunt :
VARCHAR2 (n [BYTE |CHAR])
CHAR[(n [BYTE | CHAR] )]
NVARCHAR2(n)
NCHAR[(n)]
iar pentru stocarea irurilor de caractere de dimensiuni mari sunt :
LONG,

LONG RAW
RAW.
b) Tipurile de date predefinite pentru stocarea valorilor numerice sunt :
NUMBER,
BINARY_FLOAT
BINARY_DOUBLE
c) Tipurile de date predefinite pentru stocarea datelor calendaristice i a momentelor de timp sunt :
DATE,
TIMESTAMP
INTERVAL
d)Tipurile de date predefinite pentru stocarea obiectelor mari LOB (large object) sunt :
CLOB
NCLOB
BLOB
BFILE
e) Tipurile de date predefinite pentru reprezentarea adreselor liniilor n tabele sunt :
ROWID
UROWID
2.Tipuri de date SQL
2.2. Tipuri de date ANSI, DB2 i SQL/DS acceptate n sistemul Oracle
Sistemul Oracle recunoate numele tipurilor de date specifice ANSI sau IBM, le converteste cf. unor
conventii prestabilite si le utilizeaza pentru crearea tabelelor i clusterelor.
Tipurile de date definite de utilizator
Utilizatorul poate defini noi tipuri de date pe baza:
oricaruia dintre tipurile de date predefinite,
altor tipuri de date definite de utilizator,
se obtin urmatoarele tipuri de date obiect care modeleaza structura i comportamentul datelor in
aplicatii:
A.tipurile obiect,abstractizri ale entitilor din lumea real, necesare n programele de aplicaie,
un tip obiect = o schem obiect cu trei tipuri de componente:
nume,
atribute,
metode.
B.tipurile referin (REF), conin adrese logice ale liniilor obiect,
C.vectorii (varying array sau varray), modeleaza o mulime ordonat de elemente avnd acelai tip;
fiecare element are un index, care reprezint numrul corespunztor poziiei elementului n vector;
D.tablourile imbricate (nested table) = modeleaz o mulime neordonat de elemente al caror tip de date
poate fi:
un tip predefinit,
un tip definit de utilizator;
Literali
3.1. Literali de tip caracter

3.2. Literali numerici


3.3. Literali pentru date calendaristice
3.4. Literali marci de timp
3.5. Literali de intervale de timp;
?Definitie: Literal =
o valoare constanta pe perioda de viata a BD.
3.1. Literali de tip caracter
sintaxa:
se includ ntre apostrofuri (pentru a permite sistemului Oracle s le disting de numele obiectelor
schemei);
sunt considerate de tip CHAR (n expresii i condiii);
lungimea maxim admis: 4000 de octei.
3.2. Literali numerici
de tip Number:
? in notatie clasica: precedate de + sau
max . 38 caractere
? in notatie stiintifica: cu mantisa i exponent;
3.3. Literali pentru date calendaristice
sunt formate din campuri
formatul implicit:
specificat prin param. de iniializare NLS_DATE_FORMAT
in notaia ANSI:
cuvantul-cheie DATE si
formatul YYYY-MM-DD
3.4. Literali pentru marci de timp
sunt formate din campuri
precizeaza anul, luna, ziua, ora, minutul, secunda i fraciunile de secund.
in notaia ANSI:
cuvantul-cheie TIMESTAMP
formatul YYYY-MM-DD HH:MM:SS.FFF
3.5. Literali pentru intervale de timp
sunt formate din campuri; daca precizia compurilor este mai mare decat 2, trebuie specificata
utilizate impreuna cu functiile analitice
specifica o perioada de timp care poate fi exprimat n
ani i luni sau
zile, ore, minute i secunde.
2 tipuri de literale pentru specificarea intervalelor:
YEAR TO MONTH i
DAY TO SECOND
28. Comentarii SQL (pt utilizarea hinturilor n optimizari)
Optimizarea comenzilor SQL
?constituie o etapa important n procesarea oricrei instruciuni LMD

?exist mai multe posibiliti de a executa o astfel de instruciune(datorate, de exemplu, ordiniincare


sunt accesate tabelele sau indecii)
?se realizeaza
i.cu ajutorul unui modul software al sistemului Oracle numit optimizor,
ii.prin directivele (hint) date de catre proiectantul aplicatiei sub forma de comentarii atasate
instructiunilor SQL.
Sistemul Oracle dispune de:
?optimizori pe baz de cost (utilizati preponderent n versiunile cele mai recente ale lui Oracle Server)
?optimizori pe baz de reguli (nu au fost actualizati n noile versiuni dar au ramas disponibil pentru
compatibilitate).
ii Proiectantul unei aplicaii deine mai multe informaii despre datele specifice acesteia=>
?el poate stabili ci mai eficiente pentru execuia instruciunilor SQL=>
?el include n textul comenzii SQL respective, sub form de comentarii, niste directive (hint) de
executie.
29. Pseudocoloane, operatori i functii SQL
Pseudocoloane
? Definitie: Pseudocoloana =
= se comport ca i o coloan a unui tabel, dar nu este stocat efectiv ntr-un tabel
Se pot face interogri asupra pseudocoloanelor, dar valorile acestora nu se pot insera, actualiza sau
terge
Exemple
ROWID
= returneaz adresa unei linii din baza de date, furniznd modul cel mai rapid de a accesa linia
respectiv
ROWNUM
= returneaz numrul de ordine al liniilor rezultate n urma execuiei unei cereri
poate fi utilizat pentru a limita numrul de linii returnate.
Definitie: Operatori SQL=
= prelucreaz date individuale (= operanzi = argumente);
sunt reprezentai prin:
?caractere speciale
?cuvinte cheie
Clasificare
unari (acioneaz asupra unui singur operand)
binari (acioneaz asupra a doi operanzi).
Definitie: Expresie SQL =
= o combinaie de una sau mai multe valori, operatori i funcii SQL
? Definitie: Conditie SQL =
= combin una sau mai multe expresii i operatori logici, returnnd una dintre valorile TRUE, FALSE
sau NULL.
Alti operatori i expresii SQL:
1.Expresii care folosesc valori de tip dat calendaristic i interval:

operatorii utilizati i tipul rezultatelor obinute sunt :


Data + Interval
Data Interval
Interval + Data
=> rezultatul este de tip dat calendaristic,
Data Data
Interval + Interval
Interval Interval
Interval * Number
Number * Interval
Interval / Number
=> rezultatul este de tip interval.
2.Expresii de tip tablou imbricat i vector:
se pot aplica operatorii:
egalitate,
inegalitate,
MULTISET EXCEPT => diferenta a 2 tablouri imbricate,
MULTISET INTERSECT => intersectia a 2 tablouri imbricate,
MULTISET UNION => reuniunea a 2 tablouri imbricate;
2.Obiecte LOB:
nu sunt acceptate n condiiile de comparaie (se pot insa folosi blocuri PL/SQL).
Funcii SQL
1.Functii numerice;
2.Functii de tip caracter care returneaza valori de tip caracter;
3.Functii de tip caracter care returneaza valori numerice;
4.Functii de tip NLS (Natural language Support);
5.Functii de tip data calendaristica;
6.Functii generale de comparatie;
7.Functii de conversie intre tipurile de date SQL;
8.Functii XML;
9.Functii pentru prelucrarea valorilor Null;
10.Functii speciale.
Funciile SQL
similare operatorilor (prelucreaza date, returneaza un rezultat);
difera de operatori (pot avea 0, 1, oricate argumente);
sunt predefinite n sistemul Oracle i pot fi utilizate n instruciuni SQL
diferite de funciile definite de utilizator (scrise n PL/SQL);
dac o funcie SQL este apelat cu un argument avnd un alt tip de date dect cel predefinit, sistemul
convertete implicit argumentul nainte s evalueze funcia
dac o funcie SQL este apelat cu un argument null, ea returneaz automat valoarea null;
exceptii: functiile
CONCAT
NVL REPLACE
REGEXP_REPLACE
Categoriile de funciile SQL :

a)funcii single row;


b)funcii agregat;
c)funcii analitice;
d)funcii referitoare la obiecte;
e)funcii pe modele;
f)funcii definite de utilizator.
a)Funciile single row:
returneaz o singur linie rezultat pentru fiecare linie a tabelului sau vizualizrii interogate
b,c) Funciile agregat i analitice:
necesare pt scrierea interogrilor;
d) Funciile referitoare la obiecte:
funcii care opereaz asupra valorilor de tip LOB:
e)Funcii pe modele:
functii care opereaz asupra modelelor construite cu ajutorul pachetului DBMS_DATA_MINING sau
cu Oracle
f)Funciile definite de utilizator:
pot fi create cu ajutorul limbajului PL/SQL
sunt stocate n baza de date.
30. Limbaje pentru prelucrarea datelor relaionale
Modelul relaional incorporeaza mai multe limbaje de interogare (neprocedurale);
Clasificarea limbajelor de prelucrare a datelor relaionale:
?limbaje algebricebazate pe teoria mulimilor (SEQUEL, SQL);
?limbaje predicativebazate pe calculul predicatelor:
?orientate pe tupluri (QUEL, ALPHA);
?orientate pe domenii (variabilele iau valori n domeniile relaiilor, i nu n tuplurile acestora)
?non-grafice
?grafice
?cu variabile domeniu explicite (QBE);
?fr variabile domeniu explicite (LAGRIF, CUPID, VGQF).
Limbajele grafice ofer utilizatorului o imagine sau o ilustrare a structurii relaiei
utilizatorul completeaz un exemplu cu ceea ce dorete
sistemul returneaz datele cerute n acest format.
SQL(Structured Query Language)
= limbajul standardde descriere a datelor i accesare a informaiilor din BD
creat i dezvoltat iniial de ctre compania IBM Research,
implementat n cadrul prototipului System R;
exista peste o sut de dialecte
au fost create dou tehnologii puternice:
A.API
B.ODBC.

Tehnologia API(Application Programming Interface) =


= o bibliotec de funcii SQLce se pot integra ntr-un program gazd
avantaj: este o tehnica de lucru familiara programatorilor
dezavantaj: lipsa de interoperabilitate:
Tehnologia ODBC (Open Database Connectivity)
= o mulime de primitive ce pune la dispoziia utilizatorilor o interfa comun pentru accesarea
bazelor de date SQLeterogene
creata in 1992, de Microsoft, pe baza limbajuluiC
a devenit standardul industrial de facto
avantaje:
(1) grad nalt de interoperabilitate:
(2) grad inalt de flexibilitate
instruciunile sql pot fi incluse explicit n codul surs sau construite dinamic n timpul execuiei.
Arhitectura interfetei ODBC include patru componente:
1.aplicaia:
efectueaz prelucrarea i apelurile la funciile ODBCpentru a transmite comenzile SQLctre SGBD i a
regsi rezultatele furnizate de ctre acesta
2.administratorul de drivere:
ncarc driverele n contul unei aplicaii
3.agentul pentru drivere i baza de date:
4.sursa de date:
este format din datele pe care doresc s le acceseze:
? utilizatorul i SGBD-ul asociat
? SO gazd i platforma de reea (dac exist).
Limbajele algebrice
= limbaje neprocedurale care utilizeaz relaii pentru a transforma datele de intrare n datele de ieiri
solicitate
Exemple:
SQUARE,
SEQUEL
SQL;
SEQUEL(Structured English as a Query Language) =
= limbaj algebric definit n 1974 de D. D. Chamberlin i R.F. Boyce, tot de la Laboratorul de cercetri
IBM, pentru prototipul relaional System R.
este singurul limbaj relaional care are integrat nchiderea tranzitiv
operaia fundamental a limbajului: SELECT
o extensie comercial a acestui limbaj: SQL (SEQUEL = parintele SQL).
10
1.Generalitati
2.Limbaje algebrice
3.Limbaje predicative
4.Utilizarea limbajelor de prelucrare a datelor relationale in contextul limbajelor de programare
5.SQL
6.Limbajul MD

Limbajele predicative
= limbaje bazate pe calculul cu predicate
Exemple:
QUEL= limbaj predicativ orientat pe tupluri
poate fi utilizat independent sau inclus n limbajul C.
Limbajul este caracterizat de:
declararea unei variabile tuplu pentru fiecare relaie (prin RANGE)
absena cuantificatorilor n expresii;
?: este reprezentatimplicit prin declaraia RANGE, iar cuantificatorul universal este simulat cu
ajutorul.
?: este simulat cu ajutorul funciei COUNT
utilizarea unor operatori speciali pe mulimi.
QBE(Query By Example)
= un limbaj predicativ orientat spre domenii
prezentat de M.M. Zloof n 1977 i comercializat de IBMdup 1980, pentru a-i ajuta utilizatorii
neiniiai
extrem de accesibil => limbaj furnizat (n diferite forme) de majoritatea SGBD-urilor, inclusiv
Microsoft Access.
reprezint un mod de tratare virtual pentru accesarea informaiilor dintr-o BD, prin utilizarea
abloanelor de interogare
limbajul dispune de primitive de programare grafic a cererilor de date:
?utilizatorii completeaz o mulime de cmpuri predefinite intr-un ecran special.
?SGBD-ul construiete n fundal instruciunea SQL.
nu exist un standard oficial pentru aceast clas de limbaje
funcionalitatea este, n general, foarte asemntoare
limbajele sunt mai intuitive dect SQL
----------------------------------------SQL(Structured Query Language) =
= limbaj neprocedural pentru interogarea i prelucrarea informaiilor din BD
= limbaj declarativ:
utilizatorul trebuie doar s descrie CE si NU CUM trebuie obinut
compilatorul limbajului SQLgenereaz automat o procedur care acceseaz BD i execut comanda
?SQLpermite:
definirea, prelucrarea i interogarea datelor,
controlul accesului la date
la nivel logic si
la nivel de multime
?Comenzile SQLpot fi integrate n programe scrise n alte limbaje, de exemplu Cobol, C, C++, Javaetc.
Clasificarea instruciunile SQL:
limbajul de definire a datelor (LDD);
limbajul de prelucrare a datelor (LMD);
limbajul de control al datelor (LCD).
instruciuni pentru controlul sesiunii;
instruciuni pentru controlul sistemului;
instruciuni SQLncapsulate

MDX(Multidimensional Expressions) =
= limbaj multidimensional specializat
Interogarile MDX=
= interogari care se bazeaza pe cuburi OLAP
intorc ca rezultate date agregate, aflate la intersecia oricror niveluri de agregare din oricare ierarhii,
din oricare dimensiuni;
?Cubul(UDMUnified Dimensional Model) =
= o structur special, logica nu fizica si care va fi interogat n cadrul unui sistem multidimensional
poate rspunde rapid la interogri care cer o anumit agregare a datelor aflate la intersecia oricror
niveluri din oricare ierarhii din oricate dimensiuni;
?Scopulunei interogri MDX:
obinerea unei mulimi de date, numit mulime de celule(cellset) sau cub-rezultat (i.e.: o submulime
a cubului original).