Sunteți pe pagina 1din 28

TIC

CURS ACCESS
CLASA a X-a

Prof. GHIORCILĂ CARMEN

1
BAZE DE DATE

Noțiuni introductive
DATA este reprezentarea informatiei în interiorul calculatorului. El nu le întelege, ci doar le prelucrează
prin operații specifice fiecarui tip de dată. Datele pot fi culese din lumea reală pe bază de observații și
măsuratori. Tipul datei determină atât operațiile care se pot executa cu acele date, cât și modul în care sunt
reprezentate pe mediul de memorare. Astfel, fiecare caracter dintr-un șir de caractere va fi reprezentat sub
forma unui grup de 8 cifre binare corespunzatoare codului ASCII asociat caracterului.
INFORMATIA înlatura necunoasterea unui anumit eveniment și are caracter de noutate. Informațiile sunt
interpretate de către oameni și nu sunt accesibile calculatorului.
SISTEMUL DE CALCUL PRELUCREAZA DATE SI NU INFORMATII.
In vederea obținerii informatiilor necesare luarii de decizii corecte omul din societatea modernă se
confruntă cu necesitatea prelucrarii unui volum imens de date care trebuie culese, memorate, organizate,
regăsite și prelucrate în timp util și cu mijloace adecvate.

Principalele modalitati de organizare a datelor sunt: fisiere si baze de date.


Fisierul este o forma de organizare a datelor prelucrate din sistemul real și adaptată la cerintele impuse
de utilizarea sistemului de calcul.
Baza de date este o colecție partajată de date, care conține datele propriu-zise, relațiile logice dintre
acestea, precum și descrierea datelor. O baza de date este proiectată pentru a satisface necesitatile
informationale ale unei organizații.
Bazele de date au un șir de avantaje în raport cu fișierele:
- controlul centralizat al datelor,
- viteza mare de regasire și actualizare a informațiilor,
- mentinerea integritatii datelor,
- sunt compacte,
- sunt flexibile,
- au o redundanță scăzută.

Gestiunea bazelor de date presupune totalitatea operațiilor care se fac asupra datelor din bazele de date.
Pentru gestiunea bazelor de date relationale, există aplicatii specializate numite
Sisteme de Gestiune a Bazelor de Date (SGBD).
❖ Principalele SGBD-uri din lume sunt urmatoarele: ORACLE, MS SQL Server, Informix, ACCESS.
Pentru volume mici și medii de date folosim: ACCESS iar pentru volume medii și mari folosim
ORACLE.
Sistemul de gestiune a bazelor de date (SGBD) este un sistem de programe care permite definirea, crearea
și intretinerea bazei de date, precum și accesul controlat la baza de date.
Un SGBD ofera urmatoarele facilitati:
- Facilitati de descriere a datelor prin intermediul unui limbaj de descriere a datelor DDL
- Facilitati de manipulare prin intermediul unui limbaj de manipulare a datelor DML
- Controlul accesului la baza de date prin:
➢ Sistem de securitate
➢ Sistem de integritate
➢ Sistem de control al concurentei
➢ Sistem de control al refacerii datelor pierdute
➢ Mecanism de vizulaizare
Arhitectura unei baze de date – se impune adoptarea unei arhitecturi în care pot fi identificate urmatoarele
3 nivele de abstractizare:
- Nivel conceptual – este un nivel fundamental deoarece descriere în mod natural și fara ambiguități
sistemul ce urmeaza a fi modelat.
- Nivel extern – vederea utilizatorului asupra bazei de date, design-ul bazei de date perceput de un anumit
utilizator.

2
- Nivel intern – reprezentarea fizică a datelor în baza de date, o colecție de fisiere continând date la care
se adauga diverse structuri auxiliare.
Proiectarea bazei de date – modele de proiectare a bazei de date sunt în general divizate in 3 etape separate:
- Crearea schemei conceptuale – acesta este un design de nivel înalt care descrie datele și relatiile
necesare pentru execuția operațiilor necesare, fiind independent de orice aplicație de baza de date.
Design-ul este unul general.
- Crearea design-ul logic al bazei de date – aici schema conceptuala este transformată în structuri
specifice unui SGBD. Design-ul este rafinat.
- Crearea unui design fizic al bazei de date – aici design-ul logic este transformat într-o structura fizica
eficientă.

MODELUL CONCEPTUAL
Primul pas în realizarea unei aplicații de baze de date este analiza datelor și realizarea unei scheme
conceptuale (model conceptual) al acestuia.
Informațiile necesare realizării modelului conceptual se obțin folosind metode convenționale precum
intervievarea oamenilor din cadrul organizației și studierea documentelor folosite.
Odată obținute aceste informații ele trebuie reprezentate într-o formă convențională care să poată fi
ușor înțeleasă de toată lumea. O astfel de reprezentare este diagrama entități-relații, numită și harta relațiilor,
sau ERD (Entity Relationship Diagram). Aceste scheme sunt un instrument util care ușureză comunicarea
dintre specialiști care proiectează baza de date și programatorii pe de o parte și beneficiarii pe de altă parte.
Caracteristicile ERD sunt:
- Un instrument de proiectare
- Sunt independente de implementare
- Sunt o reprezentare grafică a unui sistem de date
- Oferă un model conceptual de înalt nivel al bazei de date
- Sprijină înțelegerea de către utilizatori a datelor și a relațiilor dintre acestea

Entitați. Instante. Atribute. Identificator unic

