Sunteți pe pagina 1din 10

1.

Câmpul NUME, PRENUME: deoarece va conţine numele şi prenumele persoanelor care urmează
a fi luate în evidenţă, tipul de dată cel mai adecvat este tipul Text.
2. Câmpul DATA NASTERII: tipul de dată adecvat este DateTime.
3. Câmpul VARSTA: va fi de tip Number.
I
Câmpul SEX: Va avea doar două valori posibile, M (pentru masculin) şi F (pentru feminin). Ca
principiu de lucru în proiectarea bazelor de date, se urmăreşte în general ca informaţia să fie
introdusă în maniera cea mai concisă posibil, folosindu-se prescurtări sau coduri numerice ori de
câte ori este posibil – pentru a se micşora la maximum timpul de introducere a datelor şi a se
minimiza riscul de eroare.
Tot din aceleaşi considerente, deşi am fi tentaţi să definim acest câmp de tip Text, eventual cu dimensiunea 1,
un tip de dată încă mai adecvat ar fi „Lookup Wizard”, care elimină complet riscul de eroare, deoarece nu
permite utilizatorului decât să selecteze una dintre cele două valori posibile stabilite în faza de proiectare a
bazei de date, respectiv M şi F.
PASUL 1. Se alege opţiunea „I will type in the values that I want”, care permite specificarea
explicită a valorilor pe care le va conţine lista predefinită (utilizarea celeilalte opţiuni presupune
culegerea acestor valori dintr-un alt tabel, cu nomenclatoare şi este necesară atunci când lista
valorilor posibile este mult mai amplă - de exemplu lista tuturor judeţelor din România sau a
tuturor localităţilor dintr-un judeţ).
PASUL 2. Se precizează manual valorile pe care le va conţine lista predefinită, într-o singură
coloană, pe linii succesive; dacă este nevoie, coloana se poate redimensiona prin ajustarea lăţimii
sale, şi se pot defini de asemenea şi coloane multiple, respectiv tabele de valori dacă este nevoie.
PASUL 3. Se bifează opţiunea „Limit to List” dacă dorim ca numai valorile specificate la pasul 2 să fie admise
în câmpul definit cu tipul „Lookup Wizard”; se finalizează operaţiunea prin utilizarea butonului „Finish”.

5. Câmpurile DOMICILIU, JUDET: se pot defini tot de tip Text sau Lookup Wizard; la DOMICILIU
valorile posibile vor fi U (pentru mediul urban) şi R (pentru mediul rural), iar la JUDET se va
încărca lista tuturor judeţelor din România.
6. Câmpul LOCALITATE: este de tip Text, cu dimensiunea de 25 caractere (spaţiu suficient pentru a
scrie nume de localităţi din România).
7. Câmpul CAS: prin acest câmp dorim să bifăm pacienţii care beneficiază de asigurare de sănătate;
prin urmare, tipul de dată cel mai adecvat este Yes/No.
8. Câmpul ANAMNEZA: În acest câmp va fi descrisă anamneza bolii; deoarece este necesar un
spaţiu mai mare, pentru introducerea unor caracterizări potenţial complexe, tipul de dată cel mai
adecvat va fi Memo. Fiind vorba de un câmp de tip text, cu lungime mare, nu este necesară
specificarea altor proprietăţi suplimentare.
9. Câmpul INALTIME: Se va introduce înălţimea pacienţilor, exprimată în metri – prin urmare,
tipul de dată adecvat va fi Number, şi, pentru a putea lucra cu numere reale, este obligatoriu să
folosim un format adecvat – de exemplu, formatul „Single” în proprietatea „Field Size” şi să
precizăm numărul de cifre cu care dorim să exprimăm partea zecimală a valorilor introduse, în
proprietatea „Decimal Places” – de exemplu 2 cifre (vezi figura).

10. Câmpurile GREUTATE, GLICEMIE, COLESTEROL: se vor introduce valori numerice, întregi,
prin urmare tipul cel mai potrivit de dată este Number – cu formatul “Long Integer” – pentru a putea
introduce valori suficient de mari dacă este cazul.

Pentru câmpuri de tip Text, Memo sau Yes/No: Se calculează funcţia COUNT, adică numărul
înregistrărilor care au valori nevide în câmpul respectiv (de tip Text sau Memo) sau care au
controlul de tip CheckBox bifat (câmpuri de tip Yes/No);
 Pentru câmpuri de tip Number: Se calculează oricare dintre următoarele funcţii disponibile:
