Sunteți pe pagina 1din 17

Baze de date relationate in Microsoft ACCESS

Generalitati
O baza de date este o colectie de informatii care a
fost organizata intr-un mod anume pentru a usura
manevrarea datelor.
Prezentarea datelor sub forma de tabela unica (ca in
Excel de exemplu) are o serie de dezavantaje:
repetarea unor
informatii in mai multe inregistrari, lucru care poate conduce la
risipa de spatiu, risc
de inconsistenta a datelor, gestiune dificila
structura rigida,
dificil de adaptat unor situatii noi
risc de alterare a informatiilor
Sa luam ca exemplu o baza de date ce contine persoane
cu diferite profesii si din diferite orase. Dupa
cum
observam in figura urmatoare din exemplul facut la laboratorul legat
de Excel, campurile Profesie,
Nume Localitate, Judet si Prefix
Telefonic se pot repeta conducand la dezavantajele enumerate mai sus.

Solutia o reprezinta sistemele de gestiune a


bazelor de date care realizeaza printre alte functii
impartirea
informatiilor in mai multe tabele, legate intre ele prin
relatii.
In loc de a avea ca in Excel o tabela unica, am
impartit baza de date in trei tabele si astfel informatiile nu
se mai
repeta iar datele sunt mai usor si sigur de manevrat:

Impartind baza de date in 3 tabele, nu mai este


nevoie  sa scriem pentru fiecare persoana informatiile
despre
profesii sau despre localitati. Trebuie insa sa avem un identificator
pentru fiecare localitate si
pentru fiecare profesie. Acest
identificator se numeste cheie.
Tabelul Persoane contine sase campuri, tabelul
Profesii contine doua campuri iar tabelul Localitati
contine patru
campuri. Fiecare tabel are o cheie primara. Cheia primara este
un camp care identifica in
mod unic o inregistrare. Tabelul Persoane
contine doua chei straine prin care se "leaga" la
tabelele
Profesii si Localitati (se stabilesc astfel relatiile
dintre tabele). Daca de exemplu avem cheia primara
egala cu 2 pentru
inregistarea "inginer" din tabelul Profesii, ne vom referi
la profesia "inginer" in tabelul
Persoane cu cheia straina
egala cu 2.
Sistemele de gestiune a bazelor de date sunt compuse
din "motor" (partea de program care manipuleaza
datele) , datele (colectia de informatii) si interfata
(partea de program care asigura interfata cu
utilizatorii).
Microsoft ACCESS este un sistem de gestiune a bazelor
de date monolitic (motorul bazei de date si
interfata se afla
pe acelasi sistem de calcul) si lucreaza in principal cu baze de date
de talie si performante
reduse. Daca in Excel baza de date avea
dimeniunea maxima de 165MB, in Access aceasta poate avea
dimensiunea
maxima de 2GB.
O aplicatie Access completa implica
existenta a cel putin urmatoarelor 3 tipuri de obiecte Access
fundamentale:
Tabele
in care sunt inregistrate datele incluse in baza de date;
Formularele
pentru afisarea si introducerea datelor;
Rapoartele
pentru tiparirea in tabele a informatiilor de
detaliere, a informatiilor de sinteza sau a
ambelor tipuri.
 

Majoritatea aplicatiilor
Access folosesc si interogari
pentru filtrarea, sortarea sau combinarea datelor.
Relatiile
definesc legaturi existente intre tabelele
dintr-o baza de date.
Toate obiectele care
formeaza aplicatia sunt stocate intr-un obiect baza de date
care este un fisier unic cu
extensia .mdb.
 

Crearea unei baze


de date
Exista 2 metode de creare a unei baze
de date in Access: folosind utilitarul Database Wizard sau
pornind
de la zero (Blank Access Database). Vom
crea baza noastra de date folosind cea de a doua metoda.
Pentru inceput sa deschidem Microsoft
Access – START ->All Programs->Microsoft
Office-
>Microsoft Office Access 2003.
La deschiderea aplicatiei
Access se alege File->New. Trebuie sa apara o
fereastra ca in figura urmatoare:
 

In fereastra de mai sus in dreapta