ENTITATEA este un lucru, obiect, persoana sau eveniment care are semnificatie pentru afacerea
modelată, despre care trebuie să colectăm și să memoram date. O entitate poate fi un lucru real, tangibil precum
o cladire, o persoană, poate fi o activitate precum o programare sau o operație, sau poate fi o noțiune abstracta
(o comanda, un cont bancar).
Caracteristicile entitațiilor:
- O entitate este reprezentata în ERD (diagrama entitate-relații) printr-un dreptunghi cu colturile
rotunjite;
- Fiecare entitate este denumită în mod unic, nu pot exista două entitati cu același nume;
- Entitățiile sunt reprezentate întotdeauna prin substantive, scrise cu majuscule;
- Pentru fiecare entitate trebuie să se dea o descriere detaliată.
Modul de reprezentare a unei entități:
ELEV

Entitățiile au instante. O INSTANTA este o singură caracteristică, eveniment al unei entități. O entitate are
mai multe instante.
Instantele devin rândurile tabelei create, iar entitățile sunt de fapt tabele care alcatuiesc o bază de date.

Exemplu:
- Avem entitatea ELEV, instantele sunt: Popescu, Vasilescu, Ionescu.
- Avem entitatea MASINA, instantele sunt: Dacia, BMW.

3
Un ATRIBUT este o caracteristică a unei entități sau a unei relații. Fiecare entitate are un anumit
numar de atribute în care sunt păstrate date.
Exemplu: numele, prenumele, data nașterii, adresă, sunt atribute ale entității elev.
Caracteristicile unui atribut:
- In cadrul ERD atributele se scriu imediat sub numele entității cu litere mici;
- Numele unui atribut este unic în cadrul unei entități sau a unei relații;
- Atributele sunt substantive, dar nu orice substantiv este atribut;
- Pentru fiecare atribut trebuie precizată o descriere, împreună cu domeniul de valori pe care le poate lua;
- Un atribut poate fi necunoscut sau neaplicabil, pentru un astfel de atribut se folosește o valoare
convenționala notata cu NULL;
- Un atribut poate fi obligatoriu (*) sau opțional ( ).
ELEV

# nr_matricol

* nume

* prenume

data_dasterii

adresa

telefon
IDENTIFICATOR
e-mail UNIC este un atribut sau un set de atribute care identifica în mod unic o instantă
a unei entități. Acest identificator unic are rolul de a face diferența între două instante ale entității, adică două
rânduri diferite ale unui tabel.
Exemplu: dacă un elev al unei școli este identificat prin nr_matricol, atunci nr_matricol reprezintă un
identificator unic pentru entitatea elev. Pe de alta parte, numele elevului nu poate fi identificator unic deoarece
pot exista mai mulți elevi cu același nume și chiar prenume.
In unele situații identificatorul unic este compus dintr-o combinație de două sau mai multe atribute. De
exemplu combinația dintre titlu, numele autorului și data apariției poate forma unicul identificator al entității
carte. Combinația dintre titlu și nume nu este suficientă, deoarece pot exista de exemplu mai multe volume
scrise de Mihai Eminescu având titlu Poezii, dar apărute la date diferite.
Atributele care fac parte din identificatorul unic al unei entități vor fi precedate de semnul #.

Relații între entități


După ce au fost identificate entitățile și atributele trebuie puse în evidentă relațiile care pot exista între aceste
entități și modul în care comunică între ele. O RELATIE este o asociere, legătura sau conexiune existentă
între entități. Orice relație este bidirecțională, legând două entități sau o entitate cu ea însăși. Exemplu: elevii
studiaza mai multe materii, o materie este studiată de către elevi.
Orice relație este caracterizată de urmatoarele elemente:
- Numele relației
- Opționalitatea relației
- Cardinalitatea/gradul relației
Exemplu: relația existentă între JUCATOR și ECHIPĂ
- Numele relație este: joacă
- Pentru a stabili opționalitatea relației trebuie să raspundem la urmatoarele întrebari:
➢ Un jucator trebuie să joace într-o echipă? – relație obligatorie
➢ Un jucator poate juca într-o echipa? – relație opțională
- Cardinalitatea relatiei este data de numărul de instante ale entității din partea dreaptă a relației care
pot intra în relație cu o instantă a entității din partea stanga a relației. Vom raspunde la următoarea
întrebare: La câte echipe poate juca un jucător? Răspunsuri posibile: una și numai una, sau una sau
mai multe?
➢ Un jucator trebuie/poate juca la o echipa și numai una.
➢ Un jucator trebuie/poate juca la una sau mai multe echipe.
Cea mai realistă varianta a relației dintre jucator și echipa este:

4
Un jucator poate juca la o echipa și numai una.
Relația este bidirecțională: La o echipa trebuie să joace unul sau mai mulți jucatori.
Convenții de reprezentare a relațiilor – în cadrul diagramei relația va fi reprezentată printr-o linie ce unește
două entități. Linia ce uneste două entități este compusă din două segmente distincte, câte unul pentru fiecare
entitate. Tipul segmentului ce pleacă de la o entitate ne va indica optionalitatea relației dintre acestă entitate
și entitatea aflata în cealaltă parte a relației. Dacă acest segment este continu este vorba de o relație obligatorie,
o linie întreruptă indica o relație opțională. Modul în care o linie se termină spre o entitate este importantă.
Dacă se termină printr-o linie simplă însemna ca o instantă și numai una a acestei entități este în relație cu o
instantă a celeilalte entități. Dacă linia se termină cu 3 linii (picior de cioară) înseamnă că mai multe instanțe
ale entității pot corespunde unei instante a celeilalte entități.

