Sunteți pe pagina 1din 15

Ce este o Bază de Date?

În sens larg, o bază de date (database) este o colecţie de date corelate din punct de vedere
logic, care reflectă un anumit aspect al lumii reale şi este destinat unui anumit grup de utilizatori.
În acest sens, bazele de date pot fi create şi menţinute manual (fişele de evidenţă a cărţilor dintr-
o bibliotecă) sau computerizat aşa cum sunt majoritatea bazelor de date în momentul de faţă.
O bază de date este o colecţie de date centralizate, creată şi menţinută computerizat, în
scopul prelucrării datelor în contextul unui set de aplicaţii. Prelucrarea datelor se referă la
operaţiile de introducere, ştergere, actualizare şi interogare a datelor.

Bancă de date
O bancă de date se defineşte ca fiind formată din:
1) Baza de date: colecţia de date aflate în interdependenţă, împreună cu descrierea lor;
2) Sistemul de gestiune al bazei de date (SGBD): un set de programe specializate,
destinat gestiunii şi prelucrării datelor din baza de date;
3) Un set de proceduri manuale şi automate specifice domeniului pentru care se
proiectează baza de date, împreună cu reglementările administrative destinate bunei funcţionări
a sistemului.
Conceptul modern de bancă de date este caracterizat în plus de ideea de gestiune
independentă a structurii bazei de date, care se concretizează prin posibilitatea modificării
structurii şi organizării fizice a datelor, fără a modifica programele de aplicaţie.
Utilizatori:
 administratorul bazei de date: o persoană (sau mai multe) însărcinată cu gestiunea
globală a bazei de date, care are toate drepturile de acces, la toate elementele componente ale
bazei de date;
 programatorii de aplicaţie: persoane specializate, care realizează şi controlează sistemul
de gestiune al bazei de date (programele şi aplicaţiile);
 utilizatorii obişnuiţi: care au acces doar la datele din baza de date, cu care lucrează
folosind programele deja implementate (dar pe care nu le pot modifica), în scopul de a obţine
anumite informaţii particulare din banca de date.

Proprietăți
Orice bază de date are următoarele proprietăţi implicite:

• Baza de date este o colecţie logică, coerentă de date ce are cel puţin un înţeles.
• Baza de date este destinată, construită şi populată de date despre un domeniu bine precizat.
Ea are un grup de utilizatori şi se adresează unui anumit grup de aplicaţii.
• O bază de date reprezintă câteva aspecte ale lumii reale creând orizontul propriu. Schimbările
orizontului sunt reflectate în baza de date.

Avantaje
• Controlul centralizat al datelor, putând fi desemnată o persoană ca responsabil cu
administrarea bazei de date.
• Viteză mare de regăsire şi actualizare a informaţiilor.
• Sunt compacte: volumul ocupat este mult mai redus.
• Flexibilitatea ce constă în posibilitatea modificării structurii bazei de date fără a fi necesară
modificarea programelor de aplicaţie.
• Redundanţă scăzută a datelor memorate, care se obţine prin partajarea datelor între mai mulţi
utilizatori şi aplicaţii.
• Posibilitatea introducerii standardelor privind modul de stocare a datelor, ceea ce permite
interschimbarea datelor între organizaţii.
• Menţinerea integrităţii datelor prin politica de securitate (drepturi de acces diferenţiate în
funcţie de rolul utilizatorilor), prin gestionarea tranzacţiilor şi prin refacerea datelor în caz de
funcţionare defectuoasă a diferitelor componente hardware sau software.
• Independenţa datelor (SGBD) faţă de suportul hardware utilizat.
Clasificarea sistemelor de baze de date
1. După modelul de date / conceptual
2. După numărul de utilizatori: mono/multi -user
3. După modul de realizare și distribuire a resurselor: integrate/client-server/distribuite
4. După modalitatea de access: publice/private
5. După mărime: mici-medii (<1mil)/mari
6. După destinație: generalizate/specializate
7. După tipul limbajelor: proprii/cu limbaj gazdă
8. După domeniu de utilizare: economic, informare.

1. Clasificare după modelul de date

1. Modelul ierarhic
2. Modelul rețea
3. Modelul relațional
4. Modelul obiectual

Modelul ierarhic
În modelul de date ierarhic (Hierarchical Model) o bază de date se reprezintă printr-o
structură ierarhică de înregistrări de date (records) conectate prin legături (links).
Modelul ierarhic a fost primul model folosit pentru dezvoltatea bazelor de date.
O schemă ierarhică este un arbore direcţionat, reprezentat pe mai multe niveluri, în care
nodurile sunt tipurile de înregistări, iar arcele sunt tipurile de legături.
Fiecare nod (cu excepţia nodului rădăcină) are o singură legătură către un nod de pe un
nivel superior (nodul părinte) şi fiecare nod (cu excepţia nodurilor frunză) are una sau mai multe
legături către noduri de pe nivelul imediat inferior (noduri fii).