SUM (suma valorilor din câmpul respectiv),
AVERAGE (valoarea medie),
COUNT (numărul valorilor nevide),
MAXIMUM (valoarea maximă),
MINIMUM (valoarea minimă),
STANDARD DEVIATION (deviaţia standard),
VARIANCE (varianţa).
 Pentru câmpuri de tip Date/Time: Se calculează oricare dintre funcţiile COUNT, AVERAGE,
MINIMUM sau MAXIMUM.
Calculated: Exemplu: Adăugăm la tabelul construit câmpurile BMI, SUSPECT DE DIABET şi
COLESTEROL MARIT, de tip Calculated, în care vom utiliza următoarele formule de calcul:
1. Câmpul BMI: Va conţine valorile indicelui de masă corporală BMI, calculat pe baza înălţimii şi a
greutăţii pacienţilor cu ajutorul formulei:

BMI = Greutatea (kg) / (Înălţime (m) x Înălţime (m)).


definind câmpul BMI de tip Calculated şi introducând în proprietatea „Expression” formula de calcul a
acestuia, construită pe baza valorilor existente în celelalte câmpuri ale tabelului (vezi figura)
După ce formula a fost editată interactiv pe baza mecanismului descris anterior, pentru a se finaliza se
utilizează butonul OK. Pentru a se verifica efectul utilizării acestui tip de dată, se afişează conţinutul tabelului
prin trecerea din Design View în Datasheet View, cu salvarea modificărilor realizate. La această etapă
programul realizează şi verificarea formulei de calcul pe care am definit-o în câmpul de tip Calculated.

2. Câmpul SUSPECT DIABET: Se va completa cu DA dacă glicemia înregistrată a persoanei este