joaca
JUCATOR ECHIPA

Un jucator poate juca la o echipa și numai una.


La o echipa trebuie sa joace unul sau mai mulți jucători.

Tipuri de relatii
- Relații one-to-one (1:1) – acest tip de relații este destul de rar întâlnite. Ele pot fi modelate
transformând una din entități în atribut al celeilalte entități.

ÎNTREBARE are RASPUNS CORECT


apartine

PERSOANA este PROFESOR


este

LOC PARCARE ocupat MAȘINĂ


ocupat

- Relatii one-to-many (1:m) – este cel mai des întalnită

EDITURĂ publică CARTE


publicată

POET scrie POEZIE


scrisa de

FORMAȚIE formata din ARTIST


cântă în

FILM memorat pe CD
conține

- Relații many-to-many (m:m) – acest tip de relații apar în prima fază a proiectarii bazei de date, însa
ele trebuie ulterior eliminate.

MEDICAMENT apare pe RETETĂ


5
conține

CURS urmate de STUDENT


înscris la

PROFESOR predă DISCIPLINĂ


predata de

Rezolvarea relației many-to-many


Vom lua ca exemplu relația dintre entitățile elev și disciplină. Știm că la orice disciplină trebuie mai
multe note. Este nevoie să memoram nota elevului. Dacă încercam să introducem atributul notă la entitatea
elev, nu vom ști carei materii corespunde acea notă, întrucat unei instante a entității elev îl corespunde mai
multe instante ale entitatii disciplină. Dacă încercam să memoram nota în cadrul entității disciplină nu vom ști
carui elev îi apartine acea nota.

ELEV
DISCIPLINĂ
studiază
# NrMatricol
# IdDisciplină
* nume studiată de
* denumire
* prenume
* adresa

Rezolvarea unei relatii many-to-many constă în introducerea unei noi entitati numita entitate de intersecție,
pe care o legăm de entitățile originale prin câte o relație one-to-many.

Pașii în rezolvarea unei relații many-to-many:


a) Se găsește entitatea de intersecție - studiază

ELEV
DISCIPLINĂ
# NrMatricol
* nume urmeaza
# IdDisciplină
* prenume urmat de
* denumire
* adresa

STUDIAZĂ

b) Crearea noilor relații


c) Adăugarea de atribute în cadrul entitații de intersecție
d) Stabilirea identificatorului unic pentru entitatea sudiază
e) Identificatorul unic al unei entități preia identificatorul unic din altă entitate cu care este legată, acesta
este reprezentat prin bararea relatiei respective, înspre entitatea care preia identificatorul celeilalte
entitati.

6
ELEV
# NrMatricol DISCIPLINĂ
* nume
* prenume # IdDisciplină
* adresa * denumire

STUDIAZĂ
# data_începerii
* data_finalizarii
* nota

NORMALIZAREA DATELOR
Normalizarea este o tehnică de proiectare a bazelor de date prin care se elimina / se evita anumite
anomali și inconsistente (fără consistență) a datelor. O baza de date bine proiectată nu permite astfel ca datele
să fie redundante, adică aceeași informație să se găsească în locuri diferite sau să memoreze în baza de date,
informații care se pot deduce pe baza altor informații memorate în aceeași baza de date.
Anomalii care pot să apară la o bază de date nenormalizată sunt urmatoarele:
- Anomali la actualizarea datelor
- Anomali de înserare
- Anomali de ștergere

Prima formă normală


O entitate se gasește în prima formă normală dacă și numai dacă:
- - nu există atribute cu valori multiple
- - nu există atribute sau grupuri de atribute care se repetă
Cu alte cuvinte toate atributele sunt atomice și nerepetitive.
Exemplu de atribute atomice:
Data->(Zi, Luna, An)
Adresa->(Strada, Numar, Bloc, Etaj, Scara, Apartament etc.)
NumePrenume->(Nume, Prenume, Initială)
Exemplu de grup repetitiv:
disciplina1, nota1, disciplina2, nota2
Dacă un atribut are valori multiple, sau un grup de atribute se repeată atunci trebuie creată o entitate
suplimentară pe care o legăm la entitatea originala printr-o relatie de 1:m.
Exemplul 1: Prima figura – observăm că sunt multe perechi de disciplina-notă. Să consideram ca anul acesta
cunoastem numarul de discipline studiate de elevi, dar nu știm anul viitor câte discipline vor studia. În plus la o
materie poate avea mai multe note, nu știm numarul acestora. Se pune problema cum vom memora aceste note.
Problema o vom rezolva prin crearea unei entitati în care vom introduce disciplina și nota respectivă. În așa fel,
fiecarui elev îi pot corespunde oricâte note, iar la o disciplină poate avea oricâte note. Singura restricție conform
acestui model este că un elev nu va putea primi în aceeași zi, la aceeași materie mai multe note.

ELEV NOTA
ELEV
# NrMatricol
* nume # cod_disciplina
CORECT → # NrMatricol
* prenume # data
* nume
o disciplina1
* prenume * nota
o nota1
o disciplina2
o nota2 7
Exemplul 2: Prima figură nu respecta prima forma normala: deoarece adresa este un atribut compus din oraș,
stradă, fiecare având semnificatie proprie și putând fi folosit independent în atribute distincte.