Modelul reţea
Modelul de date reţea (Network Model) foloseşte o structură de graf pentru definirea
schemei conceptuale a bazei de date; nodurile grafului sunt tipuri de entităţi (înregistrări =
records), iar muchiile grafului reprezintă în mod explicit asocierile (legăturile = links) dintre
tipurile de entităţi.
La fel ca şi modelul ierarhic, dezavantajul principal al modelului reţea este acela că
fiecare interogare trebuie să fie prevazută încă din faza de proiectare, prin memorarea explicită
a legăturilor între tipurile de entităţi.
În plus, complexitatea reprezentării datelor în modelul reţea este deosebit de ridicată,
iar programatorii trebuie să o cunoască pentru a putea realiza aplicaţiile necesare.
Modelul relaţional
Modelul de date relaţional (Relational Model) se bazează pe noţiunea de relaţie din
matematică, care corespunde unei entităţi de acelaşi tip şi are o reprezentare uşor de înţeles şi
de manipulat, ce constă dintr-un tabel bidimensional, compus din linii şi coloane. Tabel =
entitate.
Fiecare linie din tabel reprezintă o inregistrare de entitate şi este compusă din mulţimea
valorilor atributelor entităţii respective, fiecare atribut corespunzând unei coloane a tabelului.
Modelul de date relaţional a fost propus de cercetătorul E.F.Codd de la compania IBM
(1970). Chiar dacă noţiunile de relaţie şi tabel diferă în esenţa lor, relaţia reprezentând o
mulţime de entităţi şi tabelul o reprezentare vizuală a acesteia, cele două denumiri se pot folosi,
în general pentru acelaşi scop.

Modelul relational - Caracteristici


1) Datele sunt percepute de utilizatori ca tabele
2) Operatorii relaţionali care pot fi folosiţi pentru prelucrarea datelor generează un tabel
rezultat din tabelele operanzi
3) Asocierea dintre tabele se realizează prin intermediul egalităţii valorilor unor atribute
comune, ceea ce permite rezolvarea oricărei interogări.
4) Limbaj de programare (SQL)

Modelul de date obiect-relaţional


Există şi unele domenii, în special cele care manipulează tipuri de date complexe, cum
ar fi PAC, GIS, medicină etc, în care modelul relaţional s-a dovedit a fi insuficient de expresiv
şi cu performanţe de execuţie reduse.
Modelul de date obiect-relațional reprezintă extinderea modelului relaţional cu
caracteristici ale modelului obiect, extindere necesară pentru realizarea bazelor de date care
definesc şi prelucrează tipuri de date complexe.
În esenţă, modelul obiect-relaţional păstrează structurarea datelor în relaţii (reprezentate
ca tabele), dar adaugă posibilitatea definirii unor noi tipuri de date, pentru domeniile de valori
ale atributelor.

Caracteristicile modelului obiectual


1. Abstractizarea - programele sunt organizate ca şi colecţii de obiecte cooperante,
fiecare obiect fiind o instanţă a unei clase.
2. Moştenirea - Fiecare clasă reprezintă abstractizarea unui tip de entitate din realitatea
modelată, iar clasele sunt membre ale unei ierarhii de clase, corelate între ele prin relaţii de
moştenire. Tipurile de date definite de utilizator pot fi extinse prin mecanismul de moştenire.
3. Încapsularea - Orice obiect este încapsulat, ceea ce înseamnă că structura internă a
acelui obiect nu este vizibilă utilizatorilor, care au acces doar la funcţiile (metodele) pe care
acel obiect este capabil să le execute.
4. Modularizarea - Clasele şi obiectele unui program orientat obiect sunt grupate în
module, care pot fi compilate separat şi între care există graniţe bine definite şi documentate,
ceea ce reduce complexitatea de manevrare a datelor.
SGBD
SGBD este un pachet de programe ce permite utilizatorilor să interacționeze cu baza de
date și asigură:
 Independența datelor
 Nivel redus de redundanță
 Securitatea datelor
 Integritatea datelor (protecție la defecțiuni hard/soft)
 Transparența (accese diferite ale utilizatorilor)
 Limbaje de descrie și manipulare a datelor (LMD, LDD)
 Faculități multi-user
 Accesibilitate
SGBD - Componente
1. Monitorul (gestionarul bd) – este un ansablu de module care realizaează interfața
dintre datele (fizice) și comenzile (programele) de prelucrare. Funcții:
1. Interacțiunea cu sistemul de fișiere
2. Validarea datelor (respectarea criteriilor de integritate)
3. Securitatea datelor (acces selectiv)
4. Salvare, backup
5. Prelucrări concurente (acces simultan)
2. LDD – limbaj de definire a datelor
3. LMD – limbaj de manipulare a datelor ce permite: actualizarea, adăugarea, ștergerea,
sortarea, editarea, căutarea datelor.

Interfeţe SGBD
SGBD trebuie să ofere interfeţe corespunzătoare tuturor categoriilor de utilizatori si au
ca scop facilitarea legăturii între utilizatori şi sistemul de baze de date.
• Interfeţe bazate pe meniuri. Acestea oferă utilizatorului o listă de opţiuni, numite meniuri
care îi ajută la formularea cererilor.
• Interfeţe grafice. Aceste interfeţe afişează utilizatorului o diagramă. Utilizatorul poate
formula cererea prin manipularea acestei diagrame.
• Interfeţe bazate pe formulare. Aceste interfeţe sunt acelea prin intermediul cărora utilizatorul
poate completa formularele cu noile date pe care le doreşte să le insereze, sau foloseşte aceste
forme pentru a cere SGBD să obţină datele de interes.
• Interfeţe în limbaj natural. Aceste interfeţe acceptă cereri scrise în limba engleză sau alte
limbi de circulaţie internaţională. Interpretarea cererilor se face pe baza unui set standard de
cuvinte cheie ce sunt interpretate pe baza schemei interne.
Interfeţe specializate aferente cererilor repetate – sunt destinate unei anumite categorii
de utilizatori.
Interfeţe pentru administratorii bazelor de date - sunt utilizate în implementarea
comenzilor ce sunt folosite de administratorii bazelor de date.
Astfel de comenzi includ:
 crearea de conturi,
 setarea parametrilor sistemului,
 autorizarea intrării într-un anumit cont,
 reorganizarea structurii de stocare a datelor,
 administrarea bazei de date, cum sunt: accesul la tabele şi înregistrări, facilităţi de acces