faceti click pe Blank Database.
Apare fereastra de dialog
File New Database (in figura de mai jos), se introduce o
denumire pentru baza
de date in campul File name incheindu-se
etapa cu butonul Create.
Baza de date se va salva
in X:\\public_html. Numele bazei de date va fi student.mdb, de
exemplu
FurnicaIon.mdb.
Ca urmare apare fereastra
Database:
 

Tabelele
Un tabel constituie
elementul fundamental al unei baze de date deoarece el contine toate
datele. Tabelele
in Access seamana foarte mult cu foile de calcul
tabelar.
O intrare a bazei de date
ocupa un rand intr-un tabel reprezentand o inregistrare.
Fiecare tip de informatie
este introdus in propria lui coloana:
campul. La intersectia unui camp cu un
rand se afla informatia
corespunzatoare inregistrarii respective –
celula.
 Crearea
tabelelor in modul Design
Acest mod este cel mai
potrivit pentru proiectarea structurii tabelului.
Baza de date
FurnicaIon.mdb cuprinde 3 tabele: Persoane, Profesii, Localitati (am
schimbat putin
structura tabelelor fata de exemplul enuntat la
inceputul laboratorului):
Faceti dublu click pe primul camp
“Create table in Design View”. Ca urmare apare o
fereastra ca mai jos:

In zona Field Name


se stabilesc denumirile campurilor tabelului iar in Data Type
tipul de camp, prin
alegere dintr-o lista derulanta atasata. In
partea de jos a ferestrei sunt vizibile o serie de proprietati ale
campurilor pe care utilizatorul le poate modifica.
De exemplu:
Field size: determina
numarul maxim de caractere ce pot fi stocate intr-un camp
Format: determina modul in
care Access va afisa articolul
Input Mask:
determina masca care se va suprapune datelor introduse
Caption: da titlul care
apare pentru campul respectiv in formulare
 Primul tabel pe care il vom crea
va fi PERSOANE care are in
structura sa 6 campuri.
Primul camp: IDPers
va fi de tip Autonumber
si va fi cheia primara
(Primary Key)
a tabelului.
Campul Autonumber este o valoare numerica care este
introdusa in mod automat de Access la fiecare
noua inregistrare care
se adauga in tabel. Cheile primare
(Primary Keys)
reprezinta o componenta
esentiala a oricarei baze de date
relationale. Orice tabel trebuie sa aiba un camp cu valoare unica
pentru
fiecare inregistrare (campul principal). Atunci cand se
alege un camp cheie primara, trebuie avute in
vedere urmatoarele
aspecte:
Un camp cheie
primara trebuie sa contina date unice;
Access nu va
permite intr-un camp cheie primara articole duplicate sau valori
nule.
Deci pentru a
realiza cheia primara pentru campul IDPers,
faceti click dreapta pe sageata de pe linia
corespunzatoare campului
si selectati Primary Key:
Va trebui ca in dreptul
campului IDPers sa apara o cheie ( ).
Urmatorul camp este
Nume.
El va fi de tip Text. La Field Size scriem 25 de caractere, lungimea
maxima
pe care o va ocupa. Tot asa se defineste si campul Prenume.
Campul AnNastere
va fi de tip number, integer.
Ultimele 2 campuri IDProfesie
si IDLocalitate
vor fi evident de tip Number (chei straine) deoarece
trebuie sa fie
corelate cu campuri Autonumber chei primare din tabelele Profesii si
Localitati.
Tabelul se salveaza cu numele Persoane.
Urmatorul tabel
PROFESII
are 4 campuri: Primul camp IDProfesie
va fi Autonumber cheie primara.
Campurile
NumeProfesie
si Domeniu
vor fi de tip Text cu maxim 25 caractere deci
selectam Text,
Field Size = 25.
Campul
StudiiSuperioare
va fi de tip Yes/No.
Tabelul se salveaza cu
numele Profesii.
 Cel de al
treilea tabel LOCALITATI
contine si el 4 campuri.
Ca mai sus, campul
IDLocalitate
va fi de tip Autonumber si cheie primara.
Campurile
NumeLocalitate
si Judet
vor fi de tip Text, Field Size = 25. Campul CodPostal va fi de tip
Text cu lungimea maxima 6 caractere. Nu l-am declarat Number pentru
ca poate incepe cu cifra 0.
Tabelul se salveaza cu
numele Localitati.
 

