Sunteți pe pagina 1din 5

Clasa a XII-a

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.

Entitati tabele, (CARTE-carti.dbf)


atribute campuri, coloane
UIDcheie primara
relatiecheie straina
business rules constrangeri
Informaiile despre o tabel a bazei de date vor fi prezentate folosind diagramele de tabel:

Numele coloanei Tip Tip cheie Opionalitatea


titlu Varchar2 Pk *
autor Varchar2 Pk *
data_apariiei Date *
Format Varchar2 *
Nr_pagini Number *

Principalele tipuri de date in Oracle sunt:

Tipul de date Descriere Dimensiune Maxim


VARCHAR2 ir de caractere de lungime variabil 4000 bytes
CHAR ir de caractere de lungime fix 2000 bytes
Numr avnd p cifre din care s la
partea zecimal. (s negativ
p (precizia) ntre 1 i 38.
NUMBER(p,s) reprezint numrul de cifre
s (scala) ntre -84 i 127.
semnificative din faa punctului
zecimal)
De la 1 Ianuarie 4712 BC
DATE Dat calendaristic pana la 31 Decembrie,
9999 AD.
Se memoreaz data calendaristic, Fraciunea de secund este
TIMESTAMP ora, minutul, secunda i fraciunea memorat cu o precizie de
de secund la 0 la 9.
INTERVAL YEAR
perioad de timp n ani i luni.
TO MONTH
1
Clasa a XII-a
Baze de date
INTERVAL DAY memoreaz un interval de timp n
TO SECOND zile, ore, minute i secunde
CLOB Character Large Object 4 Gigabytes
BLOB Binary Large Object 4 Gigabytes
Se memoreaz adresa unui fiier
BFILE 4 Gigabytes
binar de pe disc

Maparea relaiilor one-to-many

Fie ERD-ul din figura urmtoare:

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:

Numele coloanei Tip Tip cheie Opionalitatea


Nr_legitimatie Number Pk *
Nume Varchar2 *
Prenume Varchar2 *
Data_nasterii Date *
Adresa Varchar2 *
Telefon Number O
Email Varchar2 O
Cod_echipa Number Fk O

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

Maparea relaiilor one-to-one


Dndu-se dou entiti A i B legate ntre ele printr-o relaie one-to-one, este evident c putem include
cheia primar A n cadrulul tabelei B, dar putem proceda la fel de bine i invers, incluznd cheia
primar a tabelei B n cadrul tabelei A, deoarece fiecrei instane a entitii A i corespunde cel mult o
instan a entitii B, dar i invers, oricrei instane a entitii B i corespunde cel mult o instan a
entitii A.
Pentru relaia din figura I.3.3 de exemplu putem memora pentru fiecare persoan seria de paaport, dar
i invers, pentru fiecare paaport putem memora cnp-ul deintorului.

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.

Maparea relaiilor recursive


Dac vom privi o relaie recursiv ca pe o relaie de tipul one-to-many ntre o entitate i ea nsi,
atunci acest caz se reduce la ceea ce deja am discutat. S exemplificm relaia din figura I.3.4. Relaia
recursiv din aceast figur poate fi privit ca o relaie ntre dou entiti identice, ca n figura I.3.5.

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

Maparea relaiilor barate

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

Figura I.3.6. Maparea relaiilor barate

Tabelul I.3.5. Tabela ENTITI


Numele coloanei Tip Tip cheie Opionalitatea
denumire Varchar2 Pk *

Tabelul I.3.5. Tabela ATRIBUTE


Numele coloanei Tip Tip cheie Opionalitatea
denumire_atribut Varchar2 Pk *
denumire_entitate Varchar2 Pk, Fk *
optionalitate Varchar2 *
S considerm acum un exemplu n care exist mai multe relaii barate, n cascad.

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

Tabelul I.3.6. Tabela A


Numele coloanei Tip cheie Opionalitatea
idA Pk *
C1 *

Tabelul I.3.7. Tabela B

Numele coloanei Tip cheie Opionalitatea


idB Pk *
C2 *
idA Pk, Fk *

Tabelul I.3.8. Tabela C

Numele coloanei Tip cheie Opionalitatea


idC Pk *
C3 *
idA Pk, Fk *
idB Pk, Fk *

Tabelul I.3.9. Tabela D

Numele coloanei Tip cheie Opionalitatea


idD Pk *
C4 *
idA Fk *