la câmpuri ale tabelelor de date.
Exemple de SGBD:
1)Microsoft SQL Server
2) Microsoft Access
3) Sistemul Oracle
4) MySQL

Limbaje SGBD
Construirea schemei interne şi conceptuale a b.d.
Cazuri:
1. nu există o separaţie netă între cele două niveluri: Data Definition Language (DDL)
este utilizat de admin/proiectantul bazei de date în definirea ambelor scheme. Un compilator
DDL procesează instrucţiunile pentru identificarea descrierilor despre construcţie şi memorează
aceasta în catalogul SGBD.
2. clară separaţie între nivelul conceptual şi cel intern - Storage Definition Language
(SDL)
3. Pentru o arhitectură pe trei nivele, este necesar un al treilea nivel numit View
Definition Language (VDL) destinat utilizatorilor şi legăturii acestora cu nivelul conceptual.
Multe sisteme de baze de date realizează aceasta printr-un DDL ce acceptă şi declaraţii specifice
nivelului extern.

Indexarea
Indexarea unei tabele reprezinta operatia prin care se ordoneaza logic înregistrarile
acesteia, dupa un anumit atribut (sau un grup de atribute), numit index, în scopul optimizarii
cautarii si localizarii ulterioare a anumitor date.
Indexul se defineste la definirea structurii tabelului.
Indexarea:
 ajută la mărirea vitezei de căutare a datelor
 permite ordonarea datelor
 poate fi folosită în verificarea datelor ce se repetă.
Proprietatea Index are trei valori: NO , Yes(Duplicates Ok) respectiv Yes(No
Duplicates). Ordonarea se observă doar dacă nu există cheie primară. Exemplu – proprietate
activată pentru câmpul CNP – să nu avem valori repetate.
Cheia primara este considerata automat index.
Index pentru un câmp: Field Properties > setăm proprietatea Indexed acelui câmp pe
valoarea Yes(No Duplicates).

Constrangeri de integritate
Constrângerile de integritate sunt reguli care se definesc la proiectarea unei baze de date
şi care trebuie să fie respectate de-a lungul existenţei acesteia.
Constrângerile se pot clasifica astfel:
1. în cadrul tabelei - reguli care se impun în cadrul unei singure tabele şi asigură
integritatea datelor acesteia.
• constrângeri de domeniu - condiţii care se impun valorilor atributelor şi asigură
integritatea domeniilor atributelor;
• constângeri de nuplu (de înregistrare din tabelă) - condiţii care se impun nuplurilor
unei entităţi (înregistrărilor din tabelă) şi asigură identificarea corectă a nuplurilor prin
intermediul cheilor primare.
• constrângeri impuse de dependenţe de date (dependenţe funcţionale) - constrângeri
prin care valorile unor atribute ale unei entităţi (câmpuri ale tabelei) determină valorile altor
atribute ale aceleiaşi entităţi.
2. între tabele.

Integritatea referențială
Indiferent de tipul de relaţii existent între două/mai multe tabele este esenţial ca cele
două câmpuri participante la aceasta să aibă exact acelaşi tip de date.
Pe lângă stabilirea relaţiilor între tabelele unei baze de date, Access permite şi
specificarea unor reguli care forţează integritatea datelor, numite restricţii de integritate
referenţială. Ele permit conseravarea intacta a relaţiilor între tabele
Integritatea referenţială funcţionează după câmpul cheie. Acest sistem verifică în mod
continuu câmpul cheie, primară şi străină, la fiecare operaţie de adăugare, ştergere sau
modificare a unei înregistrări.
Dacă o schimbare a unei chei afectează legătura între tabele, sistemul avertizează că se
încalcă regulile de integritate referenţială.
Atunci când două tabele sunt legate printr-o relaţie, o tabelă se numeşte părinte şi
cealaltă se numeşte copil. Acest sistem este cunoscut sub numele de relaţie părinte-copil.
Integritatea referenţială garantează că nu vor exista înregistrări orfane adică înregistrare
copil fără o înregistrare părinte.

Interogări (Queries)
Interogarea constă în extragerea datelor dintr-o tabelă (tabele), dintr-o interogare
anterioară sau din ambele, prelucrarea acestora într-o formă mai mult sau mai puţin complexă
şi furnizarea informaţiilor către utilizatori.
Rezultatele interogărilor pot fi folosite ca atare sau pot constitui sursă de înregistrări
pentru crearea formularelor şi rapoartelor.

Operaţii realizate cu interogări:


• extragerea din tabele numai a câmpurilor relevante pentru utilizatori;
• extragerea înregistrărilor (datelor) din una sau mai multe tabele prin specificarea unor
criterii de selecţie;
• regăsirea şi ordonarea datelor după anumite criterii;
• crearea de câmpuri calculate;
• realizarea unor informaţii sintetice pe baza informatiilor extrase;
• crearea de noi tabele
• adăugarea/ ştergerea/ actualizarea înregistrărilor din tabele;
• combinarea şi compararea ieşirilor prin realizarea mai multor interogări în acelaşi
timp;
• interogarea altor baze de date (FoxPro, SQL Server, Oracle);
• pregătirea datelor în vederea afişării lor în formulare sau rapoarte.
Tipuri de interogări În Microsoft Access se pot crea următoarele tipuri de interogări: A.
interogări de selecţie;
B. interogări parametrice;
C. interogări încrucişate;
D. interogări de acţiune.