ANGAJAT
ANGAJAT # cnp
# cnp * nume
* nume CORECT → * prenume
* prenume * oras
* adresa * strada
o telefon * nr
o email o apartament
• e o scara
m o etaj
a o telefon
i o email
l
A doua formă normală
O entitate se găsește în a doua formă normală dacă și numai dacă se găsește în prima formă normală și în plus
orice atribut care nu face parte din identificatorul unic va depinde de întregul identificator unic nu doar de o
parte a acestuia.

Exemplu 1: Memorăm angajați unui departament într-o entitate ca cea din figura 1. Se obsevă că data_nasterii,
telefon și e-mail depind doar de id_angajatului nu de intregul identificator unic care este o combinatie dintre
atributele id_dep si id_angajat. Aceasta se rezolva prin crearea unei noi entitati ANGAJAT care depinde doar de
id_angajat pe care o legam de entitatea DEPARTAMENT printr-o relatie de 1: m.

DEPARTAMENT
# id_dep ANGAJAT
DEPARTAMENT # id_angajat
# id_angajat
# id_dep * data_nasterii
* data_nasterii CORECT → * denumire * telefon
* telefon
* e-mail * e-mail

Exemplul 2: Identificatorul entității APARTAMENT este compus din combinația a 3 atribute: nr_bloc, strada,
nr_ap. Deci toate atribute entității APARTAMENT care nu fac parte din identificator, trebuie sa depindă de întreg
identificator. Dar atributul cod_postal depinde doar de strada și de nr_bloc, nu și de nr_ap. Asta înseamna ca
atributul cod_postal nu este memorat la locul potrivit.

APARTAMENT
BLOC
# nr_ap
# nr_bloc
*nr_camere
# strada
*etaj
*nr_etaje
*facilitati
*responsabil
*cod_postal
Deoarece depinde doar de combinatia strada și nr_bloc, vom muta atributul cod_postal în entitatea BLOC.

BLOC
APARTAMENT
# nr_bloc
# nr_ap
# strada
*nr_camere
*nr_etaje
*etaj
CORECT → *responsabil
*facilitati
*cod_postal
8
A treia formă normală
O entitate se găsește în a treia formă normală dacă și numai dacă se găsește în a doua formă normală și în
plus nici un atribut care nu este parte a identificatorului unic nu depinde de un alt atribut non-identificator
unic. Adică un atribut trebuie să depindă de identificatorul unic în mod direct.
Exemplu 2:

FACTURA FACTURA
# serie_fac CLIENT
# serie_fac
# nr_fac CORECT → # nr_fac
* data_fac # cui_client
* denumire_client *data_fac
* cui_client
* denumire_client

EXEMPLU DE NORMALIZARE 1
1. Proiectăm o baza de date în care memoram toate operatiile dintr-o clinica privată.
În prima fază putem crea o singura entitate cu urmatoarele informații:

OPERAȚIE
# id_pacient
# cod_operatie
* data_operatie
* nume_pacient
* adresa_pacient
* nume_chirurg
* tel_chirurg
* tratament
* denumire_operatie
* efecte_secundare

Prima formă normală. Este evident ca în general un tratament nu constă doar dintr-un singur medicament,
ci din mai multe medicamente, fiecare cu efectele sale secundare. Vom crea o nouă entitate MEDICAMENT,
pe care o legam de entitatea OPERATIE printr-o relatie de 1:m.

OPERAȚIE
# id_pacient se adm MEDICAMENT
# cod_operatie pentru
* data_operatie # cod
* nume_pacient * denumire
* adresa_pacient * efecte_secundare
* nume_chirurg
* tel_chirurg
* denumire_operatie

Fiecare medicament poate avea mai mute efecte secundare, de aceea vom crea o entitate în care să memoram
efectele secundare ale medicamentelor.

9
OPERAȚIE MEDICAMENT EFECTE_SECUNDARE
# id_pacient se adm are
# cod_operatie # cod # id
pentru pentru
* data_operatie * denumire * descriere
* nume_pacient
* adresa_pacient
* nume_chirurg
* tel_chirurg
PRIMA FORMA NORMALA
* denumire_operatie

A doua formă normală. Pentru a aduce schema anterioara în a doua formă normală trebuie sa rezolvăm două
probleme:
- Numele și adresa pacientului, observăm ca nu depind de întregul identificator (id_pacient și cod_operatie) ci
doar de o parte a acestuia și anume de id_pacient.
- Denumirea operației depinde doar de cod_operație nu de întreg identificator.

PACIENT
# id_pacient
* nume_pacient
* adresa_pacient

sufera

A DOUA FORMA NORMALA


pentru

OPERAȚIE MEDICAMENT EFECTE_SECUNDARE


# cod_operatie
se adm are
* data_operatie # cod # id
pentru pentru
* nume_chirurg * denumire * descriere
* tel_chirurg
* denumire_operatie

A treia formă normală. Observam pe schema anterioară ca tel_chirurg nu depinde de cod_operatie ci doar
de nume_chirurg. Trebuie creată o noua entiate CHIRURG în care vor fi memorate datele despre chirurg.

PACIENT
# id
* nume CHIRURG
* adresa # id
* nume
suferă realizează * adresa
* tel
A TREIA FORMA NORMALA
pentru facută de

OPERAȚIE MEDICAMENT EFECTE_SECUNDARE


# cod_operatie
* data_operatie se adm # cod are # id
* denumire_operatie pentru * denumire pentru * descriere