peste valoarea 110 şi cu NU în caz contrar; poate fi definit ca un câmp de tip text care se
completează manual pentru fiecare pacient în parte, sau poate fi definit tot ca un câmp de tip
Calculated, care se va completa automat prin evaluarea funcţiei din figura de mai jos.
Pentru calcularea rapidă a sa se utilizează funcţia IIF() disponibilă în Access, care are sintaxa:
IIF (expresie, adevărat, fals), cu următoarea semnificaţie:
Expresie: este o expresie matematică, ce va fi evaluată: în cazul nostru am folosit expresia
[glicemie] > 110;
Adevărat: este o valoare sau o expresie care va fi returnată în cazul în care expresia evaluată
iniţial este adevărată: în cazul nostru dorim să afişăm textul DA, care trebuie indicat între ghilimele;
Fals: este o valoare sau o expresie care va fi returnată în cazul în care expresia evaluată iniţial
este falsă: în cazul nostru dorim să afişăm textul NU, care de asemenea trebuie indicat între
ghilimele.
Editarea formulei se poate realiza tot cu modulul „Expression Builder”, prin parcurgerea etapelor
următoare:
1. Încărcarea funcţiei IIF() din lista funcţiilor interne Access în fereastra de editare:
2. Particularizarea expresiei de evaluat prin încărcarea câmpului GLICEMIE din lista de câmpuri ale
tabelului şi editarea condiţiei logice:
3. Particularizarea valorilor returnate de funcţie prin editarea directă a lor:
3. Câmpul COLESTEROL MARIT: Se va completa cu DA dacă colesterolul înregistrat al persoanei
este peste valoarea 200 şi cu NU în caz contrar; cel mai eficient este să definim şi acest câmp tot de
tip Calculated şi să îl calculăm folosind funcţia IIF
SQL
Pentru crearea unei interogări, în secţiunea Create, se activează butonul Query Design. Există două
modalităţi de a crea un Query - interactiv (Design View) şi prin editare directă (SQL View); maniera de lucru pe
care o vom prezenta în continuare este cea de editare directă, textuală, în modul SQL View.
Interogările SQL sunt în principal de patru tipuri:
- Extragere de informaţii din baza de date: folosind comanda SELECT:
SELECT câmpuri FROM table_name WHERE condiţie
- Adăugare de noi înregistrări într-un tabel folosind comanda INSERT:
INSERT INTO tabel (câmp1, câmp1, ...) VALUES (valoare1, valoare2, ...)
- Modificarea conţinutului înregistrărilor unui tabel: folosind comanda UPDATE:
UPDATE tabel SET câmp1=valoare1,câmp2=valoare2,...WHERE condiţie
- Ştergerea înregistrărilor dintr-un tabel: folosind comanda DELETE:
DELETE FROM tabel WHERE condiţie
SELECT <listă de câmpuri> FROM < tabel> .WHERE <condiţie>
ORDER BY <lista de câmpuri> [ASC /DESC],
Exemplu: Pentru a afişa, din tabelul PACIENTI, vârsta, genul şi anamneza pacienţilor, interogarea
va avea sintaxa:
SELECT [VARSTA], [GEN], [ANAMNEZA] FROM PACIENTI
Exemplu: Pentru a afişa, din tabelul PACIENTI, numele şi prenumele, data naşterii şi vârsta
pacienţilor, interogarea va avea sintaxa:
SELECT [NUME, PRENUME], [DATA NASTERII], [VARSTA] FROM PACIENTI
Exemplu: Pentru a afişa, din tabelul PACIENTI, numele şi prenumele pacienţilor, interogarea va
avea sintaxa:
SELECT [NUME, PRENUME] FROM PACIENTI
Exemplu: Pentru a afişa, din tabelul PACIENTI, pacienţii de gen feminin, interogarea va avea
sintaxa:
SELECT * FROM PACIENTI
WHERE [GEN] = „F”
Exemplu: Pentru a afişa, din tabelul PACIENTI, pacienţii din localitatea Iaşi, interogarea va avea
sintaxa:
SELECT * FROM PACIENTI
WHERE [LOCALITATE] = „IASI”
Exemplu: Pentru a afişa, din tabelul PACIENTI, pacienţii cu domiciliu urban din judeţul Vaslui,
interogarea va avea sintaxa: SELECT * FROM PACIENTI
WHERE [DOMICILIU] = „U” AND [JUDET] = „VS”
Exemplu: Pentru a afişa, din tabelul PACIENTI, pacienţii din localităţile Iaşi sau Vaslui, interogarea
va avea sintaxa:
SELECT * FROM PACIENTI
WHERE [LOCALITATE] IN ( „IASI”, „VASLUI”)
Exemplu: Pentru a afişa, din tabelul PACIENTI, pacienţii din judeţele Iaşi, Bacău sau Botoşani,
interogarea va avea sintaxa:
SELECT * FROM PACIENTI
WHERE [JUDET] IN ( „IS”, „BC”, „BT”)
Exemplu: Pentru a afişa, din tabelul PACIENTI, persoanele care prezintă frisoane, interogarea va
avea sintaxa:
SELECT * FROM PACIENTI
WHERE [ANAMNEZA] LIKE „*FRISOANE*”
(deoarece simptomul „frisoane” poate apare oriunde în interiorul câmpului ANAMNEZA).
SELECT * FROM PACIENTI
WHERE [ANAMNEZA] LIKE „FRISOANE*”
Sunt afişaţi pacienţii care în câmpul ANAMNEZA au simptomul „frisoane” în mod obligatoriu la
începutul câmpului.
SELECT * FROM PACIENTI
WHERE [ANAMNEZA] LIKE „*FRISOANE”
Sunt afişaţi pacienţii care în câmpul ANAMNEZA au simptomul „frisoane” în mod obligatoriu la
sfârşitul câmpului, adică ultimul simptom din listă.
SELECT * FROM PACIENTI
WHERE [ANAMNEZA] LIKE „FRISOANE”
Sunt afişaţi pacienţii care în câmpul ANAMNEZA conţin doar simptomul „frisoane”, fapt
improbabil, deoarece în majoritatea cazurilor în anamneză sunt specificate mai multe simptome,
fiind rare situaţiile în care un pacient prezintă un singur simptom.
Exemplu: Pentru a afişa, din tabelul PACIENTI, pacienţii al căror prenume este „Maria”, interogarea
va avea sintaxa:
SELECT * FROM PACIENTI
WHERE [NUME, PRENUME] LIKE „* MARIA*”
Exemplu: 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, PRENUME] LIKE „[D-G]*”
Exemplu: 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
Exemplu: 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
Exemplu: 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
Exemplu: Pentru a afişa, din tabelul PACIENTI, pacienţii de gen feminin cu înălţimea peste 1.70,
interogarea va avea sintaxa:
SELECT * FROM PACIENTI
WHERE [GEN] = „F” AND [INALTIME] >= 1.70
Pentru a afişa, din tabelul PACIENTI, persoanele care s-au născut pe 20 iunie 2000, interogarea va
avea sintaxa:
SELECT * FROM PACIENTI
WHERE [DATA NASTERII] = #6/20/2000#
Exemplu: Pentru a afişa, din tabelul PACIENTI, persoanele care s-au născut în luna iunie 2000,
interogarea va avea sintaxa:
SELECT * FROM PACIENTI
WHERE [DATA NASTERII] BETWEEN #6/1/2000# AND #6/30/2000#
Exemplu: Pentru a afişa, din tabelul PACIENTI, persoanele care s-au născut în anul 2000, interogarea
va avea sintaxa:
SELECT * FROM PACIENTI
WHERE YEAR( [DATA NASTERII] ) = 2000
Exemplu: Pentru a afişa, din tabelul PACIENTI, persoanele care s-au născut în luna iunie, indiferent
de an, interogarea va avea sintaxa:
SELECT * FROM PACIENTI
WHERE MONTH( [DATA NASTERII] ) = 6
Exemplu: Pentru a afişa, din tabelul PACIENTI, persoanele care s-au născut într-o zi de 23,
indiferent de lună şi an, interogarea va avea sintaxa:
SELECT * FROM PACIENTI
WHERE DAY( [DATA NASTERII] ) = 23
Exemplu: Pentru a afişa, din tabelul PACIENTI, persoanele care s-au născut în anul curent,
interogarea va avea sintaxa:
SELECT * FROM PACIENTI
WHERE YEAR( [DATA NASTERII] ) = YEAR(DATE())
Exemplu: Pentru a afişa, din tabelul PACIENTI, persoanele care s-au născut pe 20 iunie 2000,
interogarea poate avea şi sintaxa:
SELECT * FROM PACIENTI
WHERE YEAR( [DATA NASTERII] ) = 2000 AND MONTH( [DATA NASTERII] ) = 6 AND
DAY( [DATA NASTERII] ) = 20
Exemplu: Pentru a afişa, din tabelul PACIENTI, persoanele care au asigurare de sănătate,
interogarea va avea sintaxa:
SELECT * FROM PACIENTI
WHERE [CAS] = YES
Exemplu: Pentru a afişa, din tabelul PACIENTI, persoanele care nu au asigurare de sănătate,
interogarea va avea sintaxa:
SELECT * FROM PACIENTI
WHERE [CAS] = NO
Exemplu: Pentru a afişa, din tabelul PACIENTI, persoanele de gen feminin şi cu vârsta peste 30 de
ani, interogarea va avea sintaxa:
SELECT * FROM PACIENTI
WHERE [GEN] = ”F” AND [VARSTA] > 30
Exemplu: Pentru a afişa, din tabelul PACIENTI, numele pacienţilor de sex feminin şi cu vârsta peste
30 de ani, interogarea va avea sintaxa:
SELECT [NUME, PRENUME] FROM PACIENTI
WHERE [GEN] = ”F” AND [VARSTA] > 30
Exemplu: Pentru a afişa, din tabelul PACIENTI, toţi pacienţii în ordine alfabetică, interogarea va
avea sintaxa:
SELECT * FROM PACIENTI
ORDER BY [NUME, PRENUME]
Exemplu: Pentru a afişa, din tabelul PACIENTI, pacienţii cu asigurare de sănătate în ordinea
crescătoare a vârstelor, interogarea va avea sintaxa:
SELECT * FROM PACIENTI
WHERE [CAS] = YES
ORDER BY [VARSTA]
Exemplu: Pentru a afişa, din tabelul PACIENTI, pacienţii cu asigurare de sănătate în ordinea
descrescătoare a vârstelor, interogarea va avea sintaxa:
SELECT * FROM PACIENTI
WHERE [CAS] = YES
ORDER BY [VARSTA] DESC
Exemplu: Pentru a copia, din tabelul PACIENTI, 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 PACIENTI
WHERE [GEN] = ”F”
ORDER BY [VARSTA]
Exemplu: Pentru a calcula, în tabelul PACIENTI, numărul pacienţilor de sex feminin, interogarea va
avea sintaxa:
SELECT COUNT() FROM PACIENTI
WHERE [GEN] = ”F”
Exemplu: Pentru a calcula, în tabelul PACIENTI, vârsta medie, minimă şi maximă ale pacienţilor de
sex feminin, interogarea va avea sintaxa:
SELECT AVG( [VARSTA] ), MIN( [VARSTA] ), MAX( [VARSTA] ) FROM PACIENTI
WHERE [GEN] = ”F”
Exemplu: Pentru a calcula, în tabelul PACIENTI, 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 PACIENTI
WHERE [GEN] = ”F”
RELATII INTRE TABELE:
Presupunem că avem o bază de date denumită Medicale.accdb, care conţine trei tabele
Între tabelele Pacienti şi Med_permanente vom defini o relaţie de tip One-to-One, iar între tabelele
Pacienti şi Examen_fizic vom defini o relaţie de tip One-to-Many. Din acest motiv, în tabelele
Pacienti şi Med_permanente, cheia de legătură ID este definită drept cheie primară, iar în tabelul
Examen_fizic aceasta este doar cheie de legătură (fără a fi primară).
Pentru definirea unei baze de date noi se foloseşte comanda File / New / Blank Database / Create, iar
primul tabel, Pacienti, se defineşte în mod obişnuit. Câmpul ID se defineşte drept cheie primară
folosind comanda Table Tools / Design / Primary Key (disponibilă direct atunci când tabelul de date
este afişat în mod proiectare (Design View).
Pentru adăugarea celorlalte două tabele în baza de date Medicale se foloseşte din meniul superior
comanda Create / Table, după care tabelele se definesc similar.
Pasul următor îl reprezintă crearea relaţiilor.
Pentru aceasta, mai întâi se închid toate cele trei tabele.
Apoi, din secţiunea Database Tools se selectează comanda Relationships şi se încarcă toate cele trei
tabele în zona de editare a relaţiei, folosind butonul Add (vezi figura). Tabelele sunt vizualizate cu
lista câmpurilor pe care le conţin, câmpurile definite drept chei primare fiind identificate printr-un
simbol distinctiv.
Încărcarea Încărcarea tabelelor bazei de date în zona de editare a relaţiilor şi rezultatul obţinut
Se iniţiază apoi crearea relaţiilor dintre tabele selectându-se cu mouse-ul câmpul comun din tabelul
primar, după care acesta se trage cu mouse-ul (prin drag&drop) peste câmpul
corespunzător din tabelul legat. 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, şi One-to-Many dacă doar câmpul din tabelul primar este definit drept
cheie primară).
Definirea efectivă a relaţiei se realizează folosind butonul Create, după care relaţia este prezentată
grafic între cele două tabele ca în figura de mai jos.
Relaţia de tip One-to-Many se creează în aceeaşi manieră.