A. Interogările de selecţie
Interogările de selecţie extrag informaţii din unul sau mai multe tabele şi le afişează sub
formă de listă.
 Sunt cel mai uşor de creat şi au avantajul că pot afişa un număr redus de date dintr-un
tabel de mare capacitate (datele care îndeplinesc condiţiile specificate).
 Permit şi modificarea rezultatului afişat, modificare ce va fi văzută şi în tabelul sursă.
 Permit şi folosirea de parametri, cum este reuniunea de câmpuri din tabele între care nu
există nici o legătură precum şi efectuarea de calcule.
 Este cel mai utilizat tip de interogare.
 Interogarea de selecţie centralizează datele din una sau mai multe tabele şi afişează
rezultatele într-o foaie de date.
 Se poate folosi o interogare de selecţie pentru a grupa articolele şi a efectua însumări,
contorizări, medii aritmetice şi alte tipuri de totalizări.

B. Interogările parametrice
Este o interogare care, la execuţie, afişează o casetă cu dialog prin care se solicită
introducerea unor informaţii suplimentare. Acesta este criteriul pentru regăsirea articolelor sau
valoarea pe care vreţi s-o inseraţi într-un câmp.
- o funcţie parametru putând fi folosită pentru toate celelalte interogări prezentate anterior;
- ele folosesc în mod repetat o interogare, efectuând modificări în criteriile de selecţie.
Puteţi proiecta interogarea pentru a solicita mai mult de o singură componentă a
informaţiei.
Exemplu, puteţi proiecta interogarea pentru a solicita două valori (minim și maxim).
Interogarea va regăsi toate datele care se încadrează în domeniul specificat.

C. Interogările tip tabel încrucişat


• Centralizează în formatul unei foi de calcul tabelar datele din unul sau mai multe
tabele.
• Datele rezultate după execuţia unei astfel de interogări sunt prezentate într-un format
potrivit pentru analiza datelor şi crearea de grafice.

D. Interogările de acţiune
Interogările de acţiune creează un nou tabel în baza de date sau realizează modificări
majore ale unui tabel existent.
Există patru tipuri de interogări de acţiune:
1. – interogări de generare a unui nou tabel din datele conţinute în setul de rezultate al
interogării;
2. – interogări de adăugare/ ştergere/ modificare a înregistrărilor într-un tabel (conform
cu o condiţie ce trebuie îndeplinită);
Acţiunile acestora sunt ireversibile asupra datelor din tabelele sursă, iar în cazul
ultimelor trei dintre ele, trebuie urmărită păstrarea integrităţii referenţiale atunci când prin
intermediul lor se acţionează asupra mai multor tabele legate.
Este o interogare care permite modificarea mai multor articole într-o singură operaţie.
1. Interogare de ştergere
2. Interogare de actualizare
3. Interogare de adăugare
Acţiunile interogărilor de acțiune sunt ireversibile asupra datelor din tabelele sursă și
trebuie urmărită păstrarea integrităţii referenţiale atunci când prin intermediul lor se acţionează
asupra mai multor tabele legate.

E. Interogare generatoare de tabele


Creează un nou tabel din toate datele sau numai dintr-o parte a datelor, din una sau mai
multe tabele.
Se pot utiliza pentru:
 Tabelele create pe baza unei interogări se pot exporta în alte baze de date.
 Crearea de rapoarte care să afişeze datele începând cu o dată specificată.
 Crearea unei tabele “istoric” care să conţină toate articolele.
 Creşterea performanţei formularelor şi rapoartelor bazate pe interogări salvate sub
formă de tabel.

Realizarea interogării datelor


Interogarea datelor din tabele se realizează în două moduri:
• în mod grafic prin interfaţa Query By Example (QBE);
• prin limbajul SQL sub formă de blocuri de cerere.
Access oferă trei posibilităţi pentru definirea interogării şi afişarea rezultatelor acesteia.
– Design View – fereastră sub forma unei grile de interogare, în care se defineşte interogarea;
– Datasheet View – fereastră în care se afişează rezultatele interogării;
– SQL View – fereastră în care Access generează automat codul SQL al interogării QBE;
aceeaşi fereastră este folosită şi pentru scrierea directă a unei interogări cu ajutorul
instrucţiunilor SQL.

Limbajul standard SQL


SQL - Structured Query Language a fost conceput ca un limbaj standard de descriere a
datelor şi acces la informaţiile din bazele de date, ulterior dezvoltându-se ca o adevărată
tehnologie dedicată arhitecturilor client-server.
7 versiuni:
-IBM – DB2;
-Institutului Naţional American de Standarde (ANSI);
-Microsoft, Borland;
-consorţiile industriale:
-SAG (The SQL Access Group);
-X/Open.
Comenzi SQL Comenzile principale în cazul limbajului SQL se referă la cele cinci
operaţii de bază care se pot efectua într-un limbaj relaţional:
1. Crearea/ştergerea unei tabele;
2. Inserarea de noi linii intr-o tabelă;
3. Ştergerea unor linii dintr-o tabelă;
4. Modificarea unor linii dintr-o tabelă;
5. Listarea selectivă a datelor din una sau mai multe tabele.

Interogări (queries) SQL


