Documente Academic
Documente Profesional
Documente Cultură
Proiect cofinanat din Fondul Social European n cadrul POS DRU 2007-2013
str. Spiru Haret nr. 10-12, sector 1, Bucureti-010176, tel. 021-3111162, fax. 021-3125498, vet@tvet.ro
BAZE DE DATE
Material de predare
Domeniul: Informatic
Calificarea: Analist programator
Nivel 3 avansat
2009
1
AUTOR:
COORDONATOR:
CONSULTAN:
2
Acest material a fost elaborat n cadrul proiectului nvmntul profesional i tehnic
n domeniul TIC, proiect cofinanat din Fondul Social European n cadrul POS DRU
2007-2013
Cuprins
I. Introducere......................................................................................................................8
II. Documente necesare pentru activitatea de predare...................................................10
III. Resurse.......................................................................................................................11
Tema 1. Baze de date. Concepte fundamentale..........................................................11
Fia suport 1.1 Baze de date. Concepte fundamentale...........................................11
Fia suport 1.2 Modelul entitate - relaie..................................................................16
Tema 2. Baze de date relaionale................................................................................20
Tema 2. Baze de date relaionale................................................................................21
Fia suport 2 Baze de date relaionale. Noiuni de baz.........................................21
Tema 3. Normalizarea bazelor de date........................................................................26
Fia suport 3.1 Dependene funcionale...............................................................26
Fia suport 3.2 Redundana datelor i anomalii de actualizare / reactualizare....29
Fia suport 3.3 Forme normale (1NF, 2NF, 3NF, 4NF, 5NF).................................31
Fia suport 3.3 Forme normale (1NF, 2NF, 3NF, 4NF, 5NF).................................32
Tema 4 Proiectarea bazelor de date............................................................................38
Fia suport 4.1 Proiectarea conceptual a bazelor de date.................................38
Fia suport 4.2 Proiectarea logic a bazelor de date...........................................43
Fia suport 4.3 Proiectarea fizic a bazelor de date.............................................44
Fia suport 4.3 Proiectarea fizic a bazelor de date.............................................45
Tema 5 Sisteme de gestiune a bazelor de date..........................................................47
Fia suport 5 Sisteme de gestiune a bazelor de date..............................................47
Tema 6 Elemente de algebr relaional.....................................................................54
Fia suport 6 Operaii relaionale.............................................................................54
Tema 7 Interogarea bazelor de date. Limbajul SQL....................................................58
Fia suport 7.1 Concepte generale..........................................................................58
Fia suport 7.2 Interogri simple pentru manipularea datelor.................................62
Fia suport 7.4 Tranzacii.........................................................................................70
Tema 8 Securitatea bazelor de date............................................................................73
Fia suport 8 Securitatea bazelor de date...............................................................73
Tema 9 Utilizarea bazelor de date n cadrul reelelor de calculatoare........................75
Tema 9 Utilizarea bazelor de date n cadrul reelelor de calculatoare........................76
Fia suport 9 Baze de date distribuite. Concepte generale.....................................76
IV. Fia rezumat..........................................................................................................80
V. Bibliografie...................................................................................................................82
3
I. Introducere
Materialele de predare reprezint o resurs suport pentru activitatea de predare,
instrumente auxiliare care includ un mesaj sau o informaie didactic.
El a fost elaborat pentru modulul Baze de date, ce se desfoar n 102 ore, din care:
Proiecteaz structura Tema 1 Baze de date. Concepte Fia suport 1.1 Baze de
unei baze de date fundamentale date. Concepte
fundamentale
4
Competene Teme Fie suport
Dup parcurgerea acestui modul elevii vor fi capabili s creeze baze de date, s
manipuleze datele folosind limbajul SQL i s asigure integritatea i securitatea
datelor din baze create. Acest modul reprezint un modul cheie al calificrii date
fiind ultimele tendine privind dezvoltarea sistemelor informatice, precum i
utilizarea lor la scara din ce n ce mai mare.
5
II. Documente necesare pentru activitatea de predare
Pentru predarea coninuturilor abordate n cadrul materialului de predare cadrul didactic
are obligaia de a studia urmtoarele documente:
6
III. Resurse
Tema 1. Baze de date. Concepte fundamentale
Fia suport 1.1 Baze de date. Concepte fundamentale
7
Totalitatea resurselor materiale, umane i financiare utilizate n cadrul unui proces
informaional avnd ca scop asigurarea legturii dintre sistemul decizional i cel
operaional i obinerea informaiilor poart denumirea de sistem informaional.
Sistemul informaional este deci reprezentat de totalitatea metodelor, procedurilor i
mijloacelor, folosite n procesul informaional i poate fi definit ca un ansamblu
organizat i integrat de operaii de culegere, transmitere, prelucrare, sistematizare,
analiz i pstrare, difuzare i valorificare a informaiilor.
Dac n cadrul procesului informaional prelucrarea datelor se face cu ajutorul
calculatorului atunci sistemul informaional se numete sistem informatic.
Colecia de date reprezint un ansamblu de date care se refer la acelai fenomen,
obiect sau situaie. n cadrul componentelor coleciei se pot stabili relaii care s
faciliteze prelucrarea datelor i obinerea informaiilor.
Structura de date reprezint o colecie de date pe care s-au stabilit anumite relaii
i un mecanism de selecie i identificare a componentelor sale. Accesul la
componentele structurii de date este un element foarte important n regsirea
informaiei i poate fi de dou feluri:
o secvenial : presupune parcurgerea tuturor datelor situate naintea celei care
urmeaz a fi prelucrat
o direct : presupune existena unui mecanism care s determine direct poziia
datei ce urmeaz a fi prelucrat.
Structurile de date pot fi omogene sau neomogene, n funcie de tipul datelor coninute
n structur. n funcie de posibilitatea de a-i modifica structura se ntlnesc structuri de
date dinamice sau statice. Operaiile care pot fi executate asupra unei structuri de date
sunt dependente de mediul de programare utilizat. n general asupra unei structuri de
date pot fi executate operaii precum: creare, populare, consultate, actualizare, sortare,
scindare, concatenare, duplicare, tergere.
Baza de date reprezint un ansamblu de date integrat, ntre care exist relaii logice
i o descriere a acestor date, proiectat pentru a satisface necesitile informaionale
ale unei organizaii. Descrierea structurii poart numele de dicionar de date sau
metadate i creeaz o interdependen ntre datele propriu-zise i programe.
Sisteme de gestiune a bazelor de date reprezint un pachet de programe care
permite definirea, crearea, ntreinerea i accesul controlat la baza de date.
Baza de date poate fi privit ca o colecie de fiiere interconectate care conin nucleul
de date necesare unui sistem informatic. Astfel, poate fi considerat drept un model al
unor aspecte ale realitii unei companii, modelat prin intermediul datelor. Diferitele
obiecte din cadrul realitii ce prezint interes sunt denumite entiti. Pentru aceste
obiecte sunt achiziionate i memorate date referitoare la diferite caracteristici ale
entitii numite atribute. ntre entitile identificate se stabilesc relaii.
8
integritatea datelor (se refer la corectitudinea datelor ncrcate i manipulate
astfel nct s se respecte restriciile de integritate),
securitatea datelor (limitarea accesului la baza de date),
partajarea datelor (datele pot fi accesate de mai muli utilizatori, eventual n
acelai timp),
independena datelor (organizarea datelor s fie transparent pentru utilizatori,
modificrile n baza de date s nu afecteze programele de aplicaii).
Descrierea general a unei baze de date se numete schema bazei de date. Dat
fiind arhitectura pe trei niveluri, exist trei tipuri de scheme, corespunztoare celor trei
niveluri: schema extern, schema conceptual i schema intern.
O baz de date are mai multe scheme externe corespunztoare tuturor vederilor
utilizatorilor. Schema conceptual descrie toate articolele de date i relaiile dintre
acestea, mpreun cu constrngerile de integritate, exist o singur schem
conceptual. La nivelul intern schema intern reprezint o descriere a modelului intern.
Sistemul de gestiune a bazelor de date permite implementarea celor trei tipuri de
scheme, prin utilizarea unui limbaj de definire a datelor. Acest limbaj este ns prea
inferior pentru a putea descrie necesitile unui sistem informaional al unei organizaii.
Din acest motiv au fost introduse i utilizate modelele de date.
9
Exist modele de date bazate pe obiecte, modele de date bazate pe nregistrri,
modele de date fizice. Primele dou descriu datele la nivel conceptual i extern, iar
ultimul model descrie datele la nivel intern.
2. Modele bazate pe obiecte:
- Modelul entitate relaie
- Modelul semantic
- Modelul funcional
- Modelul oriectat spre obiecte
3. Modele bazate pe nregistrri:
- Modelul de date relaional
- Modelul de date n reea
- Modelul de date ierarhic
4. Modele fizice, decriu cum sunt stocate datele pe calculator:
- Modelul unificator
- Memoria cadru
Din punctul de vedere al proiectrii bazelor de date sunt importante primele dou tipuri
de modele, fia suport 1.3 va trata un model bazat de obiecte (modelul entitate -
relaie), iar Tema 2 trateaz un model bazat pe nregistrri (modelul relaional).
Tratarea prin sisteme de baze de date permite astfel definirea datelor separat de
programele de aplicaie. Declararea structurii logice a datelor se face n exteriorul
aplicaiei asigurnd astfel independena programnelor fa de structura datelor.
Apare acum problema existenei unei interfee ntre bazele de date i programele de
aplicaie care s permit:
- definirea structurii datelor
- criteriile de acces la date
- confidenialitatea datelor
10
- controlul concurenei
- integritatea datelor
- securittea datelor
Toate aceste proceduri sunt asigurate de sistemul de gestiune a bazelor de date.
Sugestii metodologice
11
Fia suport 1.2 Modelul entitate - relaie
Conceptele de baz ale acestui model sunt: tipurile de entiti, tipurile de relaii i
atributele.
Tipul de entitate un obiect sau un concept care este identificat ca avnd o existen
independent. Un tip de entitate poate fi un obiect cu o existen fizic (real) sau un
obiect cu o existen conceptual. Tipul de entitate este echivalentul relaiei din modelul
relaional.
Exemplu:
Existen fizic: Elev, Profesor, Clasa
Existen conceptual: Examinare, Inscriere, Mutare, Arhivare
Fiecare tip de entitate este identificat printr-un nume i o list de proprieti. O baz de
date conine mai multe tipuri de entiti. Entitatea este o instan a unui tip de entitate,
care este unic determinat. Fiecare tip de entitate are un set distinct de atribute, iar
fiecare entitate are propriile sale valori pentru fiecare atribut.
Exemplu:
ELEV DISCIPLINA
SITUATIE_SCOLARA
Atribute
Atributul reprezint o proprietate a entitii sau a relaiei. Atributul unei entiti conine
valorile ce o descriu.
12
Exemplu:
O entitate de tip elev poate fi descris prin: numrul elevului (IdElev), numele elevului
(NumeElev), cod numeric personal (CNPElev), adres (AdresaElev).
Pot exista atribute care au acelai domeniu. De exemplu data naterii i data nscrierii
pot fi atribute care au ca domeniu data calendaristic.
Chei un atribut sau un set de atribute care identific n mod unic apariiile individuale
ale unui tip de entitate.
n modelul entitate-relaie se ntlnesc urmtoarele noiuni: cheie candidat, cheie
primar i cheie compus. Primele dou au fost definite i la modelul relaional i au
aceeai semnificaie.
Cheia compus este o cheie candidat care este alctuit din mai multe atribute.
SE NUM
PRENUM
X E
E
CNP
ELEV
ADRES
A
NOTE
DATA_N VARST
A
Figur 1 Reprezentarea schematic a entitii elev
Tipuri de relaii
Un tip de relaie reprezint o asociere semnificativ ntre dou tipuri de entiti. Fiecare
tip de relaie are un nume care descrie funcia sa.
Exemplu:
13
1. entitatea clasa este asociat entitii elev prin relaia numit EsteInscris (o clasa
detine elevi).
2. Entitatea profesor este asociat entitii clasa prin relaia numit Pred
(Prefesorii predau la clase).
Relaiile sunt reprezentate grafic printr-un romb, etichetat cu numele relaiei. Rombul
are contur dublu dac relaia conecteaz o entitate slab cu una tare.
Exemplu:
CNP
ELEV
STUDIAZ AreNot
A e
NrDisciplin
a
DISCIPLINA EsteNota SITUATIE_
ta SCOLARA
Gradul unei relaii definete numrul de entiti participative ntr-o relaie. n acest
sens pot exista relaii binare, ternare, cvadrupl. Cel mai des ntlnit grad al unei relaii
este binar.
Exemple:
1:1 Relaia Administreaz care se poate stabili ntre entitile Clase (IdClasa,
NumeClas, Profil, NrElevi) i Diriginti (IdDiriginte, NumeDiriginte, Specialitate, Statut).
IdClase IdDirigint
e
1 1
Clase Administrea Diriginti
z
1:M Relaia AreElevi care se poate stabili ntre entitile Elevi (IdElev, NumeElev,
Data_N, Adresa) i Clase (IdClasa, IdElev, NumeClasa, Specializare)
14
IdClasa IdElevi
1 M
Clase AreElevi Elevi
IdProfesor IdElevi
i
M N
Profesori Evalueaz Elevi
Exemplu de relaie M:N
La stabilirea relaiilor dintre entiti trebuie avute n vedere i constrngerile de
participare. Acestea deetermin dac existena unei entiti depinde de faptul c
aceasta este legat de alt entitate printr-o relaie.
Exist dou tipuri de constrngeri de participare: totale i pariale. Participarea este
total dac existena unei entiti necesit existena uneia asociate printr-o anumit
relaie altfel este parial.
Sugestii metodologice
15
Tema 2. Baze de date relaionale
Fia suport 2 Baze de date relaionale. Noiuni de baz
Modelul relaional nu este orientat spre sistemul de calcul, nu include regulile, structurile
i operaiile referitoare la implementarea fizic a unui sistem de baze de date. Se face
astfel o separare clar ntre aspectele fizice i cele logice ale bazei de date, iar
operaiile de manipulare a datelor pot fi privite ca o serie de operaii de proiecie, filtrare,
reuniune, intersecie asupra datelor din tabele.
16
Domeniu :
- Pentru IdElev : submulime a numerelor naturale
- Nume, Prenume, Adres : ir de caractere
- Data_nasterii : dat calendaristic
Gradul relaiei Elev : 5
Nr. De tupluri : 3
Cardinalitatea relaiei : 3
Proprietile relaiilor
Plecnd de la teoria mulimilor putem afirma c o relaie are urmtoarele proprieti :
- Are o denumire distinct ca orice mulime.
- Fiecare celul a relaiei conine exact o valoare atomic (unic), ntr-o mulime
nu se repet niciun element
- Fiecare atribut are o denumire disticnt
- Toate valorile unui atribut aparin aceluiai domeniu
- Ordinea atributelor nu are nicio important
- Fiecare tuplu este distinct, nu exist dubluri ale tuplurilor
- Ordinea tuplurilor nu are nicio importan, precum nici ordinea elementelor unei
mulimi nu are nicio importan
Pentru identificarea unic a fiecrui tuplu dintr-o relaie se folosesc cheile primare.
Deci cheia primar este un atribut sau un set de atribute care identific n mod unic
fiecare nregistrare din tabel.
Supercheia : Un atribut sau un set de atribute care identific n mod unic fiecare tuplu
din interioarul unei relaii. Supercheia poate conine i atribute care nu sunt necesare
pentru o identificare unic.
n teoria bazelor de date se mai ntlnete i noiunea de cheie strin sau extern.
Aceasta este un atribut sau un set de atribute din cadrul unei relaii care se potrivete
cu cheia primar a altei relaii. Cheile strine stabilesc legturi ntre dou relaii.
Exemplu de relaii ntre care exist o legtur ntre cheia primar i cheia strin -
relaia elev i relaia clase ce au urmtoarele scheme :
17
Elev (IdElev, NumeElev, PrenumeElev, Data_NElev, AdresaElev, IdClasa)
Clase (IdClasa, NumeClasa, ProfilClasa)
Pentru relaia elev IdElev reprezint cheia primar deoarece identific n mod unic
fiecare elev, iar IdClasa reprezint cheia strin deoarece face legtura cu relaia clase
unde IdClasa reprezint cheia primar.
Integritarea relaional
n teoria bazelor de date exist mai multe tipuri de constrngeri. Unele dintre acestea
sunt date de faptul c fiecare atribut are un domeniu, deci valorile pe care le poate primi
un atribut sunt restricionate la o mulime de valori sau pot fi restricionate de valorile
altor atribute, de lungimea lor, se pot referi la tipul atributelor etc. Utilizatorii aplicaiilor
informatice pot specifica constrngeri adiionale cum ar fi : ntr-o clas nu pot exista
dect 30 de elevi, iniiala tatlui din cadul numelui unui elev nu poate avea dect 3
caractere, codul numeric personal are strict 13 cifre etc.
Pe lng aceste restricii mai exist dou numite reguli de integritate ce se aplic
tuturor instanelor unei baze de date i anume : integritate a entitilor i integritate
referenial.
Elev
IdElev NumeElev PrenumeElev Data_NElev AdresaElev IdClasa
1 Popa Marin 1-0ct-1997 Str. Jiului, nr. 19, Buc 1
2 Marin Simona 19-Dec-1998 Str. N. Iorga, nr. 10, Ilfov 1
3 Ionescu David 2-Mai-1996 Str. R.Beller, nr. 25, Buc 2
Clase
IdClasa NumeClasa ProfilClasa
1 9A Matematica-Informatica
2 9B Filologie
3 9C Stiintele naturii
De exemplu, avnd n vedere cele dou relaii definite mai sus elev i clase toi elevii
care aparin unei clase vor avea ca valoarea a atributului IdClasa acelai numr egal cu
18
unul din relaia Clase. Primii doi elevi din relaia elev aparin clasei 9A, iar cel de-al
treilea clasei 9B. Pentru a respecta integritatea referenial, innd cont de faptul c
ntre cele dou relaii exist o legtur prin care un elev aparine unei clase, n relaia
elev nu va exista niciun elev care s aibe ca valoare a atributului IdClasa null sau alt
valoare care nu se regsete ntre valorile cheii primare IdClasa din relaia Clase.
Limbaje relaionale
n afara relaiilor i proprietilor acestora modelul relaional mai este definit i de
limbajele relaionale, seturi de operaii care se pot efectua asupra relaiilor i datelor
definite n cadrul relaiilor.
Algebra relaional, introdus de Codd, este o mulime format din opt operatori
unari i binari ce acioneaz asupra relaiilor genernd o alt relaie:
- operatorii tradiionali pe mulimi: reuniune, intersecie, diferen, produsul cartezian;
- operatori speciali: proiecia, selecia, uniune, mprire.
Majoritatea limbajelor relaionale sunt mai puternice dect algebra relaional i calculul
relaional fapt datorat operaiilor adiionale specifice limbajelor cum ar fi: funciile de
calcul, de sumare i de ordonare.
n prezent cel mai utilizat limbaj pentru interogarea bazelor de date relaionale este
SQL, limbaj bazat pe operaiile algebrei relaionale.
19
Sugestii metodologice
Se poate lucra individual sau pe grupe. Se vor utiliza metode prin care elevii
s identifice i s gseasc singuri elementele fundamentale pentru baze de date
relaionale: se vor exemplifica relaii (tabele) din care elevii s identifice atributele,
domeniile atributelor, cheile, cardinalitatea etc. n cazul lucrului pe grupe se vor
face comparaii ntre rezultatele obinute pe grupe.
20
Tema 3. Normalizarea bazelor de date
Fia suport 3.1 Dependene funcionale
A1 A2
Diagram de dependen funcional
Exemplu:
Fie relaia Personal cu urmtoarele atribute:
Personal
IdPersoana NumePersoana PrenumePersoana Functie Salariu
1 Pop Maria profesor 500
2 Avram Ion maistru instructor 400
3 Ivan Felicia secretar 350
4 Antim Maria director 600
21
IdPersoana NumePersoana
IdPersoana PrenumePersoana
IdPersoana Salariu
NumePersoana, PrenumePersoana Funcie
Dac presupunem c pentru fiecare funcie este stabilit un salariu unic atunci Funcie
Salariu reprezint o dependen funcional.
Departament
IdDepartamen NumeDepartamen LocatieDepartamen InteriorDepartamen
MailDepartament
t t t t
1 Cancelarie Cladirea A1 cancelarie@ctm.r 115
o
2 Magazie Cladirea A2 magazie@ctm.ro 113
3 Atelier Cladirea Atelier tehno@ctm.ro 114
4 Secretariat Cladirea A1 office@ctm.ro 111
5 Administratie Cladirea C1 admin@ctm.ro 112
6 Contabilitate Cladirea C1 conta@ctm.ro 116
Dependen tranzitiv
Dac avem o relaie R, iar A,B,C sunt atribute lui R care respect condiiile:
- A B i B C,
- A nu este dependent funcional de B i C
atunci A C se spune c C este dependent tranzitiv de A prin intermediul lui B.
22
Exemplu:
Condisernd relaiile din Personal i Departament descrise mai sus, avem:
IdPersoana CodDepartament
CodDepartament MailDepartament
Rezult c IdPersoana este dependent tranzitiv de MailDepartament
Dependen multivaloare
Considerm A, B, C, trei atribute ale relaiei R. Prin dependen multivaloare se nelege
o dependen dintre atributele A, B, C, prin care pentru fiecare valoare a atributului A
exist o mulime de valori a atributului B i o mulime de valori a atributului C.
Pentru descrierea unei dependene multivaloare dintre atributele A, B, C se folosete
notaia: A B i B C.
Exemplu:
Un elev studiaz mai multe discipline i pentru fiecare disciplin primete mai multe
note.
NumeElev IdDisciplina
IdDisciplinaNota
Sugestii metodologice
Se poate lucra individual sau pe grupe. Se vor utiliza metode prin care elevii
s identifice toate tipurile de dependene. n cazul lucrului pe grupe se vor face
comparaii ntre rezultatele obinute pe grupe, se vor analiza caracteristicile
dependinelor.
23
Fia suport 3.2 Redundana datelor i anomalii de actualizare /
reactualizare
Unul dintre scopurile principale ale proiectrii bazelor de date este acela de a grupa
atributele n relaii, astfel nct s se minimizeze redundana datelor, deci s se
realizeze pe ct posibil reducerea spaiului de memorare alocat bazelor de date.
Vnzri
Data PretArti
IdClie NumeCli AdresaCli TelefonCli IdComa CodArti NumeArti Cantita
Comand col
nt ent ent ent nda col col te
a
1 Pop Bucuresti 23344556 C1 10.10.2 1 Tastatura 25 120
Marin 7 008
2 Iorgu Iasi 34567889 C2 2.12.20 2 Mouse 12 200
Florin 08
3 Pop Bucuresti 88344556 C1 10.10.2 3 DVD 5 100
Marin 7 008
4 Avram Ploiesti 45324677 C3 12.12.2 4 Laptop 4000 25
Alin 008
5 Avram Ploiesti 34556666 C3 12.12.2 1 Tastatura 25 200
Alin 008
Astfel pe lng aceast redundan a datelor mai pot apare i alte probleme, numite
anomalii de actualizare/reactualizare. Aceste anomalii sunt clasificate astfel: anomalii de
inserare, de tergere i de actualizare/modificare.
24
Anomalii de modificare. Aceste anomalii se refer la problemele cauzate la
modificarea datelor din cadrul relaiilor sau din bazele de date.
Dac se dorete modificarea unor date care apar i n cadrul altor relaii sau tupluri este
de preferat ca modificrile fcute s se realizeze ntr-un singur loc, altfel pot aprea
privind corectitudinea.
n cazul exemplului dat dac se dorete modificarea datelor referitoare la un client
atunci acestea trebuie efectuate n toate tuplurile n care apare acel client. Astfel, pot
aprea probleme la tastare, ceea ce ar duce la un rezultate incorecte.
Client
IdClient NumeClient AdresaClient TelefonClient
1 Pop Marin Bucuresti 233445567
2 Iorgu Florin Iasi 34567889
3 Avram Alin Ploiesti 34556666
Articol
CodArticol NumeArticol PretArticol
1 Tastatura 25
2 Mouse 12
3 DVD 5
4 Laptop 4000
Comanda
IdComanda DataComanda CodClient
C1 10.10.2008 1
C2 2.12.2008 2
C3 12.12.2008 3
Vnzri
IdComanda IdArticol Cantitate
C1 1 120
C1 3 100
C2 2 200
C3 1 200
C3 4 25
25
Astfel se pot face actualizri de date ntr-un singur loc, dac se terge o
comand datele despre client nu se pierd, iar inserarea de date se face
independent.
Sugestii metodologice
Se poate lucra individual sau pe grupe. Se vor utiliza metode prin care elevii
s identifice toate tipurile de anomalii generate de redundana datelor. n cazul
lucrului pe grupe se vor face comparaii ntre rezultatele obinute pe grupe, se vor
analiza anomaliile prezente n exerciiile date.
26
Fia suport 3.3 Forme normale (1NF, 2NF, 3NF, 4NF, 5NF)1
1
Aceast fi poate face obiectul predrii orelor alocate pentru laborator, alocate
modulului.
27
Analiznd aceast relaie se constat c fiecare elev poate avea mai multe numere de
telefon, prin urmare informaia se repet i deci poate fi rafinat prin mprirea n dou
tabele confom urmtorului algoritm:
1. se nlocuiesc n tabel coloanele corespunztoare atributelor compuse cu
coaloane ce conin componentele elementare ale acestora
2. se plaseaz grupurile care se repet ntr-un nou tabel
3. se introduce n noul tabel cheia primar a tabelului din care am extras atributele,
cheie care devine cheie strin n noul tabel.
4. Se restabilesc cheile primare ale noilor tabele
Telefon elev
Idtelefon IdElev Telefon IdEle NumeEle Prenum Data
Adresa Materia Nota
1 1 223345 v v eElev Nasterii
2 1 0723455667 1 Popescu Ionut 19.02.1990 Romania, Informatica 9
Bucuresti, Str.
3 3 345124 Unirii, nr. 2
4 3 0723456789 2 Popescu Ionut 19.02.1990 Romania, Matematica 8
Bucuresti, Str.
Unirii, nr. 2
Am obinut astfel prima 3 Avram Mircea 02.04.1991 Romania, Informatica 7
form normal. Aceasta Bucuresti, Str.
este o cerin minim a Jiului, nr.34
tuturor sistemelor 4 Avram Mircea 02.04.1991 Romania, 8
relaionale. Relaiile Bucuresti, Str. Matematica
aflate n prima form Jiului, nr.34
normal permit o referire simpl a datelor prin indicarea numelui relaiei/tabelului, a
coloanei i a cheii rndului din care face parte informaia respectiv.
A doua form normal se aplic relaiilor cu chei compuse, adic acelor relaii n care
cheia primar este compus din dou sau mai multe atribute. Dac o relaie are cheia
primar format dintr-un singur atribut se consider c este n a doua form nornal
2NF. Dac relaia nu este n 2NF atunci pot apare anomalii la introducerea/actualizarea
datelor.
Exemplu:
Fie relaia Elev n care pentru fiecare elev este menipronat clasa n care elevul este
nscris prin dou atribute: CodClasa i SpecializareClasa.
Elev
IdEle NumeEle PrenumeEl DataNaster Not CodCla SpecializareCl
Adresa Materia
v v ev ii a sa asa
1 Popescu Ionut 19.02.1990 Romania, Informati 9 9A Mate-info
Bucuresti, ca
Str. Unirii, nr.
28
Elev
IdEle NumeEle PrenumeEl DataNaster Not CodCla SpecializareCl
Adresa Materia
v v ev ii a sa asa
2
2 Popescu Ionut 19.02.1990 Romania, Matemati 8 9A Mate-Info
Bucuresti, ca
Str. Unirii, nr.
2
3 Avram Mircea 02.04.1991 Romania, Informati 7 9B Filologie
Bucuresti, ca
Str. Jiului,
nr.34
4 Avram Mircea 02.04.1991 Romania, 8 9B Filologie
Bucuresti, Matemati
Str. Jiului, ca
nr.34
Dac se va modifica Specializarea unei clase atunci vor trebui actualizate nu numr de
rnduri egal cu numrul de elevi nscrii n clasa respectiv. Dac cel puin unu nu este
modificat atunci apare o anomalie la actualizarea datelor. Prin urmare Specializarea
unei clase depinde de IdElev i CodClase, adic nu este total dependent de cheia
primara care este IDElev.
Prin urmare acest tabel va fi descompus ntr-un tabel ce memoreaz date despre elevi
i unul care memoreaz date despre clase. n ambele tabele se va pstra un atribut
CodClasa. Acesta este cheie primar n tabelul ce memoreaz clasele i cheie strin
n cel pentru elevi.
O relaie se afl n a treia form normal dac se afl n prima i a doua i niciun
atribut care nu este cheie primar nu este dependent tranzitiv de cheia primar.
29
dependenelor funcionale pariale sau tranzitive pentru alte chei candidat (atribute sau
grup de atribute care identific n mod unic fiecare tuplu dintr-o relaie).
Forma normal Boyce Codd trateaz dependenele funcionale care pot exista ntre
toate cheile candidat ale unei relaii i alte atribute. Dac o relaie are o singur cheie
candidat care este cheie primar atunci formele 3NF i BCNF sunt echivalente.
Se spune c o relaie se afl n forma normal Boyce Codd dac i numai dac
fiecare determinant este o cheie candidat.
Un algoritm pentru aducerea n BCNF a unei relaii R aflate n 3NF poate fi definit astfel:
1. Pentru fiecare dependen non-cheie AB unde A i B sunt subseturi de atribute
ale lui R, se creeaz dou relaii. Una dintre ele va conine atributele A i B, iar
cealalt va fi format din toate atributele lui R din care se elimin atributul B.
2. Dac relaiile obinute conin alte dependene non-cheie se reia pasul 1.
De exemplu, dac ntr-o relaie exist atribute multi-valorice, trebuie s repetm fiecare
valoare a unuia dintre atribute, mpreun cu toate atributele celuilalt, pentru a ne
asigura c rndurile relaiei sunt coerente.
Clase_Elevi_Profesori
IdClas NumeElev NumeProfesor
1 Popa Stan Marin
Maria
1 Ion Ion Stan Marin
1 Popa Stoian Ioana
Maria
1 Ion Ion Stoian Ioana
Constatm c relaia pentru clasa 1 unde sunt introdui 2 elevi lucreaz cu doi
profesori. Prin urmare apare o constrngere numit dependen multivaloare deoarece
aceast relaie conine dou relaii de tip m:n independente unele de altele.
Astfel, pentru exemplul dat vom avea dou relaii dup cum urmeaz:
30
Clase_Elevi
IdClas
NumeElev
1 Popa Maria
1 Ion Ion Clase_Profesori
IdClas NumeProfesor
1 Stan Marin
1 Stoian Ioana
S presupunem c avem urmtoarea situaie: la o clas predau mai muli profesori, iar fiecare
profesor poate preda mai multe discipline. Pentru a reine aceasta situaie am putea crea relaia:
Clase_Profesori_Discipline
IdClasa NumeProfesor IdDisciplin
1 Popa Maria D1
1 Pop Valentin D4
1 Ion Ion D2
2 Ion Ion D4
2 Ionescu Vasile D5
3 Ionescu Vasile D6
3 Popa Maria D2
Constatm c dac am crea dou relaii n care s reinem profesorii ncadrai la o clas
i alta n care s reinem disciplinele specifice fiecrei clas nu putem ti cine pred
aceste discipline. Altfel spus aceste dou relaii n:m sunt dependente. Se poate observa
c la clasa 1 disciplina D2 o pred Ion Ion dar ar putea s-o predea i Popa Maria.
Prin urmare pentru a elimina redundaa datelor relaia trebuie descompus n trei relaii:
Clase_profesori (IdClasa, NumeProfesor)
Clase_Discipline (IdClasa, IdDisciplin)
31
Clase_Profesori (NumeProfesor, IdDisciplina)
32
Sugestii metodologice
Se poate lucra individual sau pe grupe. Se vor utiliza metode prin care elevii
s identifice i s trateze toate formele normale. n cazul lucrului pe grupe se vor
face comparaii ntre rezultatele obinute pe grupe, se vor analiza caracteristicile
bazelor de date nainte i dup normalizare.
33
Tema 4 Proiectarea bazelor de date
Fia suport 4.1 Proiectarea conceptual a bazelor de date
n aceast etap trebuie identificate toate relaiile care pot apare ntre entiti precum i
cardinalitatea fiecrei relaii, care poate fi: unu-la unu (1:1), unu-la-muli (1:n), muli-la-
muli (m:n). Aceste relaii se vor documenta i ele precum entitile n cadrul
dicionarului de date. De asemenea se vor identifica i constrngerile de participare.
Exemplu de relaii:
35
Dup ce au fost identificate entitile i relaiile dintre acestea se vor identifica i
asocia atributele i domeniile acestora. Aceast etap decide ce fel de informaii
memorm n entiti Ce fel de informaii trebuie s pstrm despre .....?.
n cazul sistemului realizat pentru entitatea Elev au fost identificate urmtoarele atribute:
NumeElev, PrenumeElev, InitialaElev, BISerie, BINr, CNP, NrMatricol, ZiNastere,
LunaNastere, AnNastere, LocalitateNastere, Jud/Sector, Tara, Sex, Nationalitate,
StareElev, DataInscrierii, DataTerminarii, NumeTata, NumeMama, DomiciliuElev,
DomiciliuParinti, Limba1, Limba2, Categorie, Picture, Observatii.
NumeElev Text 50
AllowZeroLength: True
AppendOnly: False
Attributes: Variable Length
CollatingOrder: General
ColumnHidden: False
ColumnOrder: Default
ColumnWidth: Default
DataUpdatable: False
DisplayControl: Text Box
GUID: {guid {0F81B464-A92D-11D7-A6EE-0060B0C2D358}}
36
IMEMode: 0
IMESentenceMode: 3
OrdinalPosition: 1
Required: False
SourceField: NumeElev
SourceTable: tabElevi
UnicodeCompression: True
InitialaElev Text 3
AllowZeroLength: True
AppendOnly: False
Attributes: Variable Length
CollatingOrder: General
ColumnHidden: False
ColumnOrder: Default
ColumnWidth: Default
DataUpdatable: False
DisplayControl: Text Box
GUID: {guid {0F81B465-A92D-11D7-A6EE-0060B0C2D358}}
IMEMode: 0
IMESentenceMode: 3
OrdinalPosition: 2
Required: False
SourceField: InitialaElev
SourceTable: tabElevi
UnicodeCompression: True
PrenumeElev Text 50
AllowZeroLength: True
AppendOnly: False
Attributes: Variable Length
CollatingOrder: General
ColumnHidden: False
ColumnOrder: Default
ColumnWidth: 2610
DataUpdatable: False
DisplayControl: Text Box
GUID: {guid {0F81B466-A92D-11D7-A6EE-0060B0C2D358}}
IMEMode: 0
IMESentenceMode: 3
OrdinalPosition: 3
Required: False
SourceField: PrenumeElev
SourceTable: tabElevi
UnicodeCompression: True
Identificarea cheilor candidat are ca scop final determinarea cheii primare, cheie care
identific n mod unic fiecare nregistrare a entitii. Se pot identifica mai multe chei
candidat. Pentru alegerea cheii primare din setul de chei candidat identificate se va
recurge la :
- alegerea chieii candidat cu setul minim de atribute
- alegerea cheii candidat cu probabilitatea cea mai mic de modificare a valorilor
- alegerea cheii candidat cu probabilitatea cea mai mic de pierdere a unicitii
- alegerea cheii candidat cu cele mai puine caractere i cel mai uor de utilizat de ctre
utilizator.
Cheile primare i cele alternative (dac exist) se nregistreaz n dicionarul de date.
37
Validarea de ctre utilizator a modelului de date conceptual este util pentru a garanta
c modelul este o reprezentare a punctului de vedere al utilizatorului.
Sugestii metodologice
38
Fia suport 4.2 Proiectarea logic a bazelor de date
Fa de cele de mai sus putem spune c activitile asociate rafinrii unui model de
date conceptual pentru a obine un model de date logic includ: eliminarea relaiilor de tip
n:m, eliminarea relaiilor complexe, eliminarea relaiilor recursive, eliminarea relaiilor cu
atribute, eliminarea atributelor cu valori multiple, reexaminarea relaiilor de tip 1:1 i
eliminarea relaiilor redundante.
n ceea ce privete extragerea relaiilor se vor identifica relaiile tari i slabe, relaiile
binare (1:1 i 1:n), relaii de tip superclas/subclas i se vor documenta relaiile i
atributele cheilor strine.
Modelul de date logic poate fi validat prin utilizarea tehnicii de normalizare i conform
tranzaciilor pe care trebuie s le accespte acesta. Normalizarea este utilizat pentru a
mbunti modelul, astfel nct acesta s satisfac diversele constrnderi care evit
dublarea inutil a datelor. Prin normalizare se garanteaz c modelul utilizat este
coerent i are o redundan minim i o stabilitate maxim.
Pentru a proteja datele din cadrul unei vederi se vor considera urmatoarele tipuri de
constrngeri de integritate:
- datele cerute
- domeniile atributelor
- integritatea atributelor
- integritatea referenial
- constrngerile impuse de companie
Pentru mbinarea modelelor de date logice locale n vederea obinerii modelului global
pot avea loc revizuiri de denumire ale entitilor, atributelor, relaiilor. Se pot mbina
entiti sau relaii, se pot aduga alte entiti sau relaii, au loc verificri ale cheilor
primare, strine, se verific constrngerile i se reactualizeaz documentaia.
Sugestii metodologice
40
Fia suport 4.3 Proiectarea fizic a bazelor de date
Proiectarea fizic presupune realizarea unei descrieri a implementrii bazei de date ntr-
o capacitate de stocare secundar. n cadrul acestui proces se descriu structurile de
stocare i metodele de acces utilizate pentru obinerea unui acces eficient la date.
La pasul I se vor transforma relaiile extrase din modelul logic global ntr-o form care
s poat fi implementat n sistemul de gestiune a bazelor de date utilizat. n acest sens
se vor verifica urmtoarele elemente:
- dac sistemul accept definirea cheilor primare, strine i alternative
- dac sistemul accept definirea datelor necesare (ex.: atribute not null)
- dac sistemul accept definirea domeniilor identificate
- dac sistemul accept definirea constrngerilor companiei
- cum se creeaz relaiile de baz.
41
De asemenea se va ine cont i de resursele hardware ale sistemului: memoria intern,
CPU, capacitatea de stocare, reeau de calculatoare.
Sugestii metodologice
42
Tema 5 Sisteme de gestiune a bazelor de date
Fia suport 5 Sisteme de gestiune a bazelor de date
n figura de mai jos este ilustrat un exemplu de tratare prin baze de date. Figura
ilustreaz cum departamentul secretariat i contabilitate i utilizeaz programele de
aplicaie proprii pentru a accesa baza de date prin intermediul sistemului de gestiune a
bazelor de date.
Intrri/ieiri
Baza de
Secretariat SGBD date
Intrri/ieiri
Contabilitate
Secretar 1 Administrator
Server de
Secretariat baze de date Administraie
Secretar 2
Pedagog
Secretar 3
Contabil 1
Baza
Catedra 1 de date
Cancelarie Contabilitate
Contabil 2
Catedra 2
44
etc. SGBD-uile pot avea propriile instrumente care permit dezvoltarea rapid de
aplicaii.
Datele memorate ntr-o baz de date sunt date persistente, adic date care rmn
memorate pe suport magnetic, independent de execuia programelor de aplicaii. Datele
persistente ale unei baze de date se introduc, se terg sau se actualizeaz folosind
date de intrare (provenite de la tastatur, din citirea unor fiiere de date sau din
recepionarea unor mesaje). Datele de intrare sunt, n general, date nepersistente; ele
sunt generate de utilizatori i sunt memorate (devenind date persistente) numai dup ce
au fost validate (acceptate) de ctre SGBD. Datele de ieire ale unui sistem de baze de
date sunt, de asemenea, date nepersistente; ele provin din operaii de interogare a
bazei de date i sunt puse la dispoziia utilizatorului (sub form de afiri, rapoarte
tiprite, etc).
Persoanele care sunt implicate n lucru cu bazele de date i SGBD-urile pot fi:
adiministratorii bazei de date, proiectanii bazei de date, programatorii de aplicaii,
operatorii/utilizatorii finali.
Programatorii de aplicaii sunt cei care dezvolt aplicaiile de baze de date, folosind
limbaje de programare de nivel nalt (C++, Java, Basic etc.) i biblioteci care permit
ncorporarea operaiilor de acces la baza de date.
Utilizatorii finali sunt acei utilizatori care acceseaz baza de date prin intermediul unui
program de aplicaie care le confer drepturi limitate de acces la date pentru anumite
operaii de prelucrare. Utilizatorii finali sunt persoane cu pregtire tehnic minimal,
care efectueaz un volum mare de operaii asupra bazei de date, dar nu trebuie s
cunoasc mai mult dect posibilitile oferite de programul pe care l utilizeaz. De
exemplu, utilizatorii finali ai unei aplicaii de gestiuune a elevilor dintr-o coal (colegiu
tehnic) pot fi secretarele care efectueaz un numr mare de operaii asupra datelor din
sistem (introducerea elevilor, introducerea situaiilor colare, organizarea examenelor
de absolvire, tiprirea diplomelor de absolvire, situaii statistice etc.), fr a fi necesar s
cunoasc ntreaga structur a bazei de date.
45
Utilizarea sistemelor de gestiune a bazelor de date ofer utilizatorilor mai multe
avantaje dar i o serie de dezavantaje.
Clasificare dup numrul de staii pe care este stocat baza de date. Exist dou
categorii de sisteme de baze de date: centralizate i distribuite.
Un sistem de baze de date distribuit (Distributed Database System) poate avea att
datele, ct i sistemul de gestiune, distribuite n mai multe staii interconectate printr-o
reea de comunicaie.
47
Exemple de SGBD-uri
SQL Server este sistemul de gestiune a bazelor de date relaionale dezvoltat de firma
Microsoft pentru sistemele de operare Windows. Au existat mai multe versiuni,
versiunea actual (2008) fiind SQL Server 2005. n toate versiunile sistemul SQL Server
suport complet standardul SQL2, cu implementarea performant a trsturilor
avansate de stocare i prelucrare a datelor (integritate referenial, subinterogri,
triggere, gestiunea tranzaciilor, etc).
Microsoft Access este unul din cele mai cunoscute sisteme de gestiune a bazelor de
date relaionale pe platforme de calculatoare personale. MS Access dispune de un
sistem de control al bazei de date (database engine) i o interfa grafic pentru
interaciunea cu utilizatorul. Aplicaiile de baze de date n MS Access se pot dezvolta cu
mult uurin datorit generatoarelor de aplicaii (Wizards) care permit proiectarea
vizual a bazelor de date i a formularelor (forms) pentru interfeele grafice. MS Access
este folosit n special pentru aplicaii personale sau pentru mici afaceri .
48
Sugestii metodologice
49
Tema 6 Elemente de algebr relaional
Fia suport 6 Operaii relaionale
1. Selecia condiie (Relaie) operator unar care acioneaz asupra unei relaii i
definete una nou ce conine toate acele tupluri care ndeplinesc o anumit
condiie.
Condiia este specificat este o formul logic ce poate conine: nume de atribute,
constante, operatori logici (AND, OR, NOT), operatori de comparaie (<, >, <=, >=,
=, !=).
Exemplu:
Fie relaia Elevi
Listai toii elevii care au anul naterii mai mare dect 1990.
AnNastere>1990 (Elevi)
Are ca efect afiarea relaiei:
Exemplu:
Fie relaia Clasa
50
3. Produsul cartezian Relaie1 x Relaie2 definete o nou relaie care reprezint
o concatenare a fiecrui tuplu din Relaie 1 cu fiecare tuplu din Relaie 2. Produsul
cartezian este o operaie binar.
Exemplu:
Relaie1 Relaie2 Relaie1 x Relaie2
A B C D E
X1 Y1 Z1 1 1 A B C D E
X2 Y2 Z2 X1 Y1 Z1 1 1
2 2 X1 Y1 Z1 2 2
X3 Y3 Z3 X2 Y2 Z2 1 1
X2 Y2 Z2 2 2
Fiind dou relaii elevi i clase s se listeze elevii i clasa X3 Y3 Z3 1 1
n care acetia sunt nscrii. Se vor specifica: numele, X3 Y3 Z3 2 2
specializarea i forma de nvmnt, precum i numele,
prenumele i iniiala elevului.
NumeClasa, NumeSpecializare, NumeForma(Clase) x NumeElev, InitialaElev, PrenumeElev(Elevi), are ca efect:
Se observ c dac Relaia 1 are nu numr de i tupluri i n atribute iar Relaia 2 are un
numpr de j tupluri i m atribute atunci Relaie1 x Relaie2 va avea (i*j) tupluri i (n+m)
atribute.
4. Reuniunea Relaie1 Relaie2. Dac relaie 1 are i tupluri, iar relaia 2 are j
tupluri atunci reuniunea lor reprezint o relaie cu maxim i+j tupluri obinut prin
concatenarea acestora excluznd tuplurile duble.
Observaie: reuniunea a dou relaii presupune c acestea au aceeai numr de
atribute ale cror domenii coincid. Altfel spus ele sunt compatibile la reuniune.
Uneori cnd se dorete reuniunea a dou relaii este necesar mai nti operaia de
proiecie i eliminarea dublurilor i apoi reuniunea.
Exemplu:
Presupunnd c n baza de date exist dou relaii una care reine clasele de la liceu
teoretic (ClaseTeoretic) i alta care reine clasele de la liceu tehnologic
(ClaseTehnologic) se poate realiza o relaie care s conin toate clasele din liceu.
51
NumeClasa, NumeSpecializare, NumeForma (ClaseTeoretic) NumeClasa, NumeSpecializare,
NumeForma (ClaseTehnologic)
5. Diferen - Relaie1 - Relaie2 definete o relaie care se obine doar din tuplurile
care sunt n prima relaie i nu sunt n a doua. Prin urmare relaiile trebuie s fie
compatibile la reuniune.
Exemplu:
Presupunnd c n baza de date exist relaia AniStudiu care reine anii de studiu (IX-
XII patru pentru liceu zi, IX-XIII cinci pentru liceu seral,I-II doi pentru coala postliceal)
i relaia AniTerminali care reine pentru fiecare nivel de nvmnt anii terminali fcnd
diferena dintre cele dou tabele se pot obine anii intermediari.
R S = R1 - R2 unde:
R1 = x (R)
R2 = x ((R1 x S) R)
X = mulimea atributele lui R care nu exist n S.
8. Uniunea
Aceast operaie permite regsirea informaiei din mai multe relaii corelate.
Compunerea este o operaie binar care are ca rezultat o nou relaie n care fiecare
tuplu este o combinaie a unui tuplu din prima relaie cu un tuplu din a doua relaie.
52
Operaia de uniune este o operaie derivat ea putnd fi simulat printr-o operaie de
produs cartezian, de selecie i de proiecie. n general se construiete un produs
cartezian din care se elimin tupluri prin selecie i atribute prin proiecie.
53
Sugestii metodologice
54
Tema 7 Interogarea bazelor de date. Limbajul SQL
Fia suport 7.1 Concepte generale
Definirea datelor
Identificatorii SQL sunt utilizai pentru a identifica obiecte din baza de date precum:
tabele, coloane din tabele. Denumirea dat unui identificator trebuie s respecte
urmtoarele reguli:
- ncepe ntotdeauna cu o liter
- nu conine spaii libere
- nu poate fi mai lung de 128 de caractere
- n general identificatorul este sugestiv pentru obiectul pe care l reprezint
Tipuri de date SQL: se utilizeaz cinci tipuri de date: caracter, bit, numeric exact,
numeric aproximativ, dat-or, interval.
55
memora banck-uri.
Exemplu:
NumeElev CHAR(15)
NumeElev = Ana se va retine sirul
Ana urmat de 13 blank-uri
Caracter cu lungime Identificator VARCHAR(lungime) Dac irul este declarat cu lungime
variabil variabil i dac se reine un ir mai
scurt atunci se vor memora dect
caracterele introduse.
Exemplu:
NumeElev VARCHAR(15)
Dac se va introduce irul Ana se
vor reine doar cele trei caractere.
Bit Identificator BIT(lungime) Tipul este folosit pentru a reine iruri
Identificator BITVARYING de biti (0 i 1). Analog ca la tipul
(lungime) caracter exist i aici lungime fix
(BIT) i lungime variabil (BIT
VARYING).
Numeric exact id NUMERIC(precizie, scal) Aceste tipuri de date sunt utilizate
id DECIMAL(precizie, scal) pentru a defini numere cu o
id INTEGER reprezentare exact.
id SMALLINT Primele dou tipuri menionate sunt
utilizate pentru a stoca date de tip
zecimal. Scala prestabilit este 0.
Precizia este definit la
implementare.
INTEGER se poate prescurta i INT
i este folosit pentru numere ntregi
mari.
SMALLINT este utilizat pentru
numere ntregi mici.
id numele identificatorului
Exemplu:
Salariu DECIMAL (7,2)
Media NUMERIC (2,2)
Nota SMALLINT
Numeric FLOAT(precizie) Aceste tipuri sunt utilizate pentru a
aproximativ REAL defini numerele reale care au o
DOUBLE PRECISION reprezentare fix. Precizia
controleaz exactitatea mantisei.
Precizia tipurilor REAL i DOUBLE
PRECISION este definit la
implementare.
Dat calendaristic / DATE Tipul DATE este utilizat pentru a
or TIME(precizie_or) [WITH TIME stoca date de tip calendaristic, prin
ZONE]2 utilizarea cmpurilor YEAR,
TIMESTAMP(precizie_or) [WITH MONTH, DAY.
TIME ZONE] Tipul TIME este utilizat pentru
stocarea orelor, prin utilizarea
cmpurilor: HOUR, MINUTE,
SECOND.
Tipul TIMESTAMP este utilizat
pentru stocarea datelor i orelor.
Precizie_or - precizia pentru
cmpul SECOND. Pentru tipul TIME
2
Cu zon orar
56
precizia prestabilit este 0 (secunde
ntregi), iar pentru TIMESTAMP este
6 microsecunde.
Interval INTERVAL cmp_nc TO cmp_sf Acest tip este utilizat pentru a
cmp_singular_data_ora reprezenta perioade de timp. Exist
dou clase de date de tip interval:
an-lun i zi-or.
cmp_nc =YEAR/ MONTH/ HOUR/
MINUTE
cmp_sf = YEAR/ MONTH/ HOUR/
MINUTE / SECOND
cmp_singular_data_ora =
cmp_nc/SECOND
57
Sugestii metodologice
58
Fia suport 7.2 Interogri simple pentru manipularea datelor
unde:
- list_coloane, reprezint una sau mai multe coloane dintr-un table al bazei de
date
- nume_tabel, reprezint numele unui table din baza de date
semnificaia clauzelor specificate:
- SELECT specific coloanele care vor fi luate n considerare la ieire
- FROM specific tabelul sau tabelele din care vor face obiectul comenzii
- WHERE specific dac nregistrrile selectate (rndurile din tabele)
ndeplinesc o anumit condiie
- GROUP BY formeaz grupuri de rnduri cu aceeai valoare a coloanei
- HAVING filtreaz grupurile supuse unei anumite condiii
- ORDER BY - specific dac nregistrrile selectate sunt ordonate dup o
anumit coloan
59
- Dac se dorete regsirea tuturor rndurilor dar doar a coloanelor NumeElev,
PrenumeElevi i CNP se va utiliza:
SELECT NumeElev, PrenumeElevi, CNP
FROM tabElevi;
- Dac se dorete aflarea vrstei unui elev ca diferen dintre anul current i Anul
naterii se va utiliza un camp calculate astfel:
SELECT tabElevi.NumeElev, tabElevi.PrenumeElev, YEAR(date())-
[AnNastere] AS Varsta
FROM tabElevi;
- Dac se dorete afiarea elevilor care au vrsta egal cu 19 ani:
SELECT tabElevi.NumeElev, tabElevi.PrenumeElev, YEAR(date())-
[AnNastere] AS Varsta
FROM tabElevi
WHERE YEAR(date())-[AnNastere] = 19
Comanda INSERT
Comanda are dou forme, prima permite introducerea de nregistrri (rnduri) ntr-un
tabel, cea de-a doua permite copierea mai multor rnduri dintr-unul sau mai multe
tabele ntr-un alt tabel.
unde:
- denumire_tabel este numele tabelului n care se va face inserarea de rnduri
- list_coloane reprezint lista coloanelor supuse indroducerii de date
- list_valori reprezint datele efectiv ce vor fi introduse n tabel n coloanele
specificate
Exemplu: Fie tabelul tabClase ce reine date despre clasele unei coli. Dac se dorete
introducerea unei nregistrri noi se va utiliza comanda:
INSERT INTO tabClase (NumeClasa, Numespecializare, NumeForma,
AnTerminal, IdAnStudiu)
VALUES ('11As','Mate-info', 'seral', '5','27')
Sintaxa pentru a doua form este:
INSERT INTO denumire_tabel [(list_coloane)]
SELECT ..
unde:
- denumire_tabel este numele tabelului n care se va face inserarea de rnduri
- list_coloane reprezint lista coloanelor supuse indroducerii de date
Comanda UPDATE
Permite modificarea coninutului unor nregistrri (nregistrri) existente ntr-un tabel.
Sintaxa comenzii este:
UPDATE denumire_tabel
SET nume_coloan1 = valoare1 [,nume_coloan2 = valoare2.]
[WHERE condiie]
60
Exemplu: Fie tabelul
tabArieCurriculara
tabArieCurriculara ce retine date
IdArie NumeArie SefArie IDInstitutie
despre responsabilii ariilor
1 Tehnologii Popescu Ion 1
curricular dintr-o coal. Dac se
2 Om si societate Popa Ana 1
dorete modificarea sefului ariei
Om si societate se va utilize 3 Limba si Comunicare Iorga Madalina 1
comanda:
Comanda DELETE
61
Fia suport 7.3 Interogri complexe pentru manipularea datelor
Funcii de grup
Conform standardului ISO limbajul SQL pune la dispoziia utilizatorilor cinci funcii de
grup:
COUNT() returneaz numrul de valori dintr-o coloan specificat
SUM() returneaz suma valorilor dintr-o coloan specificat
AVG() returneaz media aritmetic a valorilor dintr-o coloan specificat
MIN() returneaz cea mai mic valoare dintr-o coloan specificat
MAX() returneaz cea mai mare valoare dintr-o coloan specificat
- Aceste funcii opereaz asupra unei singure coloane dintr-un tabel i returneaz o
singur valoare.
- Funciile SUM i AVG opereaz doar asupra coloanelor ce rein date de tip
numeric.
- Funcia count poate fi utilizat n formatul COUNT(*) pentru a numra toate
rndurile unui tabel incluznd null-urile i duplicatele.
- Cu excepia funciei COUNT (*) toate funciile elimin nti null-urile i apoi
returneaz valorile specific.
- Pentru eliminarea duplicatelor, execepie fac funciile MIN i MAX, se va utiliza n
cadrul argumentului funciei cuvntul cheie DISTINCT.
- Funciile de grup pot fi utilizate doar n lista lui SELECT sau n clauza HAVING
(va fi prezentata ulterior).
Exemple:.
Fie tabelul:
tabAngajati
IDAngajat NumeAngajat Salariu Adresa Functia
1 Popa Marin 2500 Bucureti Designer
2 Anca Viorel 3000 Bucureti Programator
3 Marin Ionela 3500 Bucureti Analist
4 Ion Simona 3000 Bucureti Programator
5 Stan Ion 3500 Bucureti Administrator DB
62
Gruparea rezultatelor
Gruparea datelor este utilizat pentru a putea obine nregistrri sumatoare similare cu
totalurile/subtotalurile utilizate n cadrul rapoartelor. Pentru a obine astfel de rezultate
se utilizeaz n cadrul comenzii SELECT clauza GROUP BY, ce are ca efect gruparea
datelor din tabele specificate n cadrul comenzii. Coloanele utilizate n clauz se
numesc coloane de grupare. Dac n cadrul comenzii SELECT se utilizeaz clauza de
grupare atunci rezultatul comenzii va avea o singur valoare pe grup. Coninutul
comanzii SELECT va fi restricionat la:
- Denumiri de coloane
- Funcii de grup
- Constante
- Combinaii ale celor de mai sus.
1. Toate denumirile coloanelor se vor regsi n clauza GROUP BY, excepie doar
dac coloana este utilizat de o funcie de gupare.
2. Dac n comand apare i clauza WHERE (mpreun cu GROUP BY) aceasta
este aplicat prima, ulterior se formeaz grupele din ceea ce a selectat condiia
lui WHERE.
Exemplu:
Fie tabelul
tabAngajati
IDAngajat NumeAngajat Salariu Adresa Functia
1 Popa Marin 2500 Bucureti Designer
2 Anca Viorel 3000 Bucureti Programator
3 Marin Ionela 3500 Bucureti Analist
4 Ion Simona 3000 Bucureti Programator
5 Stan Ion 3500 Bucureti Administrator DB
6 Popescu Paul 2500 Bucureti Designer
7 Ion Ionel 2500 Bucureti Designer
8 Marinescu Silvia 3000 Bucureti Programator
9 Pop Silviu 2500 Bucutreti Designer
63
Query1
NrPersoane Functia TotalSalariu
1 Analist 3500
4 Designer 10000
3 Programator 9000
n cazul n care ne-ar interesa s obinem doar numrul de persoane i bugetul pentru
funciile n care sunt mai mult de 2 angajai, atunci putem utiliza o clauz de restrngere
a gruprii diferit de WHERE. Acest clauz este HAVING. Comanda se ve scrie astfel:
SELECT count(IdAngajat) AS NrPersoane, Functia, sum(Salariu) as TotalSalariu
FROM tabAngajati
GROUP BY Functia
HAVING COUNT(IdAngajat)>1;
Rezultatul aplicrii:
Query1
NrPersoane Functia TotalSalariu
4 Designer 10000
3 Programator 9000
WHERE HAVING
Restrnge rndurile asupra Restrnge grupurile asupra
crora se va aplica selecia crora se va aplica selecia
64
Legtura dintre dou tabele 1-mai muli
Clauza ORDER BY este utilizat pentru a sorta datele din tabelul rezultat. n cazul
de fa datele sunt sortate dup coloana NumeElev.
n cazul n care se dorete realizarea seleciei din trei tabele ntre acestea vor exista
legturi, iar principiul este acelai.
Dac ne intereseaz toate localitile n care fie exist un furnizor sau un client al
Companiei X vom folosi una dintre variantele:
SELECT Localitate SELECT *
FROM tabFurnizori FROM tabFurnizori
UNION UNION CORRESPONDING BY
SELECT Localitate Localitate
FROM tabClienti; SELECT *
FROM tabClienti;
Dac ne intereseaz toate localitile n care fie exist un furnizor dar niciun client al
Companiei X vom folosi una dintre variantele:
SELECT Localitate SELECT *
FROM tabFurnizori FROM tabFurnizori
EXCEPT EXCEPT CORRESPONDING BY
SELECT Localitate Localitate
FROM tabClienti; SELECT *
FROM tabClienti;
Sugestii metodologice
66
Fia suport 7.4 Tranzacii
Proprietile tranzaciilor
Orice tranzacie definit trebuie s dein anumite proprieti i anume.
caracterul atomic: o tranzacie reprezint o unitate indivizibil, ea poate fi executat
n ntregime sau deloc
coeren: o tranzacie trebuie s transforme baza de date dintr-o stare coerent n
alt stare coerent
izolarea: tranzaciile sunt executate independent unele de altele
durabilitatea: efectele unei tranziii ncheiate cu succes sunt nregistrate n baza de
date i nu trebuie pierdute din alte motive.
Exemplu:
S considerm c avem de realizat un sistem informatic pentru gestionarea elevilor
dintr-o coal. La sfritul fiecrui an colar elevii trebuie transferai ntr-o alt clas
conform noului an colar. Aceast operaie poate fi considerat a fi un exemplu de
tranzacie:
n cod de mai sus (scris n limbajul VSBasic) pentru a delimita tranzacia s-au folosit
evenimentele BeginTrans i CommitTrans asociate bazei de date db.
Controlul concurenei
Un alt element care ar putrea afecta n mod negativ baza de date este accesul
concurent la date. Controlul concurenei este procesul prin care se administreaz
operaiile simultane de prelucrare/acces la baza de date, fr ca datele s interfereze
unele cu altele.
Accesul concurent apare n sistemele informatice multiutilizator, cnd mai muli
utilizatori acceseaz datele i cel puin unul dintre ei prelucreaz datele pot aprea
interferene. n acest sens se pot pierde actualizrile fcute de un utilizator (o tranzacie
efectuat de un utilizator poate fi anulat de alt utilizator), se pot pierde date din cauza
dependenelor neefectuate (atunci cnd o tranzacie are acces la rezultatele
intermediare ale altei tranzacii n curs care ulterior este abandonat) sau a anaizei
incoerente (cnd o tranzacie citete mai multe valori din baza de date, iar o alta
actualizeaz o parte din ele n timpul execuiei primei).
Prin urmare este necesar a se serializa i reface tranzaciile astfel nct acestea s nu
interfereze i deci s nu permit alterarea datelor. n acest sens se va face o planificare
astfel nct s se permit executarea de tranzacii n paralel pentru acelea care nu
afecteaz acelai segment din baza de date, iar pentru cele care afecteaz acelai
segmemt s se realizeze o serializare a tranzaciilor astfel nct execuia tranzaciilor s
nu interfereze.
Exist dou tehnici de baz pentru controlul concurenei prin care se permite ca
tranzaciile s fie executate n paralel, cu anumite constrngeri: blocarea i metodele de
marcare a timpului.
Blocarea atunci cnd o tranzacie acceseaz baza de date, un lact poate refuza
accesul la alte tranzacii, pentru a preveni apariia unor rezultate incoerente. Dac o
tranzacie are un lact de citire pentru un articol de date, nseamn c l poate citi dar
nu i prelucra. Dac o tranzacie are un lact de scriere pentru un articol de date,
nseamn c l poate citi i actualiza.
Blocarea tranzaciilor este utilizat astfel:
orice tranzacie care trebuie s acceseze un articol de date trebuie ca, mai nti
s-l blocheze, cernd un lact de citire pentru a avea acces la citire sau un lact
la scriere pentru a avea acces att la citire ct i la scriere.
dac articolul nu este deja blocat de alt tranzacie atunci articolul va fi blocat
prin utilizarea unui lact
68
dac articolul este blocat SGBD-ul stabilete dac cererea este compatibil cu
tipul de lact pe care-l are deja articolul
o tranzacie continu s dein un lact, pn cnd l elibereaz n mod explicit
n timpul execuiei sau pn cnd este terminat. Efectele scrierii vor deveni
vizibile pentru alte tranzaciinumai dup ce lactul de scriere va fi eliberat.
Pentru a garanta serializarea executrii tranzaciilor se utilizeaz un protocol
suplimentar pentru amplasarea operaiilor de blocare i deblocare din cadrul fiecrei
tranziii. Cel mai utilizat i cunoscut protocol este 2PL.
Se spune c o tranzacie urmeaz protocolul de blocare n dou faze (2PL) dac toate
operaiile de blocare predec prima operaie de deblocare din cadrul tranzaciei. Astfel:
Este necesar ca o tranzacie s achiziioneze un lact pentru un anumit articol,
nainte de a opera asupra lui.
O dat ce tranzacia a fost deblocat, nu mai poate achiziiona altele noi
n cadrul utilizrii metodei de blocare pot apare impasuri atunci cnd dou sau mai
multe tranzacii ateapt eliberarea lactelor deinute de ctre articole.
Metodele de marcare a timpului pentru controlul concurenei elimin apariia unor
posibile impasuri. n acest sens SGBD-ul poate crea un identificator unic care indic
timpul relativ de ncepere a unei tranzacii. Acest identificator numit marc de timp poate
fi utilizat pentru ordonarea tranziiilor astfel nct cele cu marc de timp mai mic s
aib prioritate n eventualitatea unui conflict.
Sugestii metodologice
69
Tema 8 Securitatea bazelor de date
Fia suport 8 Securitatea bazelor de date
Securitatea datelor reprezint unul dintre cele mai importante aspecte n lucrul cu
bazele de date. Baza de date reprezint o resurs colectiv esenial care trebuie
protejat att de ameninrile intenionate ct i de cele neintenionate.
Referitor la securitatea bazelor de date trebuie avute n vedere urmtoarele aspecte:
asigurarea n caz de furt-fraud: acestea nu afecteaz neaprat datele, dar pot
provoca neplceri organizaiei
pierderea confidenialitii datelor (se refer la pierderea unor secrete de
importan major) i/sau a caracterului privat (necesitatea de a proteja date
referitoare la anumite persoane)
pierderea integritii bazei de date: apariia unor date care nu sunt valabile sau
sunt greite i care ar putea afecta modul de operare cu sistemul informatic.
pierderea disponibilitii bazei de date se refer la imposibilitatea de a accesa
datele sau sistemul informatic.
Asigurarea securitii datelor are drept scop minimizarea pierderilor cauzate de ctre
evenimente care pot fi anicipate, ntr-o manier eficient care privete att costul ct i
modalitatea de a nu constrnge execesiv utilizatorul sistemului informatic sau al bazei
de date.
Posibile pericole care pot afecta unul dintre cele patru aspectele prezentate mai sus pot
fi:
utilizarea bazei de date de ctre persoane neautorizate / furtul de date sau
programe
corectarea sau copierea neautorizat a datelor
alterarea programelor
politici sau proceduri necorespunztoare
intrarea ilegal a unui hacker
eecul mecanismelor de securitate
alterarea datelor datorit unei ntreruperi de curent
deteriorarea fizic a echipamentelor, ruperea/deterioraea cablurilor / furtul de
echipamente hardware
interferen elecronic/radiaii
virui
Pentru asigurarea securitii i coerenei datelor trebuie identificate tipuri de posibile
pericole i iniiate planuri i msuri adecvate. Aceste msuri pot fi de natur
administrativ sau fizic i cuprind: autorizarea n sistemul informatic, vederilor
utilizatorilor sistemului informatic/bazei de date, copiile de siguran i refacerea bazei
de date cu ajutorul lor, asigurarea integritii bazei de date, criptarea datelor, procedurile
asociate bazei de date.
Autorizarea presupune acordarea unui drept sau a unui privilegiu utilizatorului
sistemului informatic / bazei de date. Autorizarea fiecrui utilizator n cadrul unui sistem
se poate face crend un sistem de autentificare n sistem pe baz de parol creia i se
asociaz i nite privilegii pe care utilizatorul le are asupra sistemului. De exemplu
70
utilizatorilor li se pot crea privilegii care s le permit s acceseze anumite obiecte din
baza de date.
Un alt mecanism care asigur securitatea bazelor de date este vederea. Prin
intermediul vederilor se creaz o relaie dinamic, care nu exist n baza de date,
utiliznd date din mai multe relaii. Ea este rezultatul unei cereri a utilizatorului care
deinea anumite privilegii i confer securitate datelor prin faptul c permite ascunderea
unor poriuni din baza de date fa de anumii utilizatori care nu dein aceleai privilegii.
O msur de siguran n caz de avarie de energie, deteriorarea echipamentelor sau
programelor este copia de siguran. Prin posibilitatea crerii unei copii de siguran i
a unui fiier jurnal (ce conine toate modificrile efectuate asupra bazei de date) pe un
mediu de stocare off-line se permite oricnd refacerea datelor dup orice defeciune.
Meninerea integritii bazei de date are drept rezultat garantarea faptului c datele se
menin valabile i permite astfel obinerea de rezultate corecte.
n situaia n care baza de date conine date foarte importante o posibilitate de precauie
fa de posibile pericole este i criptarea datelor. Prin criptare se obine o codificare a
datelor printr-un algoritm special prin care datele nu pot fi cititte dect dac se cunoate
cheia de decriptare. Criptarea datelor se folosete n special atunci cnd datele trebuie
transmise prin canale de comunicaie (reea local, Internet).
Pe lng aceste metode care asigura securitatea datelor i bazelor de date se mai
utilizeaz i proceduri asociate utilizate mpreun cu mecanismele prezentate.
Un exemplu de procedur asociat ar putea fi crearea unui sistem propriu de parole
(numr de caractere, condiii de crearea a parolelor, termene de schimare a parolelor,
criptarea fiierelor care conin parole etc.) pentru autentificarea n sistem.
De asemenea se poate crea o procedur cu privire la creare copiilor de siguran a
bazelor de date: perioada de timp la care se creaz o copie (zilnic, la un numr de zile,
sptmnal etc.), paii implicai n crearea copiei, personalul responsabil pentru crearea
copiei etc. Un exemplu de procedutr asociat poate fi i refacerea bazei de date dintr-
o copie de siguran.
Pe lng mecanismele bazate pe calculator companiile i definesc i politici/acorduri
administrative privind asigurarea securitii bazelor de date: planuri de securitate i
situaii excepionale, controlul personalului, amplasarea echipamentelor n condiii de
siguran acorduri de ntreinere, control regulat al echipamentelor, instalarea
programelor antivirus i actualizarea acestora, identificarea i contracararea posibilelor
riscuri etc.
Pentru asigurarea securitii atunci cnd se lucreaz n reea i sunt necesare trasmisii
de date utiliznd Internetu-ul se mai pot utiliza i: servere reprezentant, semnturi
digitale, algoritmi de rezumare a mesajelor i semnturilor digitale, certificate
digitale, protocoale de securitate (Secure HTTP).
71
Sugestii metodologice
72
Tema 9 Utilizarea bazelor de date n cadrul reelelor de calculatoare
Fia suport 9 Baze de date distribuite. Concepte generale
PC
site 1
PC PC
site 2 Ree site 3
BD a de BD
PC
PC
site 4
Reea
PC PC
Site1
de PC Site3 DB
PC
Site2
Prelucrare distribuit
73
Administrarea intern a bazelor de date distribuite este pretenioas i n general
dificil, deoarece trebuie asigurat c:
Distribuia este transparent (invizibil i nederanjant) utilizatorii trebuie s
poat s interacioneze cu sistemul ca i cnd ar fi vorba un sistem nedistribuit;
Tranzaciile trebuie s aib i ele o structur transparent (invizibil i
nederanjant). Fiecare tranzacie n parte trebuie desigur s menin integritatea
bazei de date, n ciuda multitudinii de partiii. Pentru aceasta ele se divizeaz de
obicei n subtranzacii, fiecare din acestea prelucrnd doar o singur partiie.
n cadrul acestor baze de date o relaie poate fi mprit ntr-un numr de sub-relaii,
denumite fragmente.
Fragmentele pot fi:
Fragmente orizontale - subseturi de tuple (rnduri) dintr-o relaie (tabel).
Fragmente verticale - subseturi de atribute (coloane) dintr-o relaie (tabel).
Fragmente mixte - un fragment care este fragmentat att orizontal, ct i vertical.
Fragmentele sunt alocate unuia sau mai multor site-uri. Ele pot fi reproduse pentru a
obine disponibilitate i performane mbuntite.
Pentru reproducerea fragmentelor se folosesc trei reguli de corectitudine:
- Caracterul complet: dac o instan a unei relaii R este descompus n
fragmente R1, R2,...Rn, atunci fiecare articol de date care poate fi regsit n
relaia R trebuie s apar n cel puin un fragment.
- Reconstrucie: Trebuie s fie posibil s se defineasc o operaie relaional care
va reconstrui relaia R din fragmente. Aceat regul garanteaz dependenele
funcionale.
74
- Caracterul disjunct: dac un articol de date apare ntr-un fragment atunci nu
trebuie s mai apar i n alt fragment, excepie face fragmentarea vertical
(atributele cheii primare trebuie s fie repetate pentru a permite reconstrucia).
Exist patru strategii de alocare referitoare la amplasarea datelor:
Centralizat o singur baz de date centralizat
Partiionat fragmentele sunt atribuite unui site
Reproducerea complet copierea complet a bazei de date pstrate n cadrul
fiecrui site
Reproducerea selectiv combinaie ntre primele trei.
SGBDD-ul prezint toate funciile standard ale unui SGBD centralizat i are n
plus servicii de comunicaie extinse, un catalog al sistemului extins,
prelucrarea distribuit a interogrilor i servicii de concuren i refacere
extinse. Acest fapt se datoareaz transparenelor ce carecterizeaz SGBDD:
- Transparen la distribuie din care rezult centralizarea
- Transparena tranzaciilor care menine coerena bazei de date globale
- Transparena performanelor prin care sisteul este capabil s trateze eficient
interogrile care se refer la datele din mai multe sit-uti
- Transparena sistemului care permite existena de SGBD-uri diferite .
Sugestii metodologice
76
IV. Fia rezumat
3
zz.ll.aaaa reprezint data la care elevul a demonstrat c a dobndit cunotinele, abilitile i atitudinile vizate prin activitatea respectiv
Competene care trebuie dobndite
Partea inferioar a fiei este conceput pentru a meniona activitile pe care elevul trebuie
s le efectueze n perioada urmtoare ca parte a viitoarelor module. Aceste informaii ar
trebui s permit profesorilor implicai s pregteasc elevul pentru ceea ce va urma.
Resurse necesare
Aici se pot nscrie orice fel de resurse speciale solicitate:manuale tehnice, reete, seturi de
instruciuni i orice fel de fie de lucru care ar putea reprezenta o surs de informare
suplimentar pentru un elev care nu a dobndit competenele cerute.