10
Pentru a realiza design-ul logic al unui SGBD, schema conceptuala va fi transformata într-un design
specific unei anumite aplicatii de baza de date (Access, Oracle).
Prima etapa a acestui proces consta în crearea tabelelor bazei de date. Astfel:
• Fiecare entitate îi va corespunde câte un tabel. Numele tabelelor vor fi substantiv.
• Fiecare atribut al unei entități va deveni o coloana a tabelei. Fiecare coloana va memora date de același
tip.
• Fiecare instanta a unei entități se va transforma într-un rând / înregistrare a tabelului corespunzator.
• Unicul identificator al entitatii devine cheia primara a tabelei. Coloana sau combinația de coloane care
identifica în mod unic toate liniile unui tabel se numeste cheie primară.
Transformarea relatiilor:
▪ Atributele simple ale unei entitati devin coloane în tabel. Fiecare atribut compus devine o coloana în
tabel. De exemplu pentru atributul compus adresa, format din tară, oraș, nr, cod, vom avea cinci coloane.
▪ Atributele repetitive ale unei entitati devin tabele independente ce contin o cheie stăina. Atributul
multivaloare, cheia primară a acestui nou tabel este formată din cheia străină plus unul sau mai multe
coloane adiționale. Exemplu: să presupunem ca o persoana poate avea mai multe numere de telefon,
atunci nr_tel este un atribut multivaloare al entitatii PERSOANA, care va implica apariția unui tabel
TELEFON a carui cheie primara va fi combinatia dintre cod_per și nr_tel.

Maparea relariilor:
o Maparea relatiilor one-to-many
Vom considera ERD-ul urmator:

JUCATOR joaca ECHIPA


#nr_legitimatie #cod_echipa
*nume are *nume
*prenume *localitate
*data_nasterii *emblema
*adresa *adresa_club
*tel
* email

Observăm ca nu putem memora toți jucatorii care joaca la o echipa în cadrul tabelei echipă, deoarece
ar trebui sa introducem o coloana cu valori multiple. Invers însa, se poate să memoram, pentru fiecare
jucator, echipa la care joaca deoarece acesta nu poate juca decat la o singura echipă. Prin maparea unei
relatii de one-to-many, vom introduce în tabela corespunzatoare entitații de pe partea many a relatiei,
cheia primara a entitatii de pe partea one a relație. Campurile astfel introduse se vor numi cheie straină.
Asadar cheia stăina este intotdeauna introdusa în tabela corespunzatoare entitatii din partea many
a relației.
Dacă relația pe partea many este optională atunci și coloanele cheii straine vor fi optionale. Înseamna că
un jucator poate la un moment dat să nu joace la nici o echipă. Câmpul cod_echipa va rămâne necompletat
(NULL). Dacă relația este obligatorie pe partea many, atunci coloanele cheii stăine vor fi obligatorii.

o Maparea relatiilor one-to-one

PERSOANA are PASAPORT


# cnp #seria
*nume *nume
*prenume *data_eliberarii
*data_nasterii
apartine are *data_expirarii
*adresa *emitent
*tel
* email

11
a) Avem două entități A si B legate printr-o relatie one-to-one, putem include cheia primara A în cadrul
tabelei B, dar putem proceda la fel de bine și invers, incluzând cheia primara a tabelei B în cadrul
tabelei A.
b) Uneori este convenabil să memoram cheie stăina în ambele părți ale relației, în exemplul de mai sus,
pentru fiecare pașaport să memorăm CNP-ul persoanei care îl deține, dar și pentru fiecare persoana să
memorăm seria pasaportului.

Modele de baze de date:


- modelul relațional
- modelul rețea
- modelul ierarhic
➢ Modelul relațional - acesta este cel mai folosit model de date folosit astăzi în întreaga lume, fiind un
model de tip entitate-relaţie bazat pe elaborarea unui model conceptual. Modelul relaţional al unei baze de
date permite extinderea bazelor de date la nivelul calculatoarelor personale nemaifiind obligatorie utiliza-
rea echipamentelor costisitoare cerute de minicalculatoare sau de calculatoarele de tip mainfraime.
Modelul a fost dezvoltat în anul 1970 de către Dr. E. F. Codd care lucra pentru firma IBM. Cele mai importante
caracteristici ale modelului relaţional sunt simplitatea, suportul teoretic solid, precum şi cele trei elemente
componente de bază - atribut, entitate, asociere.
Un astfel de model este simplu deoarece el poate fi descris cu ajutorul unui număr mic de concepte care se
referă la relaţii (structuri de date bidimensionale ce au proprietăţi speciale), rânduri (datele aflate în cadrul
relaţiilor), coloane (câmpurile datelor din rândurile corespunzătoare) şi chei (mecanismul de identificare şi
asociere a rândurilor aflate în unul sau mai multe tabele).
Relaționare, cheie primară, cheie externă (străină)
În general definirea unei baze de date presupune precizarea și identificarea următoarelor elemente:
▪ Structuri de date folosite
▪ Operatori care acționeaza asupra structurii de date
▪ Restricțiile care trebuie impuse pentru menținerea corectitudinii datelor, numite restricții de integritate.
În modelul relațional datele sunt reprezentate ca structuri bidimensionale numite relații. O relație este alcatuită
dintr-un numar fix de elemente numite atribute, fiecare dintre acestea putând lua valori dintr-o mulțime finită,
numita domeniu. Exemplu data nașterii este un atribut ce poate primi, drept valori, doar date calendaristice.
Numarul de atribute al unei relații se numește aritatea relației.
Exemplu: salariat (cod_sal, nume, prenume, adresa, data_nasterii, cod_dep)
Acesta este o relatie de aritate 6.
Elementele unei relații se numesc tupluri sau înregistrări. De obicei relațiile sunt reprezentate sub forma unei
tabele, în care fiecare rând reprezintă un tuplu și fiecare coloana reprezintă valorile tuplurilor corespunzatoare
unui atribut.
SALARIAȚI
cod_sal nume prenume adresa Data_nasterii cod_dep
A1 Ionescu Ana 01/01/1970 101
A2 Vasilescu Stefan Str. Nalbei 10.02/1793 102
A3 Popescu Radu Al. Verde 12/12/1970 103
Relațiile ce constituie o bază de date trebuie să satisfacă mai multe condiții:
o Fiecare atribut trebuie să poarte un nume, care este unic în cadrul relației. Modelul relațional nu per-
mite ca două atribute din cadrul aceleași relații să poarte același nume. Pe de alta parte, este posibil
ca două atribute din două relații diferite să poarte același nume.
12
o Fiecare atribut poate avea doar valori atomice, deci, care nu se mai pot descompune din punct de
vedere logic.
o Fiecare tuplu este unic. Nu sunt permise tupluri identice/duplicate. Fiecare tuplu trebuie sa fie unic tot
timpul.
Într-o relație există întotdeauna unul sau mai multe atribute care asigură ca tuplul să rămână unic tot timpul.
Un atribut sau un set de atribute care identifică în mod unic un tuplu se numește cheie candidată.
Pentru fiecare relație se alege din mulțimea cheilor candidate o cheie care se numeste cheie primară a relației.
Eventuale alte chei, diferite de cheia primara, se numesc chei alternative.
Când mai mult de un singur atribut este necesar pentru a crea o cheie, se spune ca avem o cheie compusă.
Concepte de bază –cheia primară (primary key –PK)
▪ O tabelă (relaţie) nu poate să conţintă două sau mai multe rânduri (tupluri) identice.
▪ Fiecare linie a unei tabele trebuie să poată fi identificată într-o manieră clară, prin intermediul unui
singur atribut sau a unui grup de atribute, ce aparţin tabelei –cheia primară a acestuia.
▪ Cheia primară a unui tabel relaţional identifică în mod unic fiecare înregistrare din tabel.
▪ Poate fi un atribut sau un grup de atribute din tabel sau poate fi un atribut cu valorile generate
de către SGBD
▪ Chei primare compuse: nu se poate elimina un atribut parte din cheie, fără a distruge caracteristica de
unicitate a tuplurilor unei tabele;
▪ Nu admite valori nule. Observație: valoarea nulă<>zero
▪ Chei primare compuse: nici un atribut parte din cheie nu poate avea valori nule.

Se numeste cheie stăină un atribut sau o mulțime de atribute ale unei relații R1 care există și într-o altă
relație R2, nu neaparat distinctă de R1, și care formează cheia primara a relației R2. În acest caz, cheia străină
din R1 se spune ca face referintă la cheia primara R2. Valorile pe care le ia cheia stăină, daca nu au valoarea
NULL, trebuie să se regasească printre valorile cheii primare la care face referință.
Exemplu: Daca definim o relatie de aritate 3, dupa cum urmeaza: departamente (cod_dep, denumire, locali-
tate)
DEPARTAMENTE
cod_dep denumire localitate
101 Analiza financiara Bucuresti
102 Contabilitate Constanta
103 Depozit Iasi
Atributul cod_dep din relația salariați devine cheie stăină care face referintă la cheia primară a relatiei de-
partamente. Valoarea cheii straine cod_dep din relatia salariati trebuie sa fie NULL, ori sa coincidă cu o va-
loare a cheii primare la care face referință.
Prin urmare, daca atributul cod_dep din relatia salariați ar fi avut pentru un anumit tuplu valoarea 104, valoare
care nu se regaseste printre valorile cheii primare cod_dep din relația departamente, atunci s-ar fi încalcat o
regulă de integritate.

SALARIATI
cod_sal nume prenume adresa Data_nasterii cod_dep
A1 Ionescu Ana Bucuresti 01/01/1970 101
A2 Vasilescu Stefan Iasi 10.02/1793 102
A3 Popescu Radu Constanta 12/12/1970 103

13
Concepte de bază –cheia externă (foreign key –FK)
▪ atributele sau grupurile de atribute care pun în legătură rândurile unei tabele cu rândurile altei
tabele.
▪ pot exista chei externe care pun în legătură rândurile unei tabele cu ale ei însăşi.
▪ cheia externă este un atribut sau un grup de atribute ale unui tabel definite sub formă de cheie primară
în alt tabel (sau chiar în acelaşi tabel) şi serveşte pentru a defini legăturile dintre tabele.