O interogare (query) este un obiect Access care se construieşte în jurul unei instrucţiuni
SQL, SQL (Structured Query Language) fiind un limbaj pentru accesarea bazelor de date
relaţionale.
Interogările scrise în acest limbaj sunt folosite pentru extragerea/ inserarea/ editarea/
stergerea de informaţii din baza de date.
Interogări SQL În Access există două moduri pentru crearea interogărilor:
1. modul de scriere efectivă a cererilor în partea de Queries
2. un mod grafic - Design View.
Interogările SQL sunt în principal de patru tipuri:
I. Extragere de informaţii din baza de date:
SELECT nume_camp1, nume_camp2, … FROM nume_tabel WHERE condiţie ORDER BY
numecamp [ASC|DESC]
II. Adăugare de noi înregistrări într-un tabel:
INSERT INTO tabel (câmp1, câmp1, ...) VALUES (valoare1, valoare2, ...)
III.Modificarea conţinutului înregistrărilor unui tabel:
UPDATE nume_tabel SET nume_câmp1=valoare1, nume_câmp2=valoare2,... WHERE
condiţie
IV.Ştergerea înregistrărilor dintr-un tabel:
DELETE FROM nume_tabel WHERE condiţie
Interogarile (queries) pot fi facute pentru una sau mai multe tabele existente în baza de
date.

Reguli pt expresii
I. Reguli pentru construirea de expresii folosind câmpuri de tip Text sau Memo:
Valoarea căutată în câmpul respectiv se va specifica întotdeauna între ghilimele, „”.
Pentru a se căuta potrivirile exacte se foloseşte operatorul „=”.
Ex. Sa se afiseze toti pacientii cu numele “Geogescu” SELECT * FROM Pacienti WHERE
[NUME] = „GEORGESCU”
Pentru a se căuta potrivirile parţiale se foloseşte:
 operatorul LIKE;
 simbolurile de tip „wildcard”:
- * care înlocuieşte orice şir de caractere, de lungime neprecizată,
- ? care înlocuieşte un singur caracter:
Ex.: Pentru a afişa, din tabelul Pacienti, pacienţii al căror nume începe cu litera G,
interogarea va avea sintaxa:
SELECT * FROM Pacienti WHERE [NUME] LIKE „G*”
Pentru a afişa, din tabelul PACIENTI, pacienţii al căror nume NU începe cu litera G,
interogarea va avea sintaxa:
SELECT * FROM Pacienti WHERE [NUME] NOT LIKE „G*”
Pentru a afişa, din tabelul Pacienti, pacienţii al căror nume se termină cu literele „escu”,
interogarea va avea sintaxa:
SELECT * FROM Pacienti WHERE [NUME] LIKE „*ESCU”
Pentru a afişa, din tabelul Pacienti, pacienţii al căror nume începe cu literele D, E, F sau
G, interogarea va avea sintaxa:
SELECT * FROM Pacienti WHERE [NUME] LIKE „[D-G]*”
Când dorim să indicăm un caracter care aparţine unui şir de caractere, este suficient să
precizăm şirul respectiv între paranteze pătrate [], iar dacă şirul conţine caractere consecutive,
se vor indica doar primul şi ultimul caracter, iar între ele se pune semnul -).
Pentru a se căuta potrivirile multiple, se poate folosi operatorul IN, urmat o listă de şiruri
de caractere, ceea ce înseamnă că vor fi selectate toate înregistrările care conţin în câmpul
specificat unul dintre şirurile de caractere indicate în listă:
Ex: Pentru a afişa, din tabelul PACIENTI, pacienţii care au în anamneză „febra” sau
„cefalee”, interogarea va avea sintaxa:
SELECT * FROM Pacienti WHERE Anamneza IN ( „FEBRA”, „CEFALEE”) sau
SELECT * FROM Pacienti WHERE Anamneza= „FEBRA” OR Anamneza = „CEFALEE”

II. Reguli pentru construirea de expresii folosind câmpuri de tip Number sau
AutoNumber:
Valoarea căutată în câmpul respectiv se va specifica direct, fără ghilimele; Operatorii
disponibili sunt: =, <>, <, <=, >, >=, BETWEEN:
Ex: Pentru a afişa, din tabelul ”Pacienti”, pacienţii cu vârsta de 30 de ani, interogarea
va avea sintaxa:
SELECT * FROM Pacienti WHERE Varsta=30
Pentru a afişa, din tabelul Pacienti, pacienţii cu vârsta peste 30 de ani, interogarea va
avea sintaxa:
SELECT * FROM Pacienti WHERE Varsta >=30
Pentru a afişa, din tabelul Pacienti, pacienţii cu vârsta între 30 şi 35 de ani, interogarea
va avea sintaxa:
SELECT * FROM Pacienti WHERE Varsta BETWEEN 30 AND 35
sau
SELECT * FROM Pacienti WHERE Varsta >= 30 AND Varsta <= 35

III. Reguli pentru construirea de expresii folosind câmpuri de tip Date/Time:


Valoarea căutată în câmpul respectiv se va specifica între semnele # #; Operatorii
disponibili sunt: semnul EGAL şi BETWEEN, la care se pot adăuga funcţiile care utilizează
date calendaristice, respectiv:
 YEAR(dată calendaristică) – returnează anul din data calendaristică introdusă;
 MONTH(dată calendaristică) – returnează luna din data calendaristică introdusă;
 DAY(dată calendaristică) – returnează ziua din data calendaristică introdusă;
 DATE() – returnează data curentă a sistemului;
 NOW() – returnează data şi ora curentă a sistemului