Relationarea
tabelelor sau corelatii intre tabele
O corelatie (relationship)
este o asociere (legatura) intre doua campuri similare, aflate in
tabele diferite
(poate exista o corelatie intre doua tabele care
partajeaza aceleasi date.
De exemplu in tabelul
Localitati din baza de date se atribuie fiecarai localitati un numar
(identificator),
atunci se va folosi acel numar si pentru a
identifica localitatea in care locuieste o persoana din tabelul
Persoane.
O relatie intre doua
tabele functioneaza pe baza concordantei datelor din campuri cheie –
de obicei un
camp cu acelasi nume in ambele tabele. Campurile prin
intermediul carora se creeaza legatura reprezinta
cheia primara
(primary key) dintr-un tabel (care furnizeaza un identificator
unic pentru fiecare
inregistrare) si o cheie straina (foreign key)
in al doilea tabel (un camp dintr-un tabel care refera cheia
primara
din alt tabel).
Exista 3 tipuri de
corelatii. Cele mai folosite sunt:
Corelatia 1-n
(one-to-many relationship)
(cea mai folosita) – o inregistrare din tabelul A poate avea
0, 1 sau mai multe inregistrari corespondente in tabelul B, in timp
ce fiecarei inregistrari din tabelul
B ii corespunde cel mult o
inregistrare din tabelul A.
Corelatia n-m
(many-to-many relationship)
in care o inregistrare din tabelul A poate avea 0, 1 au mai
multe
inregistrari corespondente in tabelul A. Acest tip de relatie este
posibil numai prin definirea
unui al treilea tabel (numit tabel de
jonctiune) a carui cheie primara consta din doua campuri –
cheile
straine ale tabelelor A si B.
Pentru a
crea o legatura intre tabele se procedeaza astfel:
1. se deschide fereastra Relationships
selectand din meniul Tools, Relationships.
2. se deschide fereastra Show
Table ca in
imaginea de mai jos:
De aici se aduc toate tabelele intre
care se vor crea legaturi prin selectare si actionarea butonului Add
dupa care fereastra se inchide (Close).
3. Se stabilesc campurile care se
leaga si se trage cu mouseul de la cheia primara la cheia straina
corespunzatoare. Pentru fiecare legatura va aparea figura:

4. Se selecteaza optiunile (cele


3 check box-uri) si se apasa Create.
Relatiile sunt de tip 1-N
(one-to-many). O profesie poate corespunde mai
multor persoane dar o persoana
nu poate avea decat o
singura profesie. Similar, o persoana corespunde unei
singure localitati dar o
localitate poate corespunde la mai
multe persoane.
Tabelul Persoane contine doua chei straine
prin care se "leaga" la tabelele Profesii si Localitati.
Daca de
exemplu avem cheia primara egala cu 3 pentru inregistarea
"medic" din tabelul Profesii, ne vom referi la
profesia
"medic" in tabelul Persoane cu cheia straina egala cu 3.
 In final relationarile trebuie sa arate in
felul urmator:

Formulare pentru introducerea


datelor
Datele pot fi introduse direct in tabele. O
metoda mai buna de introducere a datelor este insa crearea unui
formular. Formularele simplifica vizualizarea, introducerea si
modificarea datelor.
Un
formular se asociaza unui tabel.
Campurile inregistrarilor (structura) au fost stabilite si salvate
intr-un
tabel iar cu ajutorul unui formular se introduc datele.
 

Crearea unui formular


Se pot crea formulare
pornind de la zero sau cu ajutorul unui vrajitor (Wizard). Cu ultima
metoda se
lucreaza mai usor. De altfel se poate crea un formular cu
ajutorul unui vrajitor iar apoi sa particularizam
structura
formularului dupa cum vrem noi.
Se vor crea 3 formulare asociate celor
3 tabele (Forms -> Create Form by using Wizard). Va aparea:

In lista derulanta Tables/Queries se


selecteaza cate un tabel (din cele 3) din care se pot alege campuri
disponibile pentru formularul respectiv. In zona Available Fields
apar campurile care se trec in formular
cu butoanele > (pentru un
camp) si >> (pentru  toate campurile simultan). Se
da click pe Finish
si
formularul este gata. Procedati similar cu celelalte formulare. In
final ar trebui sa aveti:
 
 

Introducerea
datelor intr-un formular
 

Datele pot fi introduse direct in


tabele sau cu ajutorul formularelor. Dumneavoastra veti folosi
formularele. Datele ce trebuiesc completate sunt date in tabelele de
mai jos (Cheia primara Autonumber
nu se completeaza, este generata
automat de calculator):
 
Se vor introduce mai intai 7
inregistrari in formularul Localitati si 7 inregistrari in tabelul
Profesii. Aceste
doua tabele trebuiesc completate primele deoarece
datele vor fi necesare in formularul Persoane. Apoi se
introduc 11
inregistrari in formularul Persoane ca mai sus. Mai introduceti apoi
3 persoane din Bucuresti
(le completati cum vreti voi).
De exemplu persoana Radu Carmen este
economist si locuieste in Bucuresti. De aceea am pus in
inregistrarea
corespunzatoare de la IDProfesie numarul 7 (profesia economist are
cheia 7 in tabelul
Profesii) iar la IDLocalitate am pus 5 (Bucuresti
are cheia 5 in tabelul Localitati).
 

Interogari
Interogarile (Queries)
sunt de fapt intrebari pe care le punem bazei de date. Selectam
Queries-> Create
Query in Desgn View.
Trebuie sa apara o imagine ca mai jos:

 
Vom face mai intai o
interogare prin care sa vedem ce persoane locuiesc in Bucuresti.
Adaugam toate
tabelele. Apoi se adauga campurile Nume, Prenume,
AnNastere din tabelul Persoane, campul
NumeProfesie din tabelul
Profesii si campul NumeLocalitate din tabelul Localitati (prin dublu
click pe
campul din tabelul respectiv sau tragand cu mouseul campul
din tabel in dreptul campului Field din
interogare). Sub
NumeLocalitate in dreptul randului Criteria scriem "Bucuresti".
Inchidem fereastra, suntem
intrebati daca vrem sa o salvam si o vom salva cu numele
QueryBucuresti.
Ca sa vizualizam
interogarea facem dublu click pe QueryBucuresti.

Facem apoi o interogare


prin care sa aflam persoanele care lucreaza in domeniul Sanatate.
Pentru aceasta
adaugam tabelele Persoane si Profesii. Apoi se adauga campurile Nume,
Prenume din
tabelul Persoane si campurile NumeProfesie si Domeniu din
tabelul Profesii. Sub Domeniu in dreptul
randului Criteria scriem
"Sanatate".
Inchidem fereastra, suntem
intrebati daca vrem sa o salvam si o vom salva cu numele
QuerySanatate.
Ca sa vizualizam
interogarea facem dublu click pe QuerySanatate.

Facem apoi o interogare


prin care sa aflam persoanele care lucreaza in domeniul Sanatate si
sunt nascute
dupa anul 1970.
Pentru aceasta
adaugam tabelele Persoane si Profesii. Apoi se adauga campurile Nume,
Prenume,
AnNastere din tabelul Persoane si campurile NumeProfesie si
Domeniu din tabelul Profesii. Sub
Domeniu in dreptul randului
Criteria scriem "Sanatate" iar sub AnNastere scriem >1970.
Inchidem fereastra, suntem
intrebati daca vrem sa o salvam si o vom salva cu numele
QuerySanatate70.
Ca sa vizualizam
interogarea facem dublu click pe QuerySanatate70. Obtinem:

Rapoarte
  Rapoartele
reprezintao modalitate de a vizualiza informatiile din tabele sau
interogari inr-o maniera
sugestiva in functie de cerintele noastre.
  Saluam ca
exemplu Crearea unui raport pentru QuerySanatate. Selectam
Reports->Create report by
using wizard. Selectam QuerySanatate
astfel:

Selectam toate campurile


apasand >> si apoi apasam next. Selectam apoi By Profesii
(pentru a vedea
datele grupate dupa Profesii) si apasam Finish.
Avem astfel raport pentru persoanele ce
lucreaza in sanatate:

Sa cream un raport pentru persoanele


din Bucuresti in ordine alfabetica:

Se apasa Next si se selecteaza by


Localitati:
Se apasa de doua ori Next. Iar apoi se
selecteaza Nume Ascending ca in figura de mai jos dupa care se
apasa
Finish:

Salvati baza de date in directorul X:\public_html


si faceti un link catre ea din pagina web personala
creata la
laboratorul anterior.
 

Tema
Se va realiza o alta baza de date cu 3 tabele.
Scenariul este urmatorul: intr-o multinationala angajatii
companiei
calatoresc in strainatate. Presupunem ca presedintele multinationalei
doreste sa faca o baza de
date cu persoanele (si datele despre ele)
care calatoresc, despre companiile care au emis biletele,
destinatia
etc.
Etape:
1. Proiectarea tabelelor (un numar
cat mai mare de tabele)
Un prim tabel ar fi PERSOANE care sa
contina urmatoarele campuri: Nume, Prenume, An nastere,
Cetatenie,
Telefon, Email etc.
Deoarece o persoana poate calatori de
mai multe ori, aceasta poate cumpara bilete de la companii diferite.
Deci am putea adauga 2 tabele, unul referitor la bilete si unul care
contine date despre companiile care
emit bilete.
Al doilea tabel denumit COMPANII ar
putea contine campurile Nume Companie, Telefon, Orasul, Tara
de unde
se emite biletul etc.
Cel de al treilea tabel denumit BILETE
va contine campurile Pret, Destinatie, Data etc.
 

2. Relationarile

Deja de la punctul 1 s-au prefigurat


tipurile de relatii dintre tabele.
Prima corelatie ar fi ca o persoana
poate avea mai multe bilete (mai multe calatorii). Avem deci o
corelatie de tip 1-N.
Rezulta ca in tabelul PERSOANE trebuie
sa punem un identificator unic IdPersoana, cheie primara
si
de tip Autonumber iar in tabelul BILETE un camp cu aceeasi
denumire IdPersoana care va fi de tip
Number si cheie
straina.
A doua corelatie ar fi: o companie
poate emite mai multe bilete (o alta corelatie de tip one-to-many).
Asadar, in tbelul COMPANII trebuie pus un identificator unic
IdCompanie, cheie primara, Autonumber
corelat cu un camp identic in
tabelul BILETE cheie straina.
Deci tabelele si cu corelatiile lor vor
arata in felul urmator:

3. Introducerea datelor cu
ajutorul formularelor.
Asociati fiecarui tabel un formular si
introduceti 5 inregistrari in tabelul PERSOANE, cel putin 3
inregistrari in tabelul COMPANII (de ex Tarom, Air France, KLM,
NorthWest, Blue Air) si cel putin 10
inregistrari in tabelul BILETE
(o persoana cu cel putin 2 bilete).
ATENTIE
la ordinea introducerii datelor in tabele! Primele tabele care se vor
popula vor fi PERSOANE
si COMPANII (nu conteaza ordinea) si dupa
aceea BILETE. De ce? Pentru ca pentru a completa tabelul
BILETE avem
nevoie de date din tabelele PERSOANE si COMPANII.
 

4. Interogari pentru creat


rapoarte
Vom face doua interogari.
Prima va afisa campurile Data,
Destinatie, NumeCompanie, Pret, Nume, Prenume, Cetatenie, AnNastere
pentru cetatenie=”Romana”. Pentru aceasta apasam
Queries-> Create Query in Design View. Introducem
cele 3 tabele si
campurile respective iar la Cetatenie la Crteria scriem “Romana”
ca in figura de mai jos:

Creati in
mod similar o interogare cu aceleasi campuri dar penru pret<500.
 

5. Se creeaza cate un raport


pentru cele doua interogari anterioare.
Pe langa acestea vom crea un raport
separat cu Nume, Prenume, Destinatie fara a realiza un Query in
prealabil. Pentru aceasta selectam Reports->Create report by using
wizard, introducem cele 3 campuri,
selectam apoi Group by Persoane si
apasam Finish.
Salvati baza de date in directorul X:\public_html
si faceti un link catre ea din pagina web personala
creata la
laboratorul anterior.
 

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