Exemplu: Avem tabelele PACIENTI şi MED_PERMANENTE, legate printro relaţie de tip one-to-
one. Dorim să afişăm numele, vârsta, înălţimea şi greutatea persoanelor cu grupa de sânge B;
interogarea va avea sintaxa:
SELECT PACIENTI.[NUME, PRENUME], PACIENTI.[VARSTA], MED_PERMANENTE.
[INALTIME], MED_PERMANENTE.[GREUTATE]
FROM PACIENTI INNER JOIN MED_PERMANENTE
ON PACIENTI.[ID] = MED_PERMANENTE.[ID]
WHERE MED_PERMANENTE.[GRUPA DE SANGE] =”B”
Utilizarea operatorului „IN” pentru potriviri multiple:
Exemplu: Pentru a afişa, din tabelul PACIENTI, pacienţii din localităţile Iaşi sau Vaslui, interogarea
va avea sintaxa:
SELECT * FROM PACIENTI
WHERE [LOCALITATE] IN ( „IASI”, „VASLUI”)
Interogarea poate fi rescrisă eliminând operatorul IN şi utilizând în schimb condiţii multiple:
SELECT * FROM PACIENTI
WHERE [LOCALITATE] = „IASI” OR [LOCALITATE] = „VASLUI”
Exemplu: Pentru a afişa, din tabelul PACIENTI, pacienţii din judeţele Iaşi, Bacău sau Botoşani,
interogarea va avea sintaxa:
SELECT * FROM PACIENTI
WHERE [JUDET] IN ( „IS”, „BC”, „BT”)

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