Exemple: Pentru a afişa, din tabelul PERSOANE, pacienţii care s-au născut pe 20 iunie
2000, interogarea va avea sintaxa:
SELECT * FROM PERSOANE WHERE [DATA NASTERII] = #6/20/2000#
Pentru a afişa, din tabelul PERSOANE, pacienţii care s-au născut în luna iunie 2000,
interogarea va avea sintaxa:
SELECT * FROM PERSOANE WHERE [DATA NASTERII] BETWEEN #6/1/2000#
AND #6/30/2000#
Pentru a afişa, din tabelul PERSOANE, pacienţii care s-au născut în anul 2000,
interogarea va avea sintaxa:
SELECT * FROM PERSOANE WHERE YEAR([DATA NASTERII]) = 2000
Pentru a afişa, din tabelul PERSOANE, pacienţii care s-au născut în luna iunie,
indiferent de an, interogarea va avea sintaxa:
SELECT * FROM PERSOANE WHERE MONTH([DATA NASTERII]) = 6
Pentru a afişa, din tabelul PERSOANE, pacienţii care s-au născut într-o zi de 23,
indiferent de lună şi an, interogarea va avea sintaxa:
SELECT * FROM PERSOANE WHERE DAY([DATA NASTERII]) = 23
Pentru a afişa, din tabelul PERSOANE, pacienţii care s-au născut în anul curent,
interogarea va avea sintaxa:
SELECT * FROM PERSOANE WHERE YEAR([DATA NASTERII]) =
YEAR(DATE())

IV. Reguli pentru construirea de expresii folosind câmpuri de tip Yes/No:


Valoarea căutată în câmpul respectiv se va specifica direct; indiferent de formatul
indicat pentru câmp, valorile YES, TRUE şi ON sunt echivalente, la fel ca şi valorile NO,
FALSE şi OFF; Operatorii disponibili sunt = şi <>.
Ex: Pentru a afişa, din tabelul PERSOANE, pacienţii care au asigurare de sănătate,
interogarea va avea sintaxa:
SELECT * FROM PERSOANE WHERE CAS = YES
NU SE FOLOSESC GHILIMELE !!!
Pentru a afişa, din tabelul PERSOANE, pacienţii care nu au asigurare de sănătate,
interogarea va avea sintaxa:
SELECT * FROM PERSOANE WHERE CAS = NO
NU SE FOLOSESC GHILIMELE !!!
Condiţiile de filtrare a înregistrărilor dintr-un tabel pot fi combinate fără nici un fel de
restricţii, şi se pot referi la mai multe câmpuri ale tabelului; de asemenea, ele pot fi combinate
şi cu selectarea anumitor câmpuri din tabel, nefiind obligatorie afişarea tuturor câmpurilor
atunci când selectăm înregistrări dintr-un tabel.
Exemplu: Pentru a afişa, din tabelul PERSOANE, pacienţii de sex feminin şi cu vârsta
peste 30 de ani, interogarea va avea sintaxa:
SELECT * FROM PERSOANE WHERE SEX=”F” AND VARSTA>30
Pentru a afişa, din tabelul PERSOANE, numele pacienţilor de sex feminin şi cu vârsta
peste 30 de ani, interogarea va avea sintaxa:
SELECT [NUME] FROM PERSOANE WHERE SEX=”F” AND VARSTA>30

Ordonarea înregistrărilor
SELECT <listă de câmpuri> FROM <nume tabel> WHERE <condiţie> ORDER BY
<lista de câmpuri> [ASC /DESC]
Exemplu: Pentru a afişa, din tabelul PERSOANE, toţi pacienţii în ordine alfabetică,
interogarea va avea sintaxa:
SELECT * FROM PERSOANE ORDER BY [NUME]
Pentru a afişa, din tabelul PERSOANE, pacienţii cu asigurare de sănătate în ordinea
crescătoare a vârstelor, interogarea va avea sintaxa:
SELECT * FROM PERSOANE WHERE CAS = YES ORDER BY VARSTA
Pentru a afişa, din tabelul PERSOANE, pacienţii cu asigurare de sănătate în ordinea
descrescătoare a vârstelor, interogarea va avea sintaxa:
SELECT * FROM PERSOANE WHERE CAS = YES ORDER BY VARSTA DESC

Copierea informaţiilor
Copierea informaţiilor selectate prin SELECT într-un tabel nou al bazei de date curente
se realizează adăugând o nouă clauză la comanda SELECT, sub forma:
SELECT <listă de câmpuri> INTO <tabel nou> FROM <nume tabel> WHERE
<condiţie> ORDER BY <lista de câmpuri> [ASC /DESC]
Observaţie: Câmpurile autocalculate nu pot fi inserate în tabele noi folosind clauza
INTO !!!
Exemplu: Pentru a copia, din tabelul PERSOANE, numele, data naşterii şi anamneza tuturor
pacienţilor de sex feminin, în ordine crescătoare a vârstelor, într-un alt tabel din baza de date
curentă, denumit FEMEI, interogarea va avea sintaxa:
SELECT [Nume Prenume], [Data Nasterii], Anamneza INTO Femei FROM Persoane
WHERE Sex=”F” ORDER BY Varsta

