curs farma anul i informatica
DESCRIPTION
Curs Farma anul I InformaticaTRANSCRIPT
-
CUPRINS
1. INFORMAIA. TEORIA INFORMAIEI. INFORMATICA MEDICAL. ..................... 3 1.1. Noiuni introductive .................................................................................................... 2 1.2. Concepte matematice ale teoriei informaiei ................................................................ 4 1.3. Conceptul de informaie .............................................................................................. 6 1.4. Transmiterea informaiei ............................................................................................. 8
2. DATE SI CUNOSTINTE MEDICALE. FISIERE DE DATE. BAZE DE DATE
MEDICALE. SISTEME DE GESTIUNE A BAZELOR DE DATE (SGBD) ...................... 10
2.1. Date si cunostinte medicale ....................................................................................... 10
2.2. Fiiere de date .......................................................................................................... 12 2.3. Baze de date .............................................................................................................. 13
2.4. Tipuri de baze de date ............................................................................................... 16
2.4.1. Baze de date relaionale ...................................................................................... 16 2.4.2. Baze de date ierarhice ......................................................................................... 17
2.4.3. Baze de date n reea ........................................................................................... 18 2.4.4. Baze de date orientate pe obiect .......................................................................... 19
2.5. Sisteme de gestiune a bazelor de date (SGBD) .......................................................... 20
3. NOIUNI DESPRE LIMBAJUL SQL ............................................................................ 23 3.1. Generaliti ............................................................................................................... 23
3.1.1.Modelul relaional de baze de date ....................................................................... 24 3.1.2. Comenzi SQL ...................................................................................................... 25
3.2. Comenzi de selecie ................................................................................................... 26 3.2.1. Alegerea tipurilor de date. .................................................................................. 27
3.2.2. Comanda SELECT .............................................................................................. 28
3.2.3. Comanda UNION ................................................................................................ 35
3.3. Comenzi de execuie (de manipulare a datelor DML) ................................................ 36 3.3.1. Comanda INSERT ............................................................................................... 36
3.3.2.Comanda UPDATE .............................................................................................. 36
3.3.3 Comanda DELETE .............................................................................................. 37
3.4. Comenzi speciale (data definition language DDL) .................................................... 38
3.4.1.Comanda CREATE TABLE, INDEX, VIEW .......................................................... 38
3.4.2. Comanda ALTER TABLE .................................................................................... 40
3.4.3. Comanda DROP ................................................................................................. 41
3.4.4. Comanda TRUNCATE ........................................................................................ 41
3.4.5. Comanda RENAME ............................................................................................ 42
3.5. Comenzi ale limbajului de control al tranzaciilor (TCL) .......................................... 42 3.5.1. BD tranzacionale ............................................................................................... 43 3.5.2. Controlul tranzaciilor ........................................................................................ 43
3.6. Comenzi ale limbajului de control al datelor (DCL) .................................................. 46
3.6.1. Securitate ............................................................................................................ 46
3.6.2. Drepturi (Privilegii) ............................................................................................ 47
4. SISTEMUL DE GESTIUNE AL BAZELOR DE DATE FOXPRO ............................. 50 4.1. Noiuni introductive .................................................................................................. 50
4.1.1. Ce reprezint FoxPro? ........................................................................................ 50 4.1.2. Cum se lanseaz n execuie FoxPro? ................................................................. 50 4.1.3. Cum pot folosi sistemul FoxPro? ......................................................................... 51
4.1.4. Cteva elemente de limbaj FoxPro ...................................................................... 52
4.2. Crearea structurii tabelelor de date .......................................................................... 53
4.2.1. Comanda CREATE ............................................................................................. 53
-
4.2.2. Utilizarea ferestrei NEW ..................................................................................... 55
4.3. Actualizarea structurii i nregistrrii tabelelor de date ............................................ 56 4.3.1. Cum se deschide i nchide o tabel? .................................................................. 56 4.3.2. Cum se realizeaz modificarea structurii logice a unei tabele? ........................... 58 4.3.3. Cum actualizm nregistrrile unui fiier? .......................................................... 58
4.4. Sortarea i indexarea tabelelor ................................................................................. 61 4.5. Regsirea i vizualizarea datelor............................................................................... 63
4.5.1. Cutarea datelor ntr-un fiier ............................................................................ 63 4.5.2. Vizualizarea nregistrrilor unui fiier de date .................................................... 64
4.6. Proiectarea i generarea rapoartelor ........................................................................ 66 5. DECIZIA MEDICAL ASISTAT DE CALCULATOR............................................... 70
5.1. Introducere ............................................................................................................... 70
5.2. Clasificarea metodelor de diagnostic ........................................................................ 71
5.3. METODE LOGICE ................................................................................................... 72
5.3.1. Baza de cunotine ............................................................................................... 72 5.3.2. Tabele de adevr ................................................................................................. 73
5.3.3. Arbori de decizie ................................................................................................. 73
5.3.4. Prezentarea rezultatelor ..................................................................................... 73
5.3.5. Dezavantajele metodelor logice........................................................................... 74
5.4. Metode statistice. Regula lui Bayes ........................................................................... 74
5.4.1. Aspecte statistice n rationamentul medical ......................................................... 74
5.4.2. Regula lui Bayes ................................................................................................. 75
5.5. SISTEME EXPERT ................................................................................................... 78
5.5.1. Structura unui sistem expert ................................................................................ 78
5.5.2. Descrierea conexiunilor ...................................................................................... 80
5.5.3. Caracteristicile principale ale sistemelor expert.................................................. 81
5.5.4. Sisteme expert medicale ...................................................................................... 84
5.6. Estimarea calitii clasificrii ................................................................................... 84 5.7. Alegerea investigaiilor ............................................................................................. 87 5.8. Optimizarea tratamentului ........................................................................................ 87
6. NOIUNI DE FARMACOCINETIC I FARMACODINAMIE................................... 89 6.1. Generaliti despre farmacocinetic. ......................................................................... 89
6.1.1. Modele mono i bicompartimentate ..................................................................... 90 6.1.2. Reacii derivate ale organismului la medicamente. .............................................. 92 6.1.3.Biodisponibilitatea medicamentelor. .................................................................... 93
6.2. Generaliti despre farmacodinamie. ........................................................................ 93 6.2.1. Interaciunea medicament-receptor. ...................................................................... 96 6.2.2. Teorii privind aciunea medicamentelor .............................................................. 97 6.2.3. Relaii de tip doz-rspuns. ............................................................................... 100 6.2.4. Agoniti, antagoniti. ........................................................................................ 102 6.2.5. Metode de determinare ale parametrilor caracteristici curbelor doza-efect ....... 103
7. MODELAREA I SIMULAREA PROCESELOR BIOLOGICE................................... 108 7.1. Noiuni generale...................................................................................................... 108
7.1.1. Definiii ............................................................................................................. 108 7.1.2. Aplicaii ............................................................................................................ 109 7.1.3. Clasificri ale modelelor ................................................................................... 110 7.1.4. Principii generale de construcie a unui model .................................................. 113
7.2. Modelarea proceselor biochimice ........................................................................... 113
7.3. Modele stochastice .................................................................................................. 114
-
7.3.1. Posibilitati de utilizare a metodelor de simulare in studiul interactiunii ligand-
receptor cu ajutorul calculatoarelor ........................................................................... 114
7.3.2. Principiul simularii interactiunii medicament-receptor . ................................... 115
7.3.3. Prezentarea programului PHARMA-DYN : ....................................................... 115
7.3.4. Analiza Datelor n Farmacocinetic i Farmacodinamie cu Programul TopFit . 117 7.3.5. Concluzii ........................................................................................................... 126
8. STUDIILE QSAR (Quantitative Structure-Activity Relationships) ................................ 127
8.1. Noiuni generale, opinii, contribuii ...................................................................... 127 8.2. Programe de calculator utilizate in studiile QSAR ................................................ 129
9. SISTEME INFORMATICE DE FARMACIE.................................................................. 132
9.1.Introducere................................................................................................................ 132
9.2.Infiintarea farmaciilor ............................................................................................. 133
9.3.Organizarea si functionarea farmaciei..................................................................... 133
9.4. Farmacia de spital .................................................................................................. 134
9.5. Standardizare si protectia datelor .......................................................................... 135
9.5.1. Nomenclatoare ................................................................................................... 136
9.5.2. Protecia bazelor de date .................................................................................... 137 9.6. Exemple de sisteme informatice de farmacie ........................................................ 139
10. GESTIUNEA CANTITATIV-VALORIC A STOCURILOR N FARMACII ......... 145 10.1. Introducere in gestiunea cantitativ-valorica a stocurilor din farmacii................ 145
10.2. Sistemul informatic de gestiune cantitativ-valoric ............................................ 146 10.2.1. Modulul Vnzare .............................................................................................. 146
10.2.2. Modulul Gestiune ............................................................................................. 151
-
2
1. INFORMAIA. TEORIA INFORMAIEI. INFORMATICA MEDICAL.
1.1. Noiuni introductive
Sub "presiunea cercetrii tiinifice" Realitatea se obiectiveaz, fragmentndu-se la
nesfrit n timp ce sub "presiunea tririi " Realitatea se manifest subiectiv, la nivel
fenomenologic. Principala problem care se pune azi este tocmai aceast tunelare a barierei
constituit de nsui conflictul indus de cele dou atitudini legate nemijlocit de actul
cunoaterii: contemplare (atitudine pasiv, fr o intenionalitate evideniat, cu urme
specifice n trire ce nu pot fi n principial comunicate prin limbaj) i cercetare, investigare
(atitudine activ, cu intenionalitate, cu scopul de a gsi ceva definit, principial comunicabil).
Iar aceast extrem de sofisticat ncercare a spiritului uman se desfaoar azi n cadrul
unor discipline legate de tiina Cogniiei, Teoria general a Informaiei, Ortofizica,
Psihologie, Cuantic. In toate cazurile obiectul central este rediscutarea i reformularea
conceptului de INFORMAIE i CAMP INFORMAIONAL. i poate i mai important
pentru omenire este o consecin a acestor studii: proprietile "mentale" ale materiei
anorganice sau organice i duetul MINTE - MATERIE.
Conceptul de Informaie a fost delimitat la studiul naturii n triada Materie- Energie-
Informaie. n ciuda utilizrii aproape abuzive a cuvntului informaie putem afirma c
semnificaia sa nu este pe deplin stabilizat. Numrul mare de sensuri n care acest cuvnt
este folosit sugereaz c ne aflm nc n plin proces de structurare semantic a unei noiuni
relativ noi, nscute n cibernetica de la nceputul acestui secol, i care evoc termeni utilizai
nc din antichitate. De la informaia n sens de tire si pan la informaie n sensul de a pune
n form de organizare i structurare, semnificaia dat la un moment cuvantului informaie
poate fi dedus doar din context.
Definirea unei noiuni se poate face fie pe cale axiomatic i formalizare matematic,
fie printr-o abordare sistemic n care studiul conexiunilor cauzale dintre sisteme i
subsisteme este n msur s contureze din aproape n aproape noua noiune. Prima metod
este util pragmatic i poate precede demersul destinat "ptrunderii nelesurilor" din spatele
cuvintelor.
Astfel, n dezvoltarea tiinelor au aprut tot mai frecvent noiuni i elemente de
algebr boolean ncat s-a ajuns la interferena unor domenii foarte diferite luand fiin
ramurile de studiu i cercetare interdisciplinare, printre care se numr i INFORMATICA
MEDICALA. Fundamentarea teoretic a unor sisteme tehnice a permis analogii cu sisteme
-
3
existente la fiinele vii deoarece schema abstract a sistemului este aceeai. Pe baza acestor
considerente s-a dezvoltat cibernetica, ce a luat natere n 1948, prin cele 2 lucrri
fundamentale Cibernetica sau tiina comenzii i comunicrii la fiine vii i maini de
N.Wiener i Teoria matematic a comunicaiei de Cl.Shannon.
Definiii
Pentru a sublinia rolul central al informaiei, Kolmogorov definete cibernetica drept
tiina modurilor de recepie, pstrare, transformare i utilizare a informaiei de ctre maini,
organisme vii i reuniuni ale lor.
Informatica medical e o tiin interdisciplinar ce se ocup cu studiul aplicaiilor
calculatoarelor n practica i n cercetarea medical i cu studiul generrii, achiziiei, stocrii,
transmiterii, proteciei, prelucrrii i utilizrii informaiei medicale. Dintre aplicaiile
calculatoarelor n domeniul farmaceutic ar fi:
- evidena datelor cu specific farmaceutic i farmacologic
- prelucrarea statistic a datelor
- organizarea activitii farmaciilor n sistemul informatic de spital
- aplicarea aparatului matematic n studiile de cercetare din farmacocinetic i
farmacodinamie
- documentarea asistat de calculator utilizarea reelei Internet cu faciliti de
studiere a jurnalelor i publicaiilor din domeniul farmaceutic
- modelarea i simularea unor procese biochimice ce duc la individualizarea
tratamentului
Calculatorul electronic reprezint o main care accept o serie de instruciuni, sub
forma unui program pe care le poate interpreta i executa n scopul acceptrii i prelucrrii
unor date, fie pentru a obine un plus de informaie, fie pentru controlul altor maini sau
procese.
Principalele metode utilizate n cibernetic sunt:
- abstractizarea (neglijarea naturii sistemului i a aspectelor energetice) ce mparte
sistemul n uniti structurale legate ntre ele ntr-o schem de circulaie a
informaiei (black-box) i uniti funcionale (module) ce cuprind una sau mai
multe uniti structurale, cu funcie bine definit n cadrul schemei.
- modelarea care cuprinde descrierea unor relaii ntre uniti sub form matematic
sau logic, sau fizic.
- simularea prin care se studiaz comportarea posibil a unui sistem cu structur
dat i model acceptat, ntr-un scenariu de condiii impuse.
-
4
1.2. Concepte matematice ale teoriei informaiei
Teoria de baza n acesta direcie a fost structurat de Claude Shannon i pornete
intuitiv de la faptul c, pentru a dobandi informaie trebuie s se ntmple ceva-un proces
fizic, un anume eveniment,etc. Cantitatea de informaie pe care o dobndim n urma faptului
c a avut loc un eveniment este cu att mai mare cu ct probabilitatea ca acel eveniment s
aib loc este mai mica. Altfel spus, dac totul este cunoscut dinainte nu mai dobndim nici o
informaie, iar msura asociat informaiei transmise de producerea unui eveniment este cu
att mai mare, cu ct evenimentul n cauz este mai neateptat. Astfel, pentru a putea defini i
msura informaia se folosesc elemente din teoria probabilitilor.
a). Variabile
Sunt mrimi supuse operaiunii de msurare, fie direct, fie prin intermediul altor
variabile i pot fi:
- deterministe corespund unor mrimi fizice cu valori bine definite, iar prin
msurri repetate vom obine aceleai valori (ex. greutatea unui obiect)
- aleatoare (stochastice, statistice) mrimi ale cror valori se modific prin
repetri ale msurrii, chiar dac condiiile de desfurare ale msurtorilor rman
aceleai (ex. la aruncarea zarului putem obine una din cele ase fee).
b). Experimentul reprezint evoluia unui sistem ctre o stare final i poate fi considerat ca
echivalent al unei operaii de msurare.
c). Evenimentul este rezultatul unui experiment, sau starea final n care ajunge sistemul
(rezultatul msurrii).
De exemplu, dac la efectuarea unui experiment avem un numr total k de evenimente, ele
pot fi notate (xi), i=1,k sau ( x1 x2 . . . xk ).
d). Frecvena absolut ni a evenimentului i, arat de cate ori apare evenimentul i la repetarea
de N ori a experimentului (ex. aruncarea zarului).
e). Frecvena relativ ni/N a evenimentului i raporteaz frecvena absolut a ev. i la numrul
de repetri a experimentului.
Se observ uor c :
-
5
n1 + n2 +... + nk =
k
i
ni1
= N
f). Probabilitate - Dac repetm experimentul de un numr foarte mare de ori, N, vom
observa c raportul care definete frecvena relativ tinde ctre o valoare bine definit, numit
probabilitate a evenimentului i i notat:
pi = lim N
ni
N
Probabilitile au proprietile:
-
k
i
pi1
= 1, adic, ntotdeauna se ntampl unul din cele k evenimente
- pi [0,1]
De exemplu, la aruncarea zarului, sunt posibile 6 evenimente, corespunztoare celor ase fee
ce pot aprea, fiecare cu probabilitatea 1/6.
g). Cmp de evenimente rezultatele brute ale experimentelor se pun sub forma:
x1 x2 ... xk
n1 n2 ... nk
h). Cmp de probabiliti rezultatele prelucrate prin calcularea pentru fiecare eveniment a
probabilitii aparitiei sale:
x1 x2 ... xk
p1 p2 ... pk
Se definesc urmtoarele tipuri particulare de evenimente:
- eveniment sigur evenimentul i pentru care pi=1
- evenimentul imposibil - evenimentul i pentru care pi=0
- evenimente echiprobabile evenimentele i i j pentru care pi=pj, i,j = 1,k
-
6
1.3. Conceptul de informaie
Informaia (dup Shannon) este o noiune cu grad mare de generalitate i nu poate
avea o definiie clasic ci una generat de principala proprietate a ei: INLATURAREA UNEI
NEDETERMINRI incertitudini (de exemplu, la aruncarea zarului avem o nedeterminare
privind care din cele 6 fee va aprea, nainte de a efectua experimentul de aruncare a
zarului).
Informaia nu este nici materie, nici energie, dar nu poate exista n afara materiei
(fiind o nsuire a materiei) iar producerea, transmiterea i prelucrarea ei nu se poate realiza
fr consum de energie.
Informaia exist atata timp cat exist un receptor capabil s-o neleag, valoarea
informaiei fiind diferit pentru diferii receptori.
Pentru a evalua cantitatea de informaie Claude Shannon (1948) a propus o relaie prin
care consider c informaia primit cand se realizeaz un eveniment este cu atat mai mare cu
cat probabilitatea evenimentului este mai mic, iar dac evenimentul era aproape sigur,
informaia primit era aproape nul. Relaia de invers proporionalitate se poate exprima prin
formula:
Ii = log2 pi
1 = - log2 pi
Unitatea de msur pentru informaie este BIT-ul (Binary digIT), adic, cantitatea de
informaie primit prin nlturarea unei nedeterminri de (de exemplu, la aruncare cu banul
cderea unei fee produce o informaie de I = log21/(1/2) = log2 2 = 1 bit.
Dac experimentul se repet de N ori i campul de evenimente cuprinde k posibiliti,
se poate defini o cantitate medie de informaie:
Im = (n1I1+n2I2+...+nkIk) / N, Ij e informaia ev. j i nj e numrul de realizri a ev. j
Dac N Im = -
k
i
pipi1
log notat cu H i numit de Shannon entropie informaional i
reprezint o msur a cantitii medii de informaie generat de un eveniment (simbol) ntr-un
ir de evenimente (mesaj).
Entropia informaional devine maxim cand toate evenimentele sunt echiprobabile.
Dac pi=1/k atunci
-
7
Imax = -
k
i kk1
1log
1 = log2 k
Ca un exemplu, din materia vie, dac considerm un polipeptid format dintr-o succesiune de
100 amino acizi, informaia medie per amino acid este Imax = log2 20 = 4.5 bii/aminoacid, iar
informaia maxim coninut de protein e N.Imax = 100.4.5 = 450 bii.
Informaia (dup Sahleanu) se definete pornind de la observaia c n natur anumite
interaciuni nu pot fi tratate printr-o legtur cauzal clasic, bazat pe o lege de conservare.
Este mai aproape de o viziune neliniar a naturii, pentru care sensibilitatea la condiiile
iniiale i fenomenele de autoorganizare pot duce la discontinuiti de tip tranziii de faz.
Informaia este astfel nlocuit cu legatura de tip informaional ce afecteaza evoluia unui
sistem prin alte mecanisme: declanatoare i amplificatoare de exemplu, i care devin
elemente colaterale n definirea i nelegerea termenului de informaie. Sensul legaturii de tip
informaional poate fi surprins n contextul teoriei generale a sistemelor ierarhizate, n care
stabilitatea ntregului se realizeaza prin cooperarea formativ i informativ a ansamblului de
subsisteme ce au o anumita structur, organizare, sensibilitate. Informabilitatea e
proprietatea unui subsistem (captor) de a reaciona la o variaie energetic - rezonana.
Conceptele specifice ce coopereaza pentru a da adevarata semnifictie legaturii de tip
informaional, extrase din lucrarea lui V. Sahleanu, Eseu de biologie informationala, 1973,
sunt:
- semnalul - purtator de semnificatie ce face legatura dintre "lumea energiei" i "lumea
informaiei"
- semnul - rezultat al unei convenii ce capt semnificaie n baza unor procese educaionale
- codificare - decodificare - informaia este un invariant (virtual) ce se gsete n spatele
varietii de codificare, ea este codat i decodat specific de mai multe ori, n funcie de
suport i mediu de propagare. Ea poate sa se "altereze" (adiie de zgomot) sau s se distrug.
- redundana - exces informaional (prezent pentru a conserva informaia fa de zgomote
sau distorsiuni inerente la codare/decondare).
- traducerea - recodificarea n alt limbaj (n sensul lui Sahleanu, transformatorul convertete
o energie n alta n timp ce traductorul poate declana un proces retina, de exemplu, este
considerat traductor ntr-un sistem ce poate fi declanat de un stimul vizual)
n termeni matematici, dac avem o succesiune de evenimente, ce formeaz un mesaj,
probabilitatea de apariie a unui eveniment e complet independent de evenimentul anterior,
n cazul cand entropia informaional e maxim. In realitate deseori putem prevedea un
-
8
eveniment pe baza evenimentelor anterioare i astfel informaia adus de evenimentul n
cauz este foarte redus sau chiar nul. S-a definit diferena dintre entropia maxim i
entropia informaional ca fiind redondana absolut a unui mesaj iar raportul R = (Imax-
I)/Imax reprezint redondana absolut. n practic, existena redondanei e foarte util pentru
transmiterea informaiei, deoarece sensul unui mesaj nu se pierde chiar dac unele
evenimente din mesaj nu sunt recepionate corect, datorit unor perturbaii ce pot apare n
procesul de transmitere.
1.4. Transmiterea informaiei
Informaia are sens numai dac exist un receptor capabil s-o neleag, dar n general
receptorul se afl la o anumit distan fa de locul unde se produce informaia. Apare astfel
noiunea de sistem de comunicaie. Cel mai simplu are doar 3 blocuri funcionale: sursa,
receptorul i canalul de comunicaie dintre ele. Informaia transmis, numit mesaj, are ca
suport material o mrime fizic ce variaz n timp, numit semnal.
Schema unui sistem de comunicaie arat n felul urmtor:
figura 1.1
Canalul de transmisie se caracterizeaz prin:
- viteza de transmisie msurat n bauds (bit/secund) ce determin capacitatea de
transmitere a canalului
- fiabilitatea transmiterii (n timpul transmiterii semnalul e perturbat de diverse
zgomote ce pot distorsiona semnalul)
- traductori ce codific/decodific semnalul pentru c alfabetul canalului de
transmisie difer de cel al sursei i/sau receptorului.
Un exemplu din sistemul biologic este transmiterea informaiei genetice, proces ce se
realizeaz prin intermediul macromoleculelor de ADN. In cursul replicrii cromozomiale
factorii externi ca agitaia termic, radiaiile cosmice, etc. reprezint zgomote ce pot provoca
-
9
uneori perturbaii caracterizate prin includerea unei baze false n lanul ADN, iar rezultatul
acestor perturbaii l reprezint mutaiile genetice.
-
10
2. DATE SI CUNOSTINTE MEDICALE. FISIERE DE DATE. BAZE DE DATE
MEDICALE. SISTEME DE GESTIUNE A BAZELOR DE DATE (SGBD)
2.1. Date si cunostinte medicale
Informaia medical are un rol esenial n practica medical i farmaceutic i
constituie baza tuturor activitilor de acest gen, de la diagnosticarea i aplicarea unei terapii
pn la cercetarea n aceste domenii.
Att n activitile de rutin ct i n cele de tip decizional medicul i farmacistul are
nevoie de informaii care s-i permit cunoaterea i analizarea strii prezente, ct i
anticiparea i urmrirea efectelor deciziilor sale.
Activitatea uman, n cele mai diverse forme ale sale, a fost ntotdeauna caracterizat
prin entiti faptice exprimate fie sub forma de valori numerice, fie ca observaii sau percepii
ale fiinelor umane. Aceste entiti faptice independente i neevaluate se numesc DATE.
n urma unor procese de transformare a datelor se obin INFORMAIILE care reprezinta
interpretarea datelor n raport cu anumite situaii particulare sau cu inelegerea de ctre
mintea uman n general. Pe baza unor raionamente i experimentri se obin noi
CUNOTINE. Schematic, ceea ce am relatat mai sus se traseaz n figura 2.1.
figura 2.1
Fazele transformrii datelor sunt:
1. culegerea - nregistrarea datelor
2. pregtirea datelor - codificare, conversie, sortare, selectare
3. prelucrarea lor - matematic sau logic
4. memorarea lor - stocarea pe suport extern n vederea refolosirii
5. comunicarea, raportarea - transferul rezultatelor (informaiilor) spre utilizatori.
Tehnologia informaiei se constituie din cicluri autogeneratoare. Producerea
informaiilor susine anumite aciuni umane cu finalitate practic, crendu-se totodat un fond
-
11
informaional, utilizabil pentru generarea de noi informaii i cunotine, reiterndu-se astfel
un nou ciclu.
n activitatea medical, relaia pacient-medic-farmacist st n centrul reprezentrii
ciclului elementar (figura 2.2.)
figura 2.2.
Explozia informaional caracteristic perioadei curente impune renunarea la vechile
practici de culegere, prelucrare, arhivare a informaiilor i insuirea unora noi bazate pe
echipamente electronice de calcul. Organizarea datelor dintr-un sistem ntr-o colecie unic
de date, perfect corelate i inute la zi, la care numai utilizatorii autorizai s aibe acces i care
s permit rspunsuri rapide la diversele interogri, este o prim activitate strict necesar.
Mai trebuiesc fixate bine termenele de raportare, forma acestora, traseele de urmat pentru
fiecare informaie sau dat care intr n sistem, validrile i punctele de filtrare, de control,
suportul cel mai economic de arhivare, etc.
Problema organizrii datelor trebuie s se caracterizeze prin faptul c orice informaie
ce se necesit reinut va fi definit i culeas o singur dat , va fi pregtit, memorat i
actualizat ntr-un singur loc, astfel nct, la momentul cnd ea este necesar diverselor
prelucrri, s fie aceeai ca form, valoare i denumire. Aceast caracteristic a datelor a
condus la cristalizarea unor forme de organizare a coleciilor de date, denumite baze de
date. Ea este o colecie de date referitoare la un domeniu particular, dar suficient de vast
pentru a face obiectul unor tranzacii ntre numeroii i variaii si utilizatori, unii introducnd
date, alii extrgndu-le, ansamblul funcionnd ca o banc.
-
12
2.2. Fiiere de date
Dac ne-am propune s inem evidena pacienilor folosind un calculator, vom nscrie
datele care erau coninute n fia de eviden clasic (pe hrtie) n nregistrri coninute n
fiiere de date, aa cum ne propun figura 2.3 i figura 2.4.
Figura 2.3.
Figura 2.4.
DEFINIIE
Fiier (file) reprezint o colecie de date organizat dup o anumit structur.
Cu ceea ce tim pn acum, ne putem imagina fiierul de date ca fiind un dosar cu
nregistrri (fie de eviden, n accepiunea clasic). Observai c fiecrui pacient i va
corespunde o nregistrare (o fi de eviden) - record. Fiecare nregistrare este format din
cmpuri (rubricile ce trebuiau completate la o fi clasic) - fields. Fiecare cmp are un
nume i o dimensiune (exist rubrici mai ncptoare, ca cele pentru nume, diagnostic i
unele mai nguste, ca cele pentru sex sau greutate).
Datele concrete care se introduc la un moment dat ntr-un anume cmp le vom numi
articole - items (ca de exemplu, POPESCU pentru nume, sau M pentru sex, etc.).
-
13
2.3. Baze de date
CH.W. Bachman e considerat ca inventator al conceptului de BD i afirm ca lumea
bazelor de date s-a nscut odata cu nregistrarea datelor pe band magnetic (anii 50). ntre
timp s-au succedat multe generaii de BD, de la cele ierarhice la cele relaionale, distribuite,
orientate pe prelucrarea de obiecte, baze de date multimedia, etc.
Activitile pentru care se organizeaz bnci de date aparin tuturor sferelor de
activitate: de la BD bibliografice i de documentare statistice, la evidene financiar-contabile
i bancare, la diagnosticare, informare medical, rezervare locuri n staiuni turistice din
ntreaga lume prin ghiee dotate cu terminale i legate ntr-o reea de teletransmisie,
nvmnt, transporturi, etc. Gestiunea documentelor multimedia (n care de exemplu, pe
lng informaiile despre o persoan s avem i o fotografie, amprent, un mic discurs,
melodia preferat), dispersarea datelor teritorial cuplate cu acces rapid i n regim de
confidenialitate, deschid noi i noi perspective de utilizare.
Definiie
Baza de date (database) este o colecie structurat de date ce conine att datele, ct
i mijloacele de a stabili i a menine relaii ntre date; aceste relaii trebuie s
reflecte relaiile dintre entitile reale descrise de date (obiecte fizice, evenimente,
concepte abstracte).
PACIENT
FOAIE
OBSERVAIE
UNITATE MEDICAL
Figura 2.5.
-
14
Deci, o baz de date este mai mult dect o colecie de fiiere, pentru c include, pe
lng acestea, descrierea relaiilor dintre nregistrri, descriere apelat i utilizat pe toat
durata prelucrrii informaiilor.
Se contureaz acum tot mai clar ideea c o baz de date pe calculator nu va fi o
structur rigid (ca o carte de telefon, sau un mers al trenurilor). Ea ne ofer o structur
flexibil prin faptul c putem cuta datele dup diverse criterii i le putem chiar modifica
ordinea. S dm un exemplu, folosind baza de date reprezentat de catalogul cu fie dintr-o
bibliotec, care are un anumit format fix. Deoarece fiecare carte este afiat prin titlul ei sau
prin autor, pentru a gsi o anumit carte din acel catalog, trebuie s cunoatem titlul sau
autorul. Dac nu ne putem aminti cu suficient precizie nici una din aceste informaii,
rezultatul va fi o cutare ntortocheat prin toate fiele catalogului. Dac acest catalog ar fi
fost o baz de date pe calculator, am fi putut cuta nu numai dup nume sau autor, dar i
dup diverse cuvinte-cheie, dup data publicrii, sau dup frnturile de informaie despre
autor pe care ni le amintim.
nseamn c un lucru foarte important este STRUCTURA UNEI BAZE DE DATE:
Element de
structura
Denumire in
englez
Explicaie
nregistare record similarul unei fie clasice (de carte, de pacient, etc.)
cmp field similarul unei rubrici din fia clasic (numele i
prenumele, sex, data nasterii, etc.)
articol item coninutul concret al unui cmp, respectiv al unei
rubrici (POPESCU ALEXANDRU atunci cnd
reprezint coninutul cmpului numele i
prenumele)
Remarcai, v rog, diferena esenial dintre cmp i articol!
Fiecare cmp se va caracteriza prin cateva proprieti:
Proprietate cmp Exemplu
nume camp Nume, Data nasterii, Sex, etc.
-
15
tip camp numeric(intreg, real), caracter, logic, data calendaristica, etc.
dimensiune camp 50 caractere, numar real cu 3 cifre la partea intreaga si 2 cifre la cea
zecimala, etc.
Toate aceste elemente de structur trebuiesc definite la crearea bazei de date.
Credem c devine tot mai evident faptul ca putem vedea bazele de date ca nite
tabele pe care le definim atunci cnd precizm structura i le umplem apoi cu datele
propriu-zise (cu articole sau items concrete) (figura 2.6.)
Nr. reg. Nume Sex Data_nast. Ocupatie Diagnostic Greutatea
Ionescu Adrian M ....... ......... .........
Figura 2.6.
Remarcai c, odat definit structura, nu ne intereseaz chestiuni legate de organizarea
fizic a datelor n fiierele care compun baza de date. De asta se vor ocupa programe speciale.
Noi vom face referire la date prin numele cmpurilor i astfel programele scrise pentru
consultarea i administrarea bazelor de date vor fi independente de configuraia fizic.
Validarea datelor la introducerea lor n baza de date o putem vedea pe mai multe
nivele. Exist o validare primar, care se face implicit prin modul n care a fost precizat
structura: nu se va putea introduce caractere alfabetice ntr-un cmp numeric, aa cum, dac
introducem cifre ntr-un cmp de tip caracter, ele nu vor avea nici un fel de semnificaie
valoric (nu se vor putea face operaii matematice cu ele). Pe al doilea nivel de validare
exist posibilitatea precizrii unor anumite valori sau intervale de valori pe care le pot lua
articolele din cmpuri: M i F pentru cmpul sex, valori pozitive i mai mici dect 2.5
pentru cmpul nalime, etc. Poate exist i un al treilea nivel de validare, n care se pot lua n
-
16
considerare criterii mai complexe, care s in cont de eventualele relaii ntre cmpuri i
nregistrri.
La culegerea datelor trebuie neaprat s fie deja stabilit structura fiierelor i
criteriile de validare, care trebuie s in seama de alctuirea fiei de eviden clasic (cu ct
discrepanele de organizare sunt mai substaniale, cu att mai mari vor fi ansele de eroare la
introducerea datelor).
Pentru compactarea datelor din fiiere se pot folosi codificri.
Este util ca atunci cnd v propunei s creai o baz de date n care nu dvs. vei
nregistra datele, s avei n vedere i instruirea personalului care va face aceast introducere.
2.4. Tipuri de baze de date
Putem clasifica bazele de date astfel:
a) Dup distribuia datelor:
a1) BD locale - toate fiierele care compun baza de date se gsesc pe un
acelai sistem de calcul
a2) BD distribuite - fiierele care compun baza de date sunt distribuite pe mai
multe sisteme de calcul
b) Dup structur:
b1) BD relaionale
b2) BD ierarhice
b3) BD n reea
b4) BD orientate pe obiect
2.4.1. Baze de date relaionale
Acestea sunt cele mai utilizate baze de date, pentru ca sunt uor de neles i de
manevrat. Structura lor logic este de tip tablou cu relaii ntre linii i coloane. Ne imaginm
c baza de date din figura 2.7. conine informaii privind pacieni purttori ai unei maladii
ereditare, motiv pentru care s-au luat n observaie i descendenii acestora.
-
17
Figura 2.7.
Cutarea n baza de date se face prin comparaie ntre criteriile de cutare i datele
propriu-zise, valoarea de adevarat/fals, obinut ca rezultat, conducnd la crearea unor
nregistrri virtuale, care formeaz apoi tabele virtuale.
Aceste criterii de cautare se stabilesc de ctre utilizator, iar modificrile n relaiile
logice dintre cmpurile i nregistrrile bazei de date se definesc i se modific cu un efort
minim. Bazele de date relaionale sunt foarte flexibile i uor expandabile.
2.4.2. Baze de date ierarhice
Diagramele unor asemenea baze de date sunt arborescente, adic fiecare element este
subordonat unui singur element de pe nivelul precedent al bazei de date i numai unuia.
Dependena unui segment de alte segmente de date de nivel superior se exprim printr-un
punctator (adres), ceea ce conduce la o economie considerabil de spaiu i se simplific
regsirea informaiilor de baz.
Figura 2.8 (baza de date propriu-zisa) i figura 2.9 (arborii legturilor dintre
segmente) ilustreaz legturile dintre spital i foile de observaie ntr-o reprezentare ierarhic.
Prin aceast organizare eficient i la obiect, timpul de prelucrare se scurteaz
substanial. Pentru volume mari de date i prelucrri intense, avantajele oferite sunt ns
determinante.
-
18
Nr. foaie Nr.arhiv Data foaie Secia Spitalul
1245 23 03.05.92 ATI Judettean
3476 567 05.09.93 Chirurgie Municipal
7654 223 02.02.94 Cardiologie Judetean
2376 432 11.11.95 Chirurgie Municipal
7823 11 03.01.96 Cardiologie Judetean
Figura 2.8
Figura 2.9.
2.4.3. Baze de date n reea
Bazele de date n reea sunt asemntoare cu cele ierarhice, doar c un copil
(FOAIA DE OBSERVAIE n exemplul de mai sus) poate avea mai mult dect un singur
"parinte" (SPITALUL - n acelasi exemplu) figura 2.10.
Figura 2.10.
Baze de date multimedia
Conceptul tradiional de multimedia se refer la capacitatea noilor suporturi de stocare
a informaiei de natur divers: sunet, imagine, text. Codificarea numeric care reunete
reprezentarea acestor date simplific manevrarea lor pe echipamente i dispozitive legate de
-
19
calculatoare utilizate local sau n reea. Reprezentarea sunetelor i imaginilor n culori, a
secvenelor animate, sonorizate,
solicit capaciti mari de memorie. Aplicaiile i documentele multimedia se gsesc pe
suporturi CD-ROM, CD-PHOTO sau alte tipuri de CD. Gestiunea documentelor multimedia,
avnd n vedere att stocarea ct i actualizarea, se soluioneaz prin bazele de date
multimedia (BDMM). Cteva exemple de aplicaii sunt: Fetch, Image Base-Mac, Media
Rext-Windows, Taurus-Windows.
2.4.4. Baze de date orientate pe obiect
Termenul programare orientata pe obiecte (OOP) apare n diferite domenii ca:
limbaje de programare, baze de date, baze de cunotine, inteligen artificial. Scopul acestor
BD e de a separa reprezentarea i administrarea datelor de programele utilizator (care
prelucreaza aceste date) i de a permite o utilizare consistent a datelor de ctre mai multe
programe utilizator, astfel nct programele s devin independente de reprezentarea intern a
datelor.
Obiectele structurate complex pot fi depuse integral n baza de date. Ele nu trebuiesc
descompuse n pri unitare plane, pentru a fi recompuse ulterior de programul utilizator, ele
formeaza clase i subclase iar proprietile lor sunt de motenire i agregare.
-
20
2.5. Sisteme de gestiune a bazelor de date (SGBD)
DEFINIIE
Sistem de Gestiune a Bazelor de Date - SGBD (DBMS - DataBase Management
System) reprezint un set de unelte soft corelate ce au ca scop construcia
unei baze de date i apoi accesul la aceasta; deasemena, ele controleaz
securitatea i integritatea datelor.
Aceste unelte soft incorporeaza suplimentar si:
limbaje specializate pentru descrierea i manipularea datelor
(eventual) un sistem de dicionare de date
Un SGBD are 3 functii de baza:
functia de descriere
functia de manipulare
functia de utilizare
FUNCTIA DE DESCRIERE
Functia de descriere permite descrierea structurii datelor si a relatiilor dintre acestea.
Totodata, se definesc si conditiile de acces la informatiile continute in baza de date.
Descrierea structurii se realizeaza cu ajutorul unui limbaj de descriere a datelor (LDD)
propriu fiecarui sistem de gestiune.
FUNCTIA DE MANIPULARE
Functia de manipulare permite efectuarea urmatoarelor operatii: crearea, inserarea,
suprimarea sau actualizarea unor inregistrari definite de utilizator; faciliteaza cautarea,
sortarea si editarea totala sau partiala a unor inregistrari corespunzatoare rezultatului unei
intrebari formulate in acest limbaj.
Limbajele de manipulare a bazelor de date (LMD) pot fi grupate in 2 mari categorii:
limbaje autonome - sunt de sine statatoare, in cadrul lor comenzile de
manipulare reprezinta chiar functii referitaore la utilizarea datelor.
limbaje care au nevoie de limbaj gazda - ofera doar facilitatile de
structurare si cautare, celelalte operatii legate de manevrarea fisierelor si
-
21
de prelucrare a datelor fiind realizate cu ajutorul unor limbaje de nivel inalt
universale (COBOL, FORTRAN, etc.).
FUNCTIA DE UTILIZARE
Functia de utilizare permite comunicarea intre utilizator si baza de date (sub aspectul
asigurarii acelor mijloace si servicii care il avantajeaza cel mai mult pe utilizator).
Din punct de vedere al functiei de utilizare, utilizatorii pot fi de mai multe categorii:
utilizatori liberi sau conversationali, care au la dispozitie limbaje de interogare
ntr-o forma foarte apropiata de vorbirea curenta si formeaza grupa utilizatorilor
asa-zisi nespecialisti. Acestia folosesc, de regul, display-ul, ntrebarile sunt pre-
stabilite, nu cunosc nici structura nici modul de lucru cu baza de date si se rezuma
la apelarea unor proceduri sau programe corespunzatoare anumitor aplicatii.
utilizatorii parametrici fac uz, de regul, de limbajele de manipulare (n special
pentru interogare) utilizand proceduri prestabilite. Ei au cunostinte de programare
si cunosc atat structura bazei de date cat si problemele sistemului de operare, ceea
ce le permite sa obtina avantaje maxime, n comparatie cu prelucrarea fisierelor
clasice.
administratorul bazei de date este un utilizator special, care raspunde de toate
activitatile si operatiile referitoare la baza de date pe care o gestioneaza, inclusiv
performantele acesteia. El defineste obiectivele sistemului, ajuta la definirea
cerintelor utilizatorilor, defineste structura virtuala si mparte drepturile de acces
ale utilizatorilor, stabileste procedurile de validare a datelor, elaboreaza conceptia
de protectie a datelor si evalueaza performantele sistemului. Administratorul ras-
punde de alegerea si implementarea SGBD-ului, asigura incarcarea bazei de date,
defineste strategia de lucru si distribuie documentatia tuturor utilizatorilor.
Dintre cele mai utilizate SGBD-uri, amintim:
FoxPro
Access
Oracle
Modelul relational de reprezentare si regasire a datelor. Caracteristicile SGBD-urilor
relationale
-
22
Exist 4 familii mari de limbaje relaionale:
a) limbaje bazate pe algebra relaional - utilizeaz o serie de operatori algebrici
relaionali (permutare, proiecie, restricie, selecie, mparire, reuniune, intersecie, diferen,
concatenare etc.)
Limbajul algebric relaional este un limbaj procedural complet, dar dificil pentru
necunoscatori. El se bazeaz pe utilizarea unui ansamblu de operatori cu ajutorul crora se
acioneaz asupra uneia sau mai multor relaii din cadrul unei baze de date relaionale, drept
rezultat obtinndu-se o nou relaie.
b) limbaje ce utilizeaz o serie de simboluri relaionale - cu ajutorul lor se definesc
calcule relaionale: exist, i, oricare, nu, = egal, diferit, mai mare, mai mic, .
punct
c) limbaje orientate pe transformri - constituie o clas de limbaje neprocedurale
care, cu ajutorul relaiilor transform datele de intrare n ieirea dorit de utilizator. Aceste
limbaje (SEQUEL, SQL ) produc structuri uor de neles i de manipulat n termeni practici:
ce trebuie obinut, pornind de la ce este cunoscut (descriu doar modul n care datele sunt
organizate i pot fi regsite).
SEQUEL - Structured English QUEry Language
SQL - Structured Query Language
Caracteristici:
limbaj gazd
d) limbaje relaionale de tip grafic - modul de lucru: utilizatorul completeaza o serie
de raspunsuri, pe un exemplu, prin care sistemul "ghiceste" ce trebuie facut si genereaza
instructiuni corespunzatoare ale limbajului.
QBE (Query - by - Example) al firmei IBM
RQBE (Relational Query By Example) - Foxpro
PARADOX al firmei Borland
-
23
3. NOIUNI DESPRE LIMBAJUL SQL
3.1. Generaliti
Limbajul SQL (Structured Query Language-Limbaj de interogare structurat) specializat
n gestionarea bazelor de date a fost implementat n toate bazele de date moderne ca soluie la
creterea performanelor i eficienei n programarea BD. Limbajul SQL este neprocedural i
specific ce informaii doreti s obii, nu modul de-a le obine. Comenzile SQL sunt foarte
apropiate de limbajul natural din limba englez pentru a fi uor de reinut i utilizat.
Bazele de date ce lucreaz cu SQL conin un interpretor SQL care analizeaz sintactic
toate comenzile date, le traduce n aciuni specifice bazei de date i le lanseaz n execuie.
Sistemele de prelucrare a datelor presupun stocarea, prelucrarea i regsirea informaiilor,
toate acestea fiind realizate cu ajutorul componentelor SQL. Structura sistemului SQL Server,
spre exemplu, conine:
- baze de date stocate n fiiere fizice, cu extensia .MDF
- tabele ce reprezint mulimi de informaii nrudite i sunt stocate n cadrul unei BD (n
sistemele mai vechi de baze de date, la o tabel corespunde un fiier din BD).
- Coloanele tabelei sunt elemente individuale de informaie i sunt denumite cmpuri
- Liniile tabelei reprezint de fapt nregistrrile tabelei.
In cadrul modelului relaional implementat n Microsoft SQL Server liniile unei tabele
a bazei de date nu sunt n mod normal ordonate, excepie fcnd cazul n care a fost creat un
index grupat pentru tabela respectiv. Dup crearea unui index grupat pentru o tabel, liniile
sunt pstrate n ordine cresctoare, dup una sau mai multe coloane folosite la crearea
indexului. Modelul relaional original impunea ca fiecare linie s fie identificat unic de cel
puin o coloan a tabelei, numit cheie unic. SQL Server nu impune asigurarea unicitaii
liniilor din tabele dar dac se dorete se poate impune prin aplicarea unor restrngeri asupra
tabelelor. In modelul relaional al bazelor de date, coloana sau mulimea de coloane care
identific n mod unic liniile dintr-o tabel se numete cheie. O cheie care identific n mod
unic liniile unei tabele se numete cheie primar (PRIMARY KEY), iar dac ntr-o alt
tabel se afl o coloan care reprezint o cheie primar n prima tabel, coloana din cealalt
tabel se numete cheie strain (FOREIGN KEY pentru ca face referire la o alt tabel i e
folosit doar pentru a permite legtura ntre liniile tabelelor). Orice coloan dintr-un tabel
poate fi stabilit drept cheie primar atta timp ct respect condiiile:
- dou linii nu pot avea aceeai valoare a cheii primare
-
24
- fiecare linie trebuie s aiba o valoare a cheii primare (coloana nu poate admite valori
nule, de tip NULL)
- coloana care conine valorile cheilor primare nu poate fi niciodat modificat sau
tears
- valorile cheilor primare nu pot fi niciodat refolosite (dac o linie e tears din tabel,
cheia ei primar nu poate fi atribuit altor linii).
3.1.1.Modelul relaional de baze de date
Bazele de date relaionale reprezint colecii de relaii sau de tabele bidimensionale
(ca n figura 3.1).
Un model relaional de baze de date cuprinde trei componente principale:
- structura datelor realizat prin definirea unor domenii i a relaiilor ntre ele
- integritatea datelor realizat prin impunerea unor restricii
- prelucrarea datelor cu ajutorul operaiilor din algebra relaionala sau calculul relaional.
Modelul relaional se bazeaz pe noiunea matematic de relaie, aa cum este definit
n teoria mulimilor, ca o submulime a produsului cartezian a unor mulimi finite numite
domenii.
Algebra relaional const ntr-o colecie de operatori ce au ca operanzi relaii.
Rezultatul aplicrii unui operator la una sau doua relaii este tot o relaie. Operanzii algebrei
relaionale sunt fie relaii constante, fie variabile ce reprezint relaii ntre un numr dat de
domenii. Cererile din algebra relaionala pot fi exprimate prin cinci operaii asupra relaiilor
de baz ca: reuniunea notat cu , diferena notat cu, produsul cartezian notat ,
proiecia , i seleia sau restricia. Operatorii pot fi cei de comparare , , , sau cei logici
(si), (sau), (non).
In continuare sunt prezentate sintaxele i explicaiile pentru cele mai importante comenzi
SQL, mprite pe trei tipuri de categorii de comenzi: de selecie, execuie i speciale.
-
25
Baza de date
Codf denmed data intrarii
101Aspirin 11-2003
101Ospamox 12-2003
101Amoxi 12-2003
405 Ospen 10-2003
GRATUITE
Codf den adresa nr.ang
101 FARM Victoriei 23
706 BOSCU Bredic. 7 405 VLAD Libertatii 3
909 EMSSI Lipovei 10
FARMACII
Codf nume prenume funct
101 ALBU IOAN farm 405 VLAD ANDREI lab.
706 BACU DAN info.
905 MARIN ILIE farm
FARMACISTI
figura 3.1
3.1.2. Comenzi SQL
Comenzile SQL nu sunt case-sensitive, se pot scrie pe mai multe rnduri, cu condiia de
a nu scinda cuvinte cheie, clauzele se scriu de obicei pe linii separate. Se pot folosi oricte
spaii i indentri dorim. Cuvintele cheie se scriu n general cu majuscule, toate celelalte
cuvinte (nume de tabel, coloane, etc.) se scriu cu liter mic. Rndurile se numeroteaz
automat i se ncarc ntr-un buffer, iar fiecare comand se termin cu o semicoloan ;
(figura 3.2)
Comanda SQL Explicaie
SELECT Interogarea BD
INSERT
UPDATE
DELETE
Limbaj de manipulare a datelor
Data manipulation language (DML)
CREATE
ALTER
DROP
RENAME
TRUNCATE
Limbaj de definire a datelor
Data definition language (DDL)
COMMIT
ROLLBACK
SAVEPOINT
Limbaj de control al tranzaciilor
Transaction control language (TCL)
-
26
GRANT
REVOKE
Limbaj de control al datelor
Data control language (DCL)
Figura 3.2
3.2. Comenzi de selecie
Comenzile de selecie nu sunt executate direct de ctre baza de date. Dup cum i spune
i denumirea, comenzile de selecie vor realiza selectarea mai multor nregistrri dintr-o baz
de date, dup unul sau mai multe criterii (de exemplu, dorim s aflm informaii referitoare la
farmaciile din judeul Timi care elibereaz reete gratuite). In acest scop se definete o
colecie de nregistrri n cadrul bazei de date, ca un tabel, numit recordset.
Se dau ca exemplu urmtoarele tabele:
FARMACII
Denumire cmp Tip cmp Dimensiune cmp
CODF (codul farmaciei) Intreg 5
DEN (denumirea farmaciei) Text 20
ADRESA Text 30
TEL (numarul de telefon) Intreg 6
NrAng (numarul personalului) Intreg 2
FARMACISTI
Denumire camp Tip camp Dimensiune camp
CODF (codul farmaciei) Intreg 5
NUME (numele angajatului) Text 20
PREN (prenumele angajatului) Text 20
SEX (masculin/feminin) Caracter 1
FUNCTIE (functia angajatului) Caracter 10
SALAR (venitul lunar) Currency 10
TEL (numarul de telefon) Intreg 6
-
27
GRATUITE
Denumire camp Tip camp Dimensiune camp
CODF (codul farmaciei) Intreg 5
CodMed (codul medicamentului) Intreg 7
MED(denumirea medicamentului) Text 20
Data_Intr (data intrarii) Date 8
BUC (nr. Bucati) Intreg 3
Din cte se observ, toate cele trei tabele (fiiere) au primul cmp comun, tocmai
pentru a putea realiza legtura dintre ele n vederea obinerii unor informaii suplimentare
care se gsesc ntr-un tabel i fac referire la o nregistrare dintr-un alt tabel (de exemplu,
dorim s gsim denumirile i numerele de telefon ale farmaciilor care distribuie gratuit
Ospamox).
Inainte de a da sintaxele celor doua comenzi, SELECT i UNION, sunt descrise cteva
din tipurile de date cu care lucreaz SQL.
3.2.1. Alegerea tipurilor de date.
Tipul de date este primul atribut ce se definete pentru un cmp (coloan a tabelei) i el
determin tipul informaiilor ce se stocheaz n coloana respectiv. Specificarea lui se face
printr-un cuvnt cheie (cu sau fr parametri). Astfel putem avea urmtoarele tipuri (cele mai
utilizate figura 3.3):
Tip de date Explicaie
INT sau INTEGER Numere intregi cu sau fara semn
REAL Numere zecimale (si negative) cu precizie de 7 cifre
NUMERIC Permite stocarea exacta a numerelor cu precizie data
CHAR Simboluri, caractere
DATETIME Combinatii de data si ora
BIT Tip logic, permite introducerea unei singure valori: 0 sau 1
TEXT Volume mari de date tip caracter
-
28
IMAGE Imagini, fotografii
Figura 3.3
La acestea se mai adaug tipurile de date definite de utilizator.
3.2.2. Comanda SELECT
Aceast comand poate fi considerat ca un filtru (figura 3.4) aplicat tabelelor dintr-o
baz de date fiindc cu ajutorul ei BD este restrns pn la coloanele i liniile care vor fi
rezultate dup interogare.
figura 3.4
Sintaxa minimal este:
SELECT FROM
[WHERE ]
[GROUP BY ]
[HAVING ]
[ORDER BY ]
enumer numele tabelelor de date asupra crora facem interogarea
specific tipurile de seleie, cele standard fiind ALL (implicite), pentru a selecta
toate nregistrrile care ndeplinesc criteriul de selecie, iar DISTINCT, pentru a omite
nregistrrile duplicate relativ la cmpurile din (separate prin virgul).
Pentru a selecta toate cmpurile dintr-un tabel se poate introduce caracterul *.
In figura 3.5 este reprezentat schematic rezultatul aplicrii unei comenzi SELECT.
-
29
figura 3.5
Exemple:
SELECT * FROM farmacii;
SELECT ALL codf,codmed,data_intr FROM gratuite;
SELECT DISTINCT salar FROM farmacisti;
SELECT farmacii.codf, den, adresa, nume, prenume, functie, salar FROM farmacii,
farmacisti;
Se observ c s-a specificat tabela din care s se extrag cmpul codf, iar ntre
denumirea tabelei i a cmpului s-a pus punct . Rezultatul va fi o colecie de nregistrri
format din combinarea tuturor nregistrrilor din tabelul farmacii cu cele din tabelul
farmacisti. Pentru a obine un rezultat corect trebuie s dm legatur dintre cele dou
tabele, prin cmpul comun codf, legtura realizat prin opiunea WHERE
.
stabilete condiia (condiiile)pe care trebuiesc s le ndeplineasc liniile
(nregistrrile) tabelei pentru a fi incluse n mulimea rezultat, condiii ce se refer att la
legturile dintre tabele ct i la coloanele tabelelor. Aceste criterii pot fi de legatur i de
condiie.
a). criteriile de legatur se scriu sub forma:
camp1 operator _comparare camp2
SQL> SELECT med
FROM gratuite;
CCoommaannddaa SSQQLL
BBDD
med ____________ Ospen Ospamox Oxacilina
RReezzuullttaatt
-
30
Operatorii de comparare pot fi:
Simbol Semnificatie
= Egal
!= Diferit
Diferit
< Mai mic
> Mai mare
= Mai mare sau egal
LIKE Egal cu un sablon
Criteriile de legatur se pot conecta prin operatorii logici: AND, NOT, OR, grupai n
paranteze rotunde.
Operator Semnificaie
AND Returneaz TRUE dac ambele condiii sunt adevrate
OR Returneaz TRUE dac oricare din condiii este adevrat
NOT Returneaz TRUE dac condiia este fals
Precedena operatorilor:
- operatorii de comparaie i speciali
- NOT
- AND
- OR
b). criteriile de condiie se aplic asupra unei coloane sub forma:
camp operator_comparare expresie
Operatorii de comparare sunt cei din tabelul anterior, la care se adaug cei doi operatori
BETWEEN (rezultatul va fi cuprins ntre dou valori date i desprite de AND) i IN
(rezultatul se va gsi ntr-o list de valori enumerate, ntre paranteze rotunde).
-
31
Exemple:
SELECT farmacii.codf, farmacii.den, farmacii.adresa, farmacisti.nume, farmacisti.prenume,
farmacisti.salar FROM Farmacii, Farmacisti WHERE (farmacii.codf = farmacisti.codf) AND
(farmacisti.salar>=5000000);
SELECT codmed, den, data_intr, buc FROM gratuite WHERE (den LIKE Ospamox OR
den LIKE Paduden) AND buc BETWEEN 200 AND 1000;
3.2.2.1. Alias (sinonime)
Sinonimele sunt utile dac numele unei tabele sau cmpuri sunt prea lungi sau dac n
tabele diferite exist cmpuri cu acelai nume.
Redenumirea (definirea aliasului) se face cu clauza AS, astfel:
expresie AS sinonim
Observatie:
Sinonimele devin obligatorii dac n lista de cmpuri avem expresii sau apelm funcii!
Exemple:
SELECT SUM(buc) AS sum, COUNT (gratuite.codmed) AS cm FROM gratuite WHERE
(den LIKE Ospamox);
SELECT farmacii.*, f1.nume + + f1.prenume AS farm FROM farmacii, farmacisti AS f1
WHERE (farmacii.codf = f1.codf) AND (f1.salar
-
32
ordinea validarii expresiilor e de la 1 la n, iar clauza ASC e implicita.
Exemple:
SELECT nume, prenume, salar FROM farmacisti ORDER BY salar DESC, nume;
SELECT f.den, f.adresa, f1.nume + f1.prenume AS pers FROM farmacii AS f, farmacisti
AS f1 WHERE (f.codf = f1.codf) AND (f1.functie LIKE rezident) ORDER BY f1.salar,
pers;
3.2.2.3. Gruparea inregistrrilor
Pentru a aplica funciile SQL unor mulimi de nregistrri trebuie mai nti s le grupm
cu ajutorul clauzei:
GROUP BY
Aceast clauz poate combina ntr-o singur nregistrare toate nregistrrile cu o
aceeai valoare pentru cmpul (coloana) de grupare iar recordsetul rezultat are un numr de
linii egal cu numrul distinct de valori ale coloanei respective. Clauza poate fi combinat cu
clauza:
HAVING
Observatie:
Aceast clauz este asemntoare clauzei WHERE pentru c stabilete criteriile de
legtur ntre tabele i criteriile de ndeplinire a condiiei pentru nregistrri. Clauza WHERE
filtreaz nainte ca datele s fie grupate, iar clauza HAVING filtreaza dup ce datele sunt
grupate. Diferena este important: liniile eliminate de o clauza WHERE nu vor fi incluse n
grup. Aceasta poate schimba valorile calculate, ceea ce poate afecta grupurile ce sunt filtrate,
bazndu-se pe utilizarea valorilor respective n clauza HAVING.
GROUP BY se deosebete de ORDER BY, care, dei ordoneaz la rndul su liniile
(nregistrrile) nu elimin valorile care se repet. In SELECT cu clauza GROUP BY acestea
pot fi eliminate prin aplicarea funciilor din tabelul urmtor:
-
33
Funcie Operaie efectuat
AVG Media aritmetica
SUM Suma elementelor
MIN Valoarea minima
MAX Valoarea maxima
COUNT Numara elementele
Observaie:
E indicat s se foloseasc clauza HAVING numai n asociere cu clauza GROUP BY!
E bine s nu se foloseasc doar clauza GROUP BY pentru sortarea datelor, ci s se
specifice mpreun cu ORDER BY.
Exemple:
SELECT nume, SUM(salar) AS totsal, AVG(salar) AS medsal FROM farmacisti GROUP
BY nume;
SELECT codf, COUNT(codmed) AS nrmed FROM gratuite GROUP BY codf;
SELECT f.codf, f.den, f.adresa, g.codmed, g.den, SUM(g.buc) AS nrbuc FROM farmacii AS
f, gratuite AS g GROUP BY f.codf, g.codf, g.codmed, g.den HAVING f.codf=g.codf AND
g.buc>100;
3.2.2.4.Clauze de legtur
Alte modaliti de selecie din mai multe tabele sunt oferite de clauza JOIN cu cele
trei forme : INNER JOIN, LEFT JOIN, RIGHT JOIN, astfel:
FROM tabel1 [INNER|LEFT|RIGHT] JOIN tabel2 ON tabel1.camp1
operator_comparare tabel2.camp2
INNER JOIN adaug nregistrrile care satisfac exact criteriul de comparare dintre cmpuri.
LEFT/RIGHT JOIN numite i OUTER JOIN include toate nregistrrile din tabel1 din partea
stnga/dreapta a expresiei de legatur, chiar dac nu satisface criteriul de comparare. Pentru
-
34
nregistrrile care nu respect criteriul de comparare valorile cmpurilor aparinnd tabelului
tabel2 se completeaz cu valori nule (NULL).
Observaie:
Intr-o comand de selecie prin clauza JOIN cmpurile de tip memo sau obiecte OLE
genereaz erori!
Legtura prin INNER JOIN se poate face prin sintaxele urmtoare:
SELECT FROM tabel1 INNER JOIN tabel2 ON tabel1.camp1
operator_comparare tabel2.camp1 [AND ON tabel1.camp2 operator_comparare
tabel2.camp2 OR ON tabel1.camp3 operator_comparare tabel2.camp3]
SELECT FROM tabel1 INNER JOIN (tabel2 INNER JOIN [(]tabel3
[INNER JOIN [)] tabeln [INNER JOIN)] ON tabel3.camp3 operator_comparare
tabeln.campn)] ON tabel2.camp2 operator_comparare tabel3.camp3) ON tabel1.camp1
operator_comparare tabel2.camp2
Exemple:
SELECT nume, prenume, functie, farmacii.den, gratuite.codmed, gratuite.med FROM
farmacisti INNER JOIN (farmacii INNER JOIN gratuite ON farmacii.codf=gratuite.codf)
ON farmacisti.codf=farmacii.codf WHERE gratuite.data_intr=2004 ORDER BY nume;
3.2.2.5. Clauza INTO
Se utilizeaz pentru a scrie rezultatul unei selecii ntr-un nou tabel cu structura
definit de . Astfel sintaxa comenzii SELECT devine:
SELECT INTO tabel_nou FROM
[WHERE ]
[ORDER BY ]
-
35
3.2.3. Comanda UNION
Permite crearea unui recordset care poate fi folosit pentru a consulta date din mai multe
tabele selectate sau poate unifica datele din mai multe tabele cu acelai numr de cmpuri sau
cu aceeai structur.
Sintaxa este:
selectie_1 UNION [ALL] selectie_2UNION [ALL] selectie_n
TABLE tabel_1 UNION [ALL] TABLE tabel_2 UNION [ALL] TABLE tabel_n
Cmpurile specificate n selectie_1 vor constitui denumirea cmpurilor rezultat.
Cmpurile din celelalte selecii trebuie s corespund numeric cu cmpurile din prima
selecie, tipurile putnd fi distincte. Dac este folosit clauza ALL se vor selecta toate
nregistrrile, inclusiv dublurile. Fiecare dintre selecii pot avea clauzele ORDER BY,
GROUP BY, HAVING, WHERE. Clauza ORDER BY poate referi doar denumiri de cmpuri
din prima selecie, ordinea de selecie specificat n ultima selecie devine prioritar, ea
anulnd toate celelalte clauze de ordonare.
Cea de-a doua form a comenzii UNION unific ntr-un recordset mai multe tabele cu
acelai numr de cmpuri sau cu aceeai structur.
Exemple:
SELECT codf, den, adresa FROM farmacii WHERE codf=101 UNION SELECT codmed,
denmed, data_intr FROM gratuite WHERE codf=101;
SELECT den FROM farmacii UNION SELECT AVERAGE(salar) FROM farmacisti
WHERE codf=101 AND functie LIKE laborant;
Observaii:
Operatorul UNION e bine de folosit n cazul subseleciilor (utilizarea comenzilor
SELECT n alt comand SELECT), cnd exist condiii de filtrare mai complexe, sau dac
datele se regsesc n mai multe tabele.
UNION nltur liniile duplicate din setul de rezultate al interogrii (se comport ca i
condiiile multiple ale clauzei WHERE).
UNION ALL realizeaz ceea ce nu poate face mai multe clauze WHERE.
-
36
3.3. Comenzi de execuie (de manipulare a datelor DML)
Comenzile DML se efectueaz de ctre bazele de date iar n final se obine ca rezultat
un cod care specific succesul sau eecul execuiei.
3.3.1. Comanda INSERT
Cu ajutorul comenzii INSERT se adaug cte o nregistrare ntr-un tabel. Sintaxa
simplificat a acestei comenzi este:
INSERT [INTO] tabel (camp_1,camp_2, , camp_n) VALUES (valoare_1,valoare_2, ,
valoare_n)
Exemple:
INSERT INTO gratuite VALUES (101,1002, aspirina Bayer, 11/11/2003, 500);
INSERT INTO farmacisti (codf, nume, functie, salar) VALUES (101, Popescu, farmacist,
4500000);
Observaii:
Pot aprea erori atunci cnd:
- numele tabelului sau al cmpurilor nu sunt corecte
- se dorete introducerea duplicatelor la chei unice
- numrul de cmpuri nu coincide cu numrul de valori
- valoarea de adugat nu are tipul cmpului
- valoarea expresiei de adugat este nul pentru cmpuri care nu pot lua valori nule
3.3.2.Comanda UPDATE
Aceast comand permite modificarea unui set de nregistrri i are sintaxa:
UPDATE tabel SET camp_1=expresie_1, camp_2=expresie_2,,camp_n=expresie_n
WHERE criteriu_selectie
-
37
In tabel se nlocuiesc cmpurile date cu expresiile respective, dup criteriul de selecie dat de
clauza WHERE.
Exemple:
UPDATE farmacisti SET salar=salar*0.6 WHERE salar BETWEEN 3500000 AND
5000000;
UPDATE gratuite SET buc=buc+100 WHERE codmed=1002;
Observaii:
Pot aprea erori n cazul c:
- numele tabelului sau al cmpurilor nu sunt corecte
- prin modificare se obine duplicare la chei unice
- evaluarea unei expresii nu are tipul cmpului
- expresia evaluat este nul pentru cmpuri care nu pot lua valori nule
- se folosesc n expresii cmpuri utilizate n clauza SET
3.3.3 Comanda DELETE
Se terg nregistrrile unui tabel n totalitate (cnd lipsete clauza WHERE) sau cele
care satisfac condiia din clauza WHERE. Sintaxa este:
DELETE FROM tabel WHERE criteriu_selectie
Exemple:
DELETE FROM farmacisti WHERE codf=102 AND salar
-
38
3.4. Comenzi speciale (data definition language DDL)
Comanda Descriere
CREATE TABLE Creaz un tabel
ALTER TABLE Modific structura unui tabel
DROP TABLE terge un tabel (ca structur i coninut)
TRUNCATE terge toate rndurile unei tabele i elibereaz spaiul alocat acesteia
RENAME Modific numele unui obiect al BD: tabel, vedere, index, secven
sau sinonim
COMMENT Adaug comentarii la tabele sau vederi
Figura 3.6
Comenzile DDL se folosesc pentru crearea, modificarea i tergerea tabelelor i a indecsilor.
3.4.1.Comanda CREATE TABLE, INDEX, VIEW
Aceste comenzi creaz un nou tabel, un index dup o cheie primar, sau o vedere, iar
sintaxele lor sunt:
CREATE TABLE nume_tabel (nume_camp tip_camp [(lungime)] [index] [NOT NULL]
[CONSTRAINT multi_index]
CREATE [UNIQUE] INDEX nume_index ON tabel (lista_campuri_index) [WITH
{PRIMARY | DISALLOW NULL | IGNORE NULL}]
CREATE VIEW nume_vedere AS SELECT coloane, FROM tabele,
[WHERE][GROUP BY][HAVING]
Observaie:
Se pot crea chei de indexare i cu prima comand dac folosim clauza
CONSTRAINT.
Clauza CONSTRAINT definete valorile pe care le putem da unor cmpuri, cum ar fi:
valori unice (UNIQUE), valori nenule (NOT NULL), valori pentru construirea cheilor
-
39
primare (PRIMARY KEY), pentru chei externe (FOREIGN KEY) i a referinelor la alte
tabele (REFERENCES). Constrngerile se precizeaz la nivel de cmp (n momentul definirii
lui) i multicmp (dup definirea tuturor cmpurilor). O constrngere unicmp are forma:
CONSTRAINT nume {PRIMARY KEY | UNIQUE | NOT NULL | REFERENCES
tabel_extern [(camp_extern_1, camp_extern_2...)]}
3.4.1.1. Ce sunt vederile?
Vederile sunt tabele virtuale. Spre deosebire de tabelele care conin date, vederile
conin pur i simplu interogri care regsesc dinamic datele atunci cnd sunt folosite. Sunt
foarte utile din mai multe considerente, cum ar fi:
- refolosirea instruciunilor SQL
- simplificarea operaiunilor SQL complexe (dup scrierea unei interogri, aceasta
poate fi refolosit cu uurin, fr a fi nevoie s cunoatem detaliile interogrii n
sine)
- afiarea unor pri dintr-un tabel i nu a tabelului integral
- securitatea datelor, pentru ca utilizatorii pot primi acces la subseturi specifice ale
tabelelor i nu la tabele integrale
- se pot returna date formatate i reprezentate n mod diferit de tabelele care stau la
baza lor
- dupa ce au fost create pot fi folosite in acelasi mod ca tabelele.
Observaie:
E bine ca vederile s fie create pentru un domeniu extins de date i s nu fie legate de
date cu valori specificate, pentru a o refolosi cu usurin.
Exemple:
CREATE TABLE farmacii (codf INTEGER(5) NOT NULL CONSTRAINT ccodf
PRIMARY KEY, den CHAR(20) NOT NULL, adresa CHAR(30), nr_ang INTEGER(2),
nr_tel INTEGER(6);
-
40
CREATE INDEX cod_farm ON farmacii (codf);
CREATE INDEX datin ON gratuite (data_intr DESC) WITH IGNORE NULL;
Observaii:
Clauza UNIQUE de la CREATE INDEX se folosete pentru acele cmpuri care
conin valori unice dar nu fac parte din cheia primara a tabelului.
Clauza WITH poate defini chei primare PRIMARY KEY, poate inhiba posibilitatea
de a introduce valoarea null n cmpul index DISALLOW NULL, poate crea indexul
doar pe baza valorilor nenule IGNORE NULL.
Cnd se foloseste clauza PRIMARY KEY e inutil scrierea clauzei UNIQUE.
3.4.2. Comanda ALTER TABLE
Dinamica aplicaiilor de baze de date poate impune modificri ale tabelelor i
indecsilor deja existeni. Modificrile constau n adaugarea i tergerea unor cmpuri i
indecsi, tergerea unor tabele. Comanda ALTER TABLE permite :
- Adugarea unei coloane
- Modificarea unei coloane existente
- Definirea unei valori implicite pentru o coloan existent
Sintaxa ei este:
ALTER TABLE tabel
ADD camp1 tip (lungime) [NOT NULL][CONSTRAINT unicamp] [,camp n tip ]);
MODIFY camp1 tip (lungime) [NOT NULL][ CONSTRAINT unicamp] [,camp n tip]);
Exemple:
ALTER TABLE gratuite ADD valabilitate INTEGER(1);
ALTER TABLE farmacii ADD CONSTRAINT codf NOT NULL;
-
41
ALTER TABLE farmacisti ADD CONSTRAINT farmacist PRIMARY KEY
(nume,prenume);
3.4.3. Comanda DROP
Se folosete pentru a terge un tabel, un index sau o coloan dintr-un tabel (n cadrul
comenzii ALTER TABLE). Sintaxa este:
DROP TABLE nume_tabel
DROP INDEX nume_index ON tabel
ALTER TABLE tabel DROP COLUMN camp
ALTER TABLE tabel DROP CONSTRAINT nume_index
Exemple:
DROP TABLE gratuite;
DROP INDEX farmacist ON farmacisti;
ALTER TABLE farmacii DROP COLUMN nr_tel;
3.4.4. Comanda TRUNCATE
Permite tergerea tuturor rndurilor dintr-o tabel i eliberarea spaiului de stocare
folosit de acea tabel.
TRUNCATE TABLE nume;
Observatie:
tergerea datelor este ireversibil. Comanda reprezint o alternativ a comenzii
DELETE.
-
42
3.4.5. Comanda RENAME
Comanda RENAME permite schimbarea numelui unui obiect al BD: tabel, vedere,
secven, index sau sinonim.
Sintaxa este urmatoarea:
RENAME nume_nou TO nume;
Observatie:
Doar proprietarul obiectului are dreptul de a-l redenumi.
3.5. Comenzi ale limbajului de control al tranzaciilor (TCL)
Modelul de calcul client/server numit i multi-nivel, reprezint un tip de model
distribuit pentru stocarea, accesarea i prelucrarea datelor. Intr-un sistem de prelucrare
distribuit, mai multe calculatoare efectueaz mpreun o mulime de operaii. Un sistem
multi-nivel folosete cel puin dou calculatoare, dintre care unul este aproape ntotdeauna un
calculator personal.
Atunci cnd se conecteaz PC-uri i servere, setul de prelucrri trebuie mprit ntre
server i sistemul client. Acestea efectueaz prelucrri n funcie de capacitatea fiecruia,
rezultatul fiind o form de cooperare care sporete eficiena i viteza ntregii operri. Modelul
multi-nivel presupune de asemenea o mprire inegal a activitii. Aceasta provine din
capacitile diferite de prelucrare ale serverului i clientului. Serverul fiind mai puternic (ca
vitez i capacitate de stocare) transfer datele mai repede, stocheaz volume mari de date i
efectueaz prelucrri mai laborioase dect sistemul client. Acest model a devenit cu
repeziciune baza de dezvoltare a aplicaiilor pentru internet, pentru c se optimizeaz
prelucrrile n acea parte a tranzaciei unde este cel mai potrivit, fie c e vorba de afiarea
informaiilor ctre utilizatorul final sau sortarea datelor care trebuie furnizate pentru afiare.
Prin utilizarea tehnologiei multi-nivel pe Internet, multe aplicaii de larg utilizare ajung
online. Sistemele PC mai puin puternice sunt folosite drept clieni, deoarece lor le revine o
parte mai mic din ntreg efortul de calcul bazat n principal pe server i pe componentele
asociate acestuia, optimizate pentru prelucrri masive de date.
-
43
3.5.1. BD tranzacionale
Rezolv accesul concurenial la date, asigur consistena datelor si grupeaza logic
unele operaii nrudite.
Prelucrarea de tranzacii se folosete pentru a menine integritatea bazelor de date i
pentru a ne asigura c seturile de operaii SQL sunt executate fie complet, fie deloc pentru ca
baza de date s nu conin niciodat rezultatele unor operaii pariale. Dac nu intervine nici o
eroare pe parcursul prelucrrii bazei de date (de exemplu: lipsa spaiului pe disc, restricii de
securitate, blocri ale tabelelor, cdere a sistemului) atunci ntregul set de instruciuni este
nscris n tabelele bazei de date, iar dac apar erori, atunci se poate derula n mod automat o
revenire (anulare) care restaureaz baza de date la o stare cunoscut i sigur.
Termenii care apar atunci cnd lucrm cu tranzacii sunt urmtorii:
Noiune Explicaie
Transaction Set (bloc) de instructiuni SQL
Rollback Revenire; procesul anularii instructiunilor SQL specificate
Commit Determin comiterea unei tranzacii si permite scrierea
instructiunilor SQL nesalvate
Savepoint Marcaj intr-un set tranzactie la care se poate termina o
revenire (spre deosebire de revenirea unei intregi tranzactii)
Figura 3.7.
Observaii:
Tranzacia ncepe odat cu executarea primei comenzi SQL, e folosit pentru a
gestiona instruciunile INSERT, UPDATE i DELETE. Nu se pot aplica reveniri asupra
instruciunilor SELECT, CREATE sau DROP. Acestea pot fi folosite ntr-un bloc de
tranzacii, dar dac se efectueaz o revenire, ele nu vor fi anulate. Tranzacia se termin prin
intervenia unuia din evenimentele:
- comanda COMMIT sau ROLLBACK
- comanda DDL sau DCL (comitere automat)
- diferite erori, ieirea sau blocarea sistemului.
3.5.2. Controlul tranzaciilor
Gestionarea tranzaciilor implic divizarea instruciunilor SQL n blocuri logice i
indicarea explicit a cazurilor cnd datele trebuiesc supuse unor reveniri sau nu.
-
44
Sintaxa folosit la implementarea prelucrrii de tranzacii difer ntre SGBD-uri, de
exemplu, n SQL Server tranzacia ncepe cu instruciunea BEGIN TRANSACTION i se
sfrete cu COMMIT [TRANSACTION], iar ntre cele dou instruciuni orice instruciune
trebuie executat fie complet, fie deloc.
Comanda ROLLBACK se utilizeaz pentru revenirea (anularea) instruciunilor SQL. Sintaxa
ei este:
ROLLBACK [TO nume_punct salvare]
ROLLBACK [TRANSACTION]
Exemplu:
DELETE FROM gratuite;
ROLLBACK;
Instruciunea ROLLBACK anuleaz tergerea.
Instruciunea COMMIT [TRANSACTION] se folosete pentru a impune sistemului s nscrie
explicit o tranzacie.
Tranzaciile mai complicate pot necesita nscrieri sau reveniri pariale. In acest caz e
util folosirea punctelor de salvare, adic introducerea n blocul SQL al tranzaciilor a unor
marcaje, ca mai apoi s se indice punctul la care sa revin execuia instruciunilor.
In SQL Server faptul acesta se scrie cu ajutorul comenzilor:
SAVE TRANSACTION nume
ROLLBACK TRANSACTION nume
SAVE creeaza un punct de salvare al tranzactiei cu denumirea nume, iar ROLLBACK
Permite revenirea pn la punctul de salvare nume creat.
-
45
Exemplu de tranzacie n SQL Server:
BEGIN TRANSACTION
INSERT INTO gratuite VALUES (101,1002,aspirina,11/11/2003, 500);
SAVE TRANSACTION inceput;
INSERT INTO farmacisti ((codf, nume, functie, salar) VALUES (101, Popescu,
farmacist, 4500000)
IF @@ ERROR 0 ROLLBACK TRANSACTION inceput;
INSERT INTO farmacii (codf, den, adresa, tel, nrang) VALUES (2005,FARMAX, centru,
494902, 13);
IF @@ ERROR 0 ROLLBACK TRANSACTION inceput;
COMMIT TRANSACTION;
Dac apare vreo eroare sau eueaz vreo comand INSERT de fiecare dat se revine la
punctul inceput, daca nu, se ruleaz instruciunea COMMIT pentru a salva datele.
Observaii:
- se recomand crearea mai multor puncte de salvare pentru a avea mai mult
flexibilitate n gestionarea revenirilor
- jurnalul de tranzacii conine dou tipuri de informaii: una reprezint o form de
verificare n cadrul aplicaiei prin care se asigur ca o operaie anume se
efectueaz n totalitate i alta privete imaginea coninutului bazei de date nainte
i dup efectuarea operaiilor (de exemplu, la actualizarea unei linii, n jurnal se
nregistreaz coninutul nainte i coninutul dup actualizare).
In ORACLE se procedeaz cu ajutorul comenzilor:
SAVEPOINT nume
ROLLBACK TO nume
Exemplu de rulare:
SQL> UPDATE
-
46
SQL> SAVEPOINT marker;
Savepoint created.
SQL> INSERT
SQL> ROLLBACK TO marker;
Rollback complete.
Observaii:
Garanteaz n permanen o vedere consistent asupra datelor.
Modificrile efectuate de un utilizator nu vin n conflict cu modificrile altui
utilizator.
Asigur ca pentru acelai set de date:
cititorul nu ateapt dup scriitor
scriitorul nu ateapt dup cititor.
3.6. Comenzi ale limbajului de control al datelor (DCL)
3.6.1. Securitate
In cadrul unei organizaii nu exist nimic mai valoros dect datele ei, iar acestea
trebuie ntotdeauna protejate mpotriva eventualilor infractori sau curioi. Desigur, n acelai
timp datele trebuie s fie accesibile utilizatorilor, astfel ca majoritatea SGBD-urilor le ofer
administratorilor mecanisme prin intermediul crora s asigure sau s limiteze accesul la
date.
Baza oricrui sistem de securitate este autorizarea i autentificarea utilizatorului;
acesta este procesul prin care utilizatorul este identificat i prin care i se permite s efectueze
operaia solicitat. In acest scop, unele SGBD-uri sunt integrate cu securitatea sistemului de
operare, altele au propriile lor liste cu utilizatori i parole, iar altele se integreaz cu servicii
de securitate extern.
Dintre operaiile crora li se asigur n mod uzual securitatea sunt:
accesul la caracteristicile de gestionare a BD (crearea tabelelor, modificarea
sau tergerea tabelelor existente, etc)
accesul la BD sau tabele specifice
tipul de acces (numai pentru citire, accesul la coloane specifice, etc)
-
47
accesul la tabele numai prin intermediul vederilor sau al procedurilor stocate
crearea de niveluri multiple de securitate, permitnd astfel grade diverse de
acces i control bazate pe identificarea la deschiderea sesiunii de lucru
limitarea capacitii de gestionare a conturilor de utilizatori.
Securitatea este gestionat prin intermediul instruciunilor GRANT i REVOKE, dei cele
mai multe SGBD-uri asigur utilitare pentru administrare interactiv ce folosesc intern aceste
dou instruciuni.
3.6.2. Drepturi (Privilegii)
Un drept reprezint permisiunea de accesare a unui obiect, de exempu o tabel din
cadru unei BD. Drepturie se acord unui utilizator sau unui rol pentru a permite utilizatorilor
sau membrilor rolului s efectueze operaii ca: extragerea datelor, inserarea de noi linii sau
modificarea datelor. Drepturile se acord implicit posesorului sau creatorului unui obiect.
Acesta poate s acorde drepturi altor utilizatori sau grupuri, dup cum gsete de cuviin.
- posesorul unei BD (DBO) are drepturi depline asupra tuturor obiectelor din BD pe
care o posed.
- administratorul de sistem (SA) are drepturi depline asupra tuturor obiectelor din toate
BD aflate pe server.
SQL Server pune la dispoziie comenzile GRANT i REVOKE ce permit acordarea i
retragerea de drepturi unui utilizator.
3.6.2.1. Privilegii sistem
Administratorul BD are cele mai mari privilegii sistem:
Crearea de noi utilizatori
nlturarea unor utilizatori
tergerea tabelelor
Crearea unor copii de siguran a tabelelor
Comanda Utilizare
CREATE
USER
Permite DBA s creeze un utilizator
GRANT Permite unui utilizator s acorde altor utilizatori drepturi
de acces la obiectele sale
-
48
CREATE
ROLE
Permite DBA s creeze colecii de drepturi
ALTER USER Permite utilizatorilor s i modifice parola de acces
REVOKE Elimin drepturile unui utilizator asupra unui obiect al
BD
Figura 3.8
In versiunile anterioare de SQL Server, un utilizator putea s fac parte dintr-un
singur grup de utilizatori (cu anumite drepturi). Acest lucru fiind vzut ca o limitare,
versiunea 7 a pachetului de programe, a eliminat grupurile i a introdus noiunea de roluri
astfel realizndu-se un pas major n ceea ce privete capacitatea de administrare, un utilizator
deinnd orict de multe roluri.
Sintaxele corespunztoare comenzilor din tabelul de mai sus sunt:
GRANT privilegiu1 [, privilegiu2...] TO user1 [, user2...];
GRANT create table, create view TO nume_manager;
GRANT nume_manager TO nume1[,nume2,nume_n];
CREATE ROLE nume_manager;
REVOKE lista_drepturi ON nume_obiect FROM lista_nume
Exemplu:
GRANT create table, create sequence, create view TO ionescu;
Grant succeeded.
3.6.2.2. Privilegiile utili