Baze de date
Baze de date relaionale
Modelul relaional reprezint cel mai utilizat model de stocare a datelor, n care datele sunt organizate
sub form de tabele ntre care exist diverse legturi.
Procesul maparii
Transformarea modelului conceptual, a ERD-ului, n modelul fizic, adic n baza de date propriu zis,
se numete mapare. Acest proces implic transformarea fiecrui element al ERD-ului.
Prima etap a acestui proces const n crearea tabelelor bazei de date:
Fiecrei entiti i va corespunde cte un tabel. Spre deosebire de entitate, un tabel va avea
numele un substantiv la plural. De exemplu, entitatea ANGAJAT se va transforma n tabela
ANGAJATI.
Fiecare atribut al unei entiti va deveni o coloan a tabelei. Fiecare coloan va memora date de
acelai tip.
Fiecare instan a unei entiti se va transforma ntr-un rnd(sau nregistrare) a tabelului
corespunztor.
Identificatorul unic al entitii devine cheie primar a tabelei. Coloana sau combinaia de
coloane care identific n mod unic toate liniile unui tabel se numete cheie primar.
JUCATOR ECHIPA
# nr_legitimatie
* nume # cod
* prenume joaca * nume
* data_nasterii are * localitate
* adresa * emblema
o telefon * adresa_club
o email
Observm c nu putem memora toi juctorii care joac la o echip n cadrul tabelei ECHIPA,
deoarece ar trebui s introducem o coloan cu valori multiple. Invers ns, putem cu uurin s
memorm, pentru fiecare juctor, echipa la care joac, deoarece acesta nu poate juca dect la o singur
echip.
Astfel, vom memora pentru fiecare juctor codul echipei la care joac. Deci diagrama de tabel
corespunztoare entitii JUCTOR va fi urmtoarea:
Dac relaia pe partea many este opional atunci i coloanele cheii strine vor fi opionale. Ce
nseamn acest lucru? Cum un juctor poate la un moment dat s nu joace la nici o echip, atunci cmpul
cod_echip va rmne necompletat n dreptul lui (va avea valoarea NULL). Dac ns relaia este
obligatorie pe partea many atunci coloanele ce fac parte din cheia strin vor fi obligatorii.
n general, la maparea unei relaii de tip one-to-many, vom introduce n tabela corespunztoare
entitii de pe partea many a relaiei cheia primar a entitii de pe partea one a relaiei. Cmpurile
astfel introduse se vor numi cheie strin (foreign key).
Aadar:
- cheia strin a unei tabele este cheia primar din tabela referint
- cheia strin este ntotdeauna introdus n tabela corespunztoare entitii din partea many a
relaiei.
2
Clasa a XII-a
Baze de date
PERSOANA PASAPORT
# cnp are # seria
* nume * data_eliberarii
* prenume apartine * data_expirarii
* adresa * emitent
o telefon
o email
Figura I.3.3.
Decizia depinde de specificul afacerii modelate. Dac de exemplu ne intereseaz n primul rnd
persoanele i abia apoi datele de pe paapoarte, atunci vom adopta probabil prima variant, a
memorrii seriei de paaport n cadrul tabelei PERSOANE, dac ns baza de date este destinat
evidenei paapoartelor, atunci probabil vom adopta varianta a doua.
Uneori este convenabil s memorm cheia strin n ambele pri ale relaiei, n exemplul nostru
pentru fiecare paaport s memorm cnp-ul persoanei care l deine, dar i pentru fiecare persoan s
memorm seria de paaport.
ANGAJAT ANGAJAT
ANGAJAT
# marca # marca
# marca
* nume * nume
* nume
* prenume conduce * prenume
* prenume
* data_angajarii condus * data_angajarii
* data_angajarii coordonat * adresa de * adresa
* adresa de o telefon o telefon
o telefon
o email o email
o email
conduce
Figura I.3.4. Figura I.3.5.
Aadar vom introduce n cadrul tabelei ANGAJAI, marca efului su. Diagrama de tabela va
arta ca mai jos.
3
Clasa a XII-a
Baze de date
Tabelul I.3.4.
Numele coloanei Tip Tip cheie Opionalitatea
Marca Number Pk *
Nume Varchar2 *
Prenume Varchar2 *
Data_angajarii Date *
Adresa Varchar2 *
Telefon Varchar2 o
Email Varchar2 o
Marca_sef Number Fk o
Relaiile barate sunt mapate ca cheie strin n tabela aflat n partea many a relaiei, la fel ca la
maparea oricrei relaii one-to-many. Bara de pe relaie exprim faptul c acele coloane ce fac parte
din cheia strin vor devenii parte a cheii primare a tabelei din partea many a relaiei barate.
Pentru exemplul din figura I.3.6, cheia primar a tabelei ATRIBUTE va fi format din coloanele
denumire_atribut i denumire_entitate, aceasta din urm fiind de fapt cheie strin n
tabela ATRIBUTE.
ENTITATE ATRIBUT
are
# denumire # denumire
* optionalitate
apartine
A B C D
# idA # idB # idC # idD
*C1 *C2 *C3 *C4
4
Clasa a XII-a
Baze de date
Figura I.3.7. Relaii barate n cascad