Reguli de integritate
Regulile de integritate garantează ca datele introduse în baza de date sunt corecte si valide.
Pentru a asigura integritatea datelor, o baza de date trebuie să satisfacă un numar de constrangeri, numite
constrangeri de integritate. Ele se impart în doua clase:
❖ Constrangeri structurale – care trebuie satisfăcute de orice baza de date (specifice modelului relational).
Ele se clasifică în:
o Integitatea entităților – atributul sau grupul de atribute ce îndeplinește rolul de cheie primară,
trebuie să aibă valori unice și nenule.
o Integritatea referențială - valoarea unei chei externe trebuie să fie dintre valorile cheii pri-
mare corespondente sau poate fi nulă.
❖ Constrangeri de comportament – specifice fiecarei baze de date în particular (restricții de integitate defi-
nite de utilizator).
o Integritatea de domeniu – acest tip de reguli permite ca într-o anumită coloana să se introducă
doar valori dintr-un anumit domeniu. De exemplu putem impune ca salariul unui angajat sa fie
cuprins între 4500-5000 ron.
Exemplu de încalcare a integrității referențiale:
ECHIPE JUCATORI

cod_echipa nume localitate ....... nr_legitimatie nume prenume ...... cod_echipa

1 Dinamo Bucuresti 101 Nica Constantin 1

3 Rapid Bucuresti 281 Ilie Rareș 2

10 Steaua Bucuresti 150 Hagi Gheorghe 3

Echipa cu codul 2 NU EXISTA.

14
RECAPITULARE PENTRU TEST
1. Dați două exemple de SGBD-uri.
ACCESS, ORACLE, MS SQL Server

2. Care sunt cele trei etape pentru a proiecta o baza de date?


• Crearea schemei conceptuale
• Crearea design-ul logic al bazei de date
• Crearea unui design fizic al bazei de date

3. Modelul conceptual îl realizăm cu ajutorul unor scheme numite?


ERD sau harta relațiilor

4. Definiti ce este o entitate și reprezentati cu ajutorul ERD entitatea persoana. Stabiliti un atribut care va fi
identificator unic și atribute obligatorii și obționale.
ENTITATEA este un lucru, obiect, persoana sau eveniment care are semnificatie pentru afacerea modelată,
despre care trebuie să colectăm și să memoram date. O entitate poate fi un lucru real, tangibil precum o cladire,
o persoană, poate fi o activitate precum o programare sau o operație, sau poate fi o noțiune abstracta (o
comanda, un cont bancar).

PERSOANA
# cnp
* nume
* prenume
* data_nasterii
* adresa
* tel
o email

5. Se dau două entități: jucător și echipă.


a) Stabiliți pentru fiecare entitate: identificator unic, atribute obligatorii și obționale.
b) Stabiliți numele relației, cardinalitatea și obționalitatea.

JUCATOR joaca ECHIPA


#nr_legitimatie #cod_echipa
*nume *nume
*prenume *localitate
*data_nasterii *emblema
o email o email

15
6. Modificați entitatea elev astfel încât să respecte prima formă normală.

ELEV NOTA
ELEV
# NrMatricol
* nume # disciplina
CORECT → # NrMatricol
* prenume
* nume # data
o disciplina1
* prenume * nota
o nota1
o disciplina2
o nota2

7. Modificați entitatea factura astfel încât să respecte a doua formă normală.

FACTURA
# serie_fac CLIENT
FACTURA
# nr_fac CORECT → # serie_fac
* data_fac # cui_client
* denumire_client # nr_fac
* cui_client
*data_fac
* denumire_client

8. Modificați entitatea factura astfel încât să respecte a treia formă normală.

FACTURA
# serie_fac CLIENT
FACTURA
# nr_fac CORECT → # serie_fac
* data_fac # cui_client
* denumire_client # nr_fac
* cui_client
*data_fac
* denumire_client

9. Care sunt cele trei modele de baze de date. Precizați care este cel mai folosit.
1. modelul relațional
2. modelul rețea
3. modelul ierarhic

16
10. Prezentați două concepte ale cheii primare.
▪ O tabelă (relaţie) nu poate să conţintă două sau mai multe rânduri (tupluri) identice.
▪ Fiecare linie a unei tabele trebuie să poată fi identificată într-o manieră clară, prin intermediul unui
singur atribut sau a unui grup de atribute, ce aparţin tabelei –cheia primară a acestuia.
▪ Cheia primară a unui tabel relaţional identifică în mod unic fiecare înregistrare din tabel.
▪ Poate fi un atribut sau un grup de atribute din tabel sau poate fi un atribut cu valorile generate de către
SGBD
▪ Chei primare compuse: nu se poate elimina un atribut parte din cheie, fără a distruge caracteristica de
unicitate a tuplurilor unei tabele;
▪ Nu admite valori nule. Observație: valoarea nulă<>zero
▪ Chei primare compuse: nici un atribut parte din cheie nu poate avea valori nule.

11. Prezentați două concepte ale cheii externe.


▪ atributele sau grupurile de atribute care pun în legătură rândurile unei tabele cu rândurile altei
tabele.
▪ pot exista chei externe care pun în legătură rândurile unei tabele cu ale ei însăşi.
▪ cheia externă este un atribut sau un grup de atribute ale unui tabel definite sub formă de cheie primară
în alt tabel (sau chiar în acelaşi tabel) şi serveşte pentru a defini legăturile dintre tabele.

12. Completați textul următorul cu cuvintele potrivite.