Realizarea de calcule
Folosirea comenzii SELECT împreună cu funcţii de agregare, pentru realizarea de
calcule într-o bază de date:
Comanda SELECT poate fi folosită indicând, în locul listei de câmpuri, o listă de funcţii
(identice cu cele din comanda Totals, de realizare de calcule pentru conţinutul unui tabel), cu
acelaşi rezultat – de realizare a calculelor respective.
Funcţiile disponibile sunt:
1. COUNT() – determină nr. de înregistrări din tabel care îndeplinesc o anumită condiţie;
2. AVG() – determină valoarea medie dintr-un câmp numeric al unei baze de date;
3. MIN() – determină valoarea minimă dintr-un câmp numeric al unei baze de date;
4. MAX() – determină valoarea maximă dintr-un câmp numeric al unei baze de date;
5. STDEV() – determină deviaţia standard a unui câmp numeric al unei baze de date;
6. VAR() – determină varianţa unui câmp numeric al unei baze de date;
7. SUM() – determină suma valorilor unui câmp numeric al unei baze de date.
Exemplu: Pentru a calcula, în tabelul PERSOANE, numărul pacienţilor de sex feminin,
interogarea va avea sintaxa:
SELECT COUNT( ) FROM PERSOANE WHERE SEX=”F”
Pentru a calcula, în tabelul PERSOANE, vârsta medie, minimă şi maximă ale pacienţilor
de sex feminin, interogarea va avea sintaxa:
SELECT AVG(VARSTA), MIN(VARSTA), MAX(VARSTA) FROM PERSOANE
WHERE SEX=”F”
Pentru a calcula, în tabelul PERSOANE, deviaţia standard, varianţa şi suma vârstelor
pacienţilor de sex feminin, interogarea va avea sintaxa:
SELECT STDEV(VARSTA), VAR(VARSTA), SUM(VARSTA) FROM PERSOANE
WHERE SEX=”F”

RELAŢIONAREA TABELELOR
Bazele de date folosite în practică sunt adesea containere foarte vaste de informaţie –
care conţin sute de mii sau milioane de înregistrări, structurate pe zeci sau sute de câmpuri.
De aceea este esenţială identificarea unor metode cât mai eficiente pentru manevrarea
rapidă a acestor colecţii de date.
Astfel s-a născut conceptul de modelare a unei baze de date cu instrumente de natură
matematică, care constă în specificarea unei structuri logice după care informaţia din aceasta să
fie organizată, în vederea creării, actualizării şi consultării sale cât mai simple şi rapide.
Cele mai cunoscute modele de baze de date sunt:
 modelul ierarhic,
 modelul reţea,
 modelul relaţional
 modelul obiectual
Acest model, creat în 1970 de matematicianul E.F.Codd, se bazează pe noţiunea matematică
de relaţie n-ară şi are în vedere fracţionarea tabelelor de date în tabele mai mici, care să conţină
în general informaţii omogene şi din care să poată fi reconstituit în orice moment tabelul iniţial
fără nici un risc de amestecare a informaţiilor.

Relații între tabele


Pentru a avea acces simultan la datele din mai multe tabele ale aceleiaşi baze de date
este necesar să se definească relaţiile standard dintre aceste tabele.
Relaţiile între tabele se definesc pe baza valorilor unui câmp dintr-o tabelă utilizat drept
cheie primară şi valorilor aceluiaşi câmp dintr-o altă tabelă, unde este utilizat drept cheie
externă.
De exemplu, un tabel cu informaţii despre pacienţii unui spital ar trebui să conţină
următoarele categorii de informaţii:
 datele administrative ale pacientului: date personale de identificare şi date financiare
(situaţia asigurării sale de sănătate);
 datele medicale permanente: înregistrările unor parametri biologici constanţi pe
parcursul vieţii individului şi care nu sunt afectaţi de starea de sănătate sau de boală a acestuia:
rasă, înălţime, grupă de sânge, măsurători antropometrice (ex. măsurători faciale în ortodonţie)
 date medicale variabile: înregistrările unor parametri biologici care sunt afectaţi de
starea de boală a pacientului, fiind chiar un indicator al gravităţii acesteia şi al eficienţei
tratamentului administrat: rezultatele examenului fizic, analize de laborator, imagini
(radiografii, RMN-uri, CT-uri, scintigrame), înregistrări ale semnalelor biologice (EKG, ECG,
etc.). În majoritatea situaţiilor sunt necesare chiar mai multe determinări pentru aceşti
parametri, tocmai pentru a se putea cuantifica evoluţia bolii.
 date privind spitalizarea şi costurile acesteia;
 date privind tratamentul administrat: medicamente, doze, perioade, costuri, furnizori.
Este clar că utilizarea unui singur tabel care să conţină toate aceste informaţii este foarte
dificilă, astfel încât se recomandă structurarea datelor în mai multe tabele, care să conţină
informaţiile similare. Vorbim astfel despre baze de date relaţionale.
Problema majoră care apare este însă aceea de a „pune în legătură”
informaţiile/înregistrările din aceste tabele astfel încât să ştim, fără nici o posibilitate de eroare,
cărei înregistrări din tabelul Pacienţi îi corespunde o înregistrare din tabelul Med_permanente,
din tabelul Examen_fizic şi aşa mai departe.
Această sincronizare se face prin crearea unei relaţii între tabele, două câte două. În
general relaţiile între tabele sunt direcţionate dinspre un tabel, care se va numi primar, către
celălalt, care se va numi legat. Condiţia pentru a putea crea o astfel de relaţie este existenţa unui
câmp comun în cele două tabele pe baza căruia înregistrările vor fi sincronizate, şi care să
identifice aceste înregistrări, denumit cheie de legătură. De obicei, pentru a se asigura
unicitatea, câmpul comun va conţine un cod numeric de identificare – în cazul unor liste de
persoane acesta fiind codul numeric personal (CNP) sau, în spitale, codul foii de observaţie.

Definirea de chei primare


In cazul tabelelor propuse mai sus, Pacienţi şi Med_permanente, câmpul comun este ID,
un cod numeric de identificare a persoanei/pacientului.
Pentru a asigura unicitatea, câmpul ID va fi declarat drept cheie primară (primary key)
– dar numai în situaţiile în care se doreşte ca valorile din acest câmp să apară o singură dată în
tabel, identificând astfel în mod unic înregistrările.
Tipurile de date trebuie sa fie identice!
În cazul câmpului de tip Number proprietatea Field Size a celor două câmpuri trebuie
să fie identică.
Relaţia dintre câmpurile de tip Text trebuie, în principiu, să folosească câmpuri de
aceeaşi lungime.

Tipuri de relatii
 Relația 1-1: Unu la Unu (One-to-One)
 Relația 1-N: Unu la Mai Mulți (One-to-Many)
 Relația N-1: Mai Mulți la Unu (Many-to-One)
 Relația N-N: Mai Mulți la mai Mulți (Many-to-Many)

One-to-One
 unei valori a câmpului cheie principală dintr-o tabelă îi corespunde o singură valoare
din câmpul folosit drept cheie externă din cealaltă tabelă;
 unei înregistrări din primul tabel (stânga) îi corespunde o singură înregistrare din al
doilea tabel (dreapta).
OBS. Tabelele aflate într-o relaţie one-to-one se pot combina într-o singură tabelă, în
care apar toate câmpurile celor două tabele.
Exemplu:Tabelele Pacienţi şi Med_permanente Obs. În acest caz este necesar ca, atât
la nivelul tabelului primar cât şi la nivelul tabelului legat, cheia de legătură (respectiv câmpul
ID) să fie cheie primară – adică în ambele tabele să existe câte o singură înregistrare care să
aibă o valoare dată pentru cheia de legătură.
Relaţia 1 – 1 este cea mai simplă relaţie între două tabele.

One-to-Many
Relaţia 1 – n constituie tipul cel mai răspândit de relaţii;
Unei înregistrări din tabela aflată în partea stângă a relaţiei îi corespund două sau mai
multe înregistrări din tabela aflată în partea dreaptă a relaţiei;
Asocierea se bazează pe un câmp cheie principală unic într-o tabelă şi un câmp cheie
externă din cealaltă tabelă care admite valori duplicate
Exemplu: Tabelele Pacienţi şi Examen_fizic:
1. tabelul Pacienţi este tabel primar, în care cheia de legătură ID este cheie primară,
deoarece identifică în mod unic pacienţii,
2. tabelul Examen_fizic este tabel legat, în care pentru acelaşi pacient, identificat prin cheia
de legătură ID, au fost realizate pe parcursul internării mai multe examinări fizice ale căror
rezultate au fost înregistrate astfel încât cheia de legătură nu poate fi definită drept primară, iar
relaţia are rolul de a asocia fiecărui pacient toate examenele fizice care i-au fost efectuate.

Many-to-One
Relaţia n–1 (many-to-one sau mai mulţi la unul) este opusă relaţiei 1–n.
Pentru a crea relaţia many-to-one este suficient să se inverseze relaţia oneto-many. De
aceea, se spune că relaţia many-to-one este reflexivă, adică relaţia many-to-one este reflexia
relaţiei corespondente one-to-many.
Dacă se selectează o înregistrare din tabela din partea many a relaţiei se poate afla
înregistrarea care corespunde cheii sale externe din tabela din partea one a relaţiei.
Relaţiile n – 1 nu sunt bazate pe câmpuri cheie primară din nici una dintre cele două
tabele.

Many-to-Many
Nici una, una sau mai multe înregistrări din prima tabelă sunt puse în corespondenţă cu
nici una, una sau mai multe înregistrări din a doua tabelă.
În practică, acest tip de relaţie între tabele nu este recomandat şi se reduce la două relaţii
de tip One-to-Many prin introducerea unui tabel auxiliar între cele două tabele, denumit tabel
de joncţiune, astfel încât vom defini câte o relaţie de tip One-to-Many între tabelul primar şi
tabelul de joncţiune, respectiv între tabelul legat şi tabelul de joncţiune.

Definirea relatiilor
Între tabelele existente se pot crea relatii pe baza cheilor primare si externe existente.
In bara de comenzi se alege optiunea RELATIONSHIPS
Tipul relaţiei este stabilit în mod automat, în funcţie de modul în care sunt definite
câmpurile între care se stabileşte relaţia:
• One-to-One dacă ambele câmpuri sunt definite drept chei primare,
• One-to-Many dacă doar câmpul din tabelul primar este definit drept cheie primară.
În continuare se setează proprietăţile relaţiei :
• Opţiunea Enforce Referential Integrity permite activarea unui sistem de verificare a
consistenţei conţinutului celor două tabele aflate în relaţie, respectiv, dacă pentru fiecare
înregistrare din tabelul părinte există o înregistrare corespondentă în tabelul legat şi reciproc;
• Cascade Update Related Fields face ca modificarea conţinutului unui câmp aflat la în
tabelul părinte (ID) să se propage şi în tabelul legat;
• Cascade Delete Related Records propagă ştergerea înregistrărilor dintr-un tabel către
celălalt tabel la înregistrările corespondente.

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