Regulile de integritate garantează ca datele introduse în baza de date sunt corecte și valide.
Pentru a asigura integritatea datelor, o baza de date trebuie să satisfacă un numar de constrangeri, numite
constrangeri de integritate. Ele se impart în doua clase:
❖ Constrangeri structurale – care trebuie satisfăcute de orice baza de date (specifice modelului relational).
Ele se clasifica in:
o Integitatea entităților – atributul sau grupul de atribute ce îndeplinește rolul de cheie primară,
trebuie să aibă valori unice și nenule.
o Integritatea referențială - valoarea unei chei externe trebuie să fie dintre valorile cheii pri-
mare corespondente sau poate fi nulă.
❖ Constrangeri de comportament – specifice fiecarei baze de date în particular (restricții de integitate defi-
nite de utilizator).
o Integritatea de domeniu – acest tip de reguli permite ca într-o anumită coloana să se introducă
doar valori dintr-un anumit domeniu.

17
13. Care este tipul relatiei

LOC PARCARE ocupat MAȘINĂ


ocupat

• One-to-one
• One-to-many
• Many-to-many

14. Care este tipul relatiei

POET scrie POEZIE


scrisa de

• One-to-one
• One-to-many
• Many-to-many

15. Care este tipul relatiei

FORMAȚIE formata din ARTIST


cântă în

• One-to-one
• One-to-many
• Many-to-many

16. Care este tipul relatiei

MEDICAMENT apare pe RETETĂ


conține

• One-to-one
• One-to-many
• Many-to-many

18
LABORATOR - APLICATIE

ACCESS este un sistem de gestiune a bazelor de date de tip relațional.

O tabelă are mai multe rânduri și coloane. Fiecare coloană din tabelă corespunde unui atribut al entității sau
relației dintre entități, numele atributului devine antetul unei coloane din tabelă. Un rând din tabelă corespunde
unui element al entității și poartă numele de înregistare.
APLICAȚIE – bază de date Pegasus
Un grup de elevi din clasa a X-a R a Liceului Teoretic Ioan Petruș din orașul Otopeni încearcă să-
și ajute colegii din oraș să călătorească și totodată să afle cum se dezvoltă o afacere. S-au gândit să înfiin-
țeze agenția Pegasus pentru cumpărarea biletelor de tren pentru călătorii în țară și în străinătate, oferind
elevilor cu note bune o reducere de preț. Pentru acesta trebuie înregistrate trenurile cu destinația fiecăruia,
ora plecării, ora sosirii, etc. Elevii (clienți) cu numele, prenumele, clasa, rezervările de bilete efectuate, data
plecării și data sosirii, preț. Vom presupune că fiecare tren poate pleca din orașul O spre destinația sa în
fiecare zi a săptămânii și că elevii solicită bilete numai pentru destinația finală a trenului.
 Care este problema care trebuie rezolvată cu ajutorul unei baze de date? Rezervarea biletelor de tren de
către elevi și acordarea de reduceri numai elevilor cu note mari.
 Care sunt entitățile și atributele:
➢ Entitatea tren cu atributele: orașul de destinație, ora de plecare, ora de sosire, distanța și tipul
➢ Entitatea elev cu atributele: nume, prenume, data de naștere, adresa, telefon, școală, clasa, bursier
 Relațiile dintre entități: elevii pot face rezervări la unul sau mai multe trenuri.

Crearea BAZE DE DATE – PEGASUS


Deschideți aplicația Access → Nou → Bază de date necompletată →
Alegeți calea unde doriți să o salvați, numele bazei de date → Creare

1. Crearea tabelei – Trenuri cu cheie primara CodTren

19
CodTren este cheie primara
Codul va fi format din inițiala catego-
riei (personal, accelerat, rapid) urmat
de 4 cifre.
“>” înseamnă majuscule

Avem casetă de selecție

>1 pentru ca o distanta nu poate fi


nulă

TOT TIMPUL SĂ SALVĂM CTRL+S


Pentru a introduce date în baza de date → Vizualizare foaie de date

20
2. Crearea tabelei – EleviDatePersonale cu cheie primara CodElevi

21
3. Crearea tabelei – EleviDateScolare cu cheie primara CodElevi

4. Crearea tabelei – Rezervări cu cheie primara compusă CodTren și CodElevi

22
5. REAȚII TABELE

Între cele două tabele se deplasează (grag and drop) câmpul de cheie primară peste câmpul de cheie secundară

Se selecteză- Impunere integritate referențială → Creare

23
INTEROGĂRI – comenzi care indică aplicației Access ce informații trebuie extrase dintr-o tabelă sau mai
multe tabele.
Există trei tipuri de vizualizare:

Crearea unei interogări:


1. Crearea unei interogări care afișează trenurile care pleacă din orașul Brașov – interogare oraș

urmaror → urmator → terminat


Meniul Pornire → Vizualizare proiect

24
Eliminarea unui filtru: de exemplu să eliminam câmpul Distanța sau Destinație

2. Crearea unei interogări care afișează numele, prenumele, școala în care învață elevii care au re-
zervat bilete de tren către Brașov – interogare elevi.

25
3. Crearea unei interigări care afișează orașele în ordinea alfabetică și ora de sosire în ordinea des-
cendentă.

4. Crearea unei interigări care afișează trenurile internaționale cu un parcurs mai scurt de 2000 km
– Interogare tren inter

5. Crearea unei interigări care afișează suma încasată pentru biletele vândute elevilor – Interogare
suma total.

26
FORMULARE = ferestre-dialog speciale folosite pentru:
 Introducerea, actualizarea și vizualizarea datelor din tabel
 Crearea unei interfețe accesibile pentru utilizatori

RAPOARTE = instrument de prezentare a informației din baza de date prin tipărire la imprimantă.
Raportul oferă utilizatorului un control complet asupra dimensiunii și aspectului fiecărui element.

27
28

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