Вы находитесь на странице: 1из 13

Baze de date distribuite

n cadrul unei aplicaii de rezervri bilete de


avion online

Realizat de:
Adrian-Nicolae Mihaila

Cuprins
1.

Descriere ......................................................................................................................................... 3

2.

Diagrama entitate - relaie ................................................................................................................ 3

3.

Modul de distribuire ........................................................................................................................ 4

4.

Fragmentarea relaiilor ..................................................................................................................... 4


4.1.

Fragmentarea orizontal ........................................................................................................... 4

4.1.1.

Fragmentare orizontal primar ........................................................................................ 5

4.1.2.

Fragmentare orizontal derivat ........................................................................................ 6

4.1.3.

Corectitudinea fragmentrii .............................................................................................. 7

4.2.

Fragmentarea vertical ............................................................................................................. 7

4.2.1.

Corectitudinea fragmentrii ............................................................................................ 10

5.

Schema conceptual ....................................................................................................................... 11

6.

Constrngeri .................................................................................................................................. 12

1. Descriere
Aplicaia de rezervri bilete de avion online va folosi un model de baze de date
distribuite omogene. Principalul obiectiv al acestei aplicaii este integritatea
informaiilor. Se poate realiza integritate fr centralizare, iar acest fapt este posibil
prin tehnologia bazelor de date distribuite.
Bazele de date distribuite sunt colecii de baze de date corelate logic ntre ele
care rezid pe mai multe calculatoare interconectate printr-o retea de comunicaie.
Omogenitatea unei baze de date este reprezent de faptul c administrarea ei se
face din acelai sistem de gestiune. Acest lucru se obine prin divizarea unei baze
de date locale.

2. Diagrama entitate - relaie


UTILIZATORI = { #ID_UTILIZATOR, Nume, Prenume, Tip, Telefon, Email,
ID_AR, ID_ORA}
ARI = { #ID_AR, Nume}
ORAE = { #ID_ORA, Nume, ID_AR}
DESTINAII = { #ID_DESTINAIE, Nume, ID_FURNIZOR,
ID_COMPANIE_AERIAN, ID_ORA_PLECARE, ID_ORA_SOSIRE}
COMPANII_AERIANE = { #ID_COMPANIE_AERIAN, Nume}
BILETE = { #ID_BILET, Titlu, Tip_curs, ID_DESTINAIE, ID_PLAT}
PLI = { #ID_PLAT, Tip, Sum, Moned, ID_UTILIZATOR}
REDUCERI = { #ID_REDUCERE, Period, ID_DESTINAIE}
CUPOANE = { #ID, Perioad, ID_REDUCERE, ID_UTILIZATOR}
FURNIZORI = { #ID_FURNIZOR, Nume}
3

3. Modul de distribuire
Baza de date este distribuit ntr-o reea local format din trei servere i un
SGBD. Serverele sunt instalate pe dou maini virtuale i una local. Toate au
instalat un sistem de operare Windows 7 cu Oracle Database Express Edition 11g.
Pe maina local se afl instalat Oracle Database Product 11g cu Oracle SQL
Developer 4.0.2.

4. Fragmentarea relaiilor
Principalul motiv pentru care se dorete fragmentarea relaiilor este cel al
performanei. Descompunerea relaiei n fragmente, fiecare fiind tratat ca unitate de
distribuire, permite unui numr mare de tranzacii s fie executate n mod
concurent. Fragmentarea relaiilor determin execuia n paralel a cererilor, prin
descompunerea acestora n subcereri ce opereaz asupra fragmentelor.

4.1.

Fragmentarea orizontal

DESTINAIE
id_des
tinaie
1
2
3
4

nume
Bucureti - Roma
Cluj - Berlin
Bucuresti - Paris
Iai - Timioara

id_furni id_companie
zor
_aerian
1
147
1
89
1
147
2
201

id_ora_ple
care
12
20
12
19

id_ora_
sosire
223
331
107
25

DESTINAIE1
id_des
tinaie
1
2
3

nume
Bucureti - Roma
Cluj - Berlin
Bucuresti - Paris

id_furni id_companie
zor
_aerian
1
147
1
89
1
147

id_ora_ple
care
12
20
12

id_ora_
sosire
223
331
107

id_furni id_companie
zor
_aerian
2
201

id_ora_ple
care
19

id_ora_
sosire
25

DESTINAIE2
id_des
tinaie
4

nume
Iai - Timioara

4.1.1. Fragmentare orizontal primar


Fragmentarea orizontal primar a unei relaii se realizeaz prin utilizarea
predicatelor care sunt definite pe relaia respectiv.
Vom considera relaiile DESTINAIE i FURNIZOR cu legtura L ntre
acestea. Se vor obine urmtoarele valori pentru cele dou funcii owner() i
member():
Owner(L) = DESTINAE
Member(L) = FURNIZOR

Pentru relaia DESTINAIE vom considera urmtoarele predicate simple:


p1: id_destinaie < 100
p2: nume <> Iai - Timioara
p3: id_furnizor = 1

Folosind combinaii booleee se pot forma predicate compuse:


m1: id_destinaie < 100 nume Iai Timioara
m2: id_destinaie < 100 nume Iai - Timioara (id_furnizor = 1)
m3: id_destinaie < 100 nume Iai - Timioara id_furnizor = 1
m4: (nume Iai - Timioara) nume Iai - Timioara
ntr-un exemplu mai anterior am divizat orizontal relaie DESTINAIE n
subrelaiile DESTINAIE1 i DESTINAIE2. Folosind notaiile de mai sus,
acestea se pot scrie astfel:
DESTINAIE1 = id_destinaie < 100 (DESTINAIE)
DESTINAIE2 = id_destinaie 100 (DESTINAIE)
4.1.2. Fragmentare orizontal derivat
Fragmentarea orizontal derivat a unei relaii rezult prin aplicarea unor
predicate ce au fost definite pe alte relaii.
n funcie de destinaii putem grupa furnizorii n dou fragmente: furnizori ce
ofer destinaii cu oraul de plecare Bucureti (id_ora_plecare = 12) i destinaii
cu alt ora de plecare. Cele dou fragmente sunt definite astfel:
FURNIZOR1 = FURNIZOR DESTINAIE1
FURNIZOR2 = FURNIZOR DESTINAIE2
unde
DESTINAIE1 = id_ora_plecare = 12 (DESTINAIE)
DESTINAIE2 = id_ora_plecare 12 (DESTINAIE)

4.1.3. Corectitudinea fragmentrii


Completitudinea fragmentrii orizontale primare este bazat pe selecia
predicatelor folosite. Dac mulimea predicatelor selecionate este complet, atunci
fragmentarea rezultat este comeplt. Deoarece algoritmul fragmentrii determin
iniial o mulime complet i minimal de predicate, proprietatea de completitudine
este garantat.
n cazul fragmentrii orizontale derivate, completitudinea este mai dificil de
definit deoarece implic dou relaii. Fie S o relaie a unei legturi i R relaia de
owner. n plus, se consider A atributul de join intre aceste dou relaii. Rezult o
regul de integritate referenial ce asigur c fiecare tuplu din orice fragment al
relaiei member i corespunde un tuplu din relaia owner.
Reconstrucia unei relaii din fragmentele sale este realizat cu ajutorul
operatorului de reuniune n ambele forme ale fragmentrii orizontale.
Pentru fragmentarea orizontal, proprietatea de disjuncie este asigurat dac
predicatele compuse care determin fragmentarea se exclud reciproc.
n cazul fragmentrii derivate, operaiile de semijoin adaug o complexitate
considerabil. Disjuncia poate fi asigurat dac graful ce reprezint diagrama
relaiilor ia legturilor dintre acestea este un graf simplu.

4.2.

Fragmentarea vertical

DESTINAIE
id_des
tinaie
1
2
3
4

nume
Bucureti - Roma
Cluj - Berlin
Bucuresti - Paris
Iai - Timioara

id_furni id_companie
zor
_aerian
1
147
1
89
1
147
2
201
7

id_ora_ple
care
12
20
12
19

id_ora_
sosire
223
331
107
25

DESTINAIE1
id_des
tinaie
1
2
3
4

nume
Bucureti - Roma
Cluj - Berlin
Bucuresti - Paris
Iai - Timioara

DESTINAIE2
id_des
tinaie
1
2
3
4

id_furni id_companie
zor
_aerian
1
147
1
89
1
147
2
201

id_ora_ple
care
12
20
12
19

id_ora_
sosire
223
331
107
25

Vom considera relaia DESTINAIE. Presupunem c pe acast relaie sunt


definite urmtoarele aplicaii, a cror specificaie este dat n SQL:
q1, care gsete numele destinaiilor ce au un ora de plecare specific;
SELECT nume
FROM destinations
WHERE id_ora_plecare = 12;

q2, care afiseaz id-urile destinaiei i companiei aeriene ale tuturor


destinaiilor;
SELECT id_destinaie, id_companie_aerian
FROM destinations;

q3, care gsete numele destinaiilor ce au o companie aerian specific;


SELECT nume
FROM destinations
WHERE id_companie_aerian = 147;

q4, care afiseaz numele destinaiei cu un id specific;


SELECT nume
FROM destinations
WHERE id_destinaie = 2;

Relativ la aceste patru aplicaii se pot defini valorile folosirii atributelor relaiei
DESTINAIE. Vom utiliza urmtoarele notaii pentru atribute:
A1 = id_ora_plecare,
A2 = nume,
A3 = id_companie_aerian,
A4 = id_destinaie.

4.2.1. Corectitudinea fragmentrii


Completituinea este asigurat deoarece fiecare atribut al relaiei se gsete ntrun fragment ce reult n urma partiionrii acesteia. Att timp ct mulimea de
atribute A a unei relaii R este definit prin A= UAi, unde Ai reprezint mulimea de
attribute ale fragmentului Ri, proprietatea de completitudine este asigurat.
Reconstrucia relaiei iniiale este posibil prin aplicarea operatorului de
compunere (dup cheia primar) ntre fragmentele obinute:
R = kRi, oricare Ri
Dac fiecare fragment Ri este complet, atunci operaia de cpunere va reconstrui
relaia initial. Este important ca fiecare fragment Ri s conin cheia primar a
relaiei sau un identificator unic asociat fiecrui tuplu.
n cazul fragmentrii verticale, disjuncia fragmentelor nu este o proprietate la
fel de important ca n cazul fragmentrii orizontale. Pot aprea dou situaii:
dac sunt folosii identificatorii unici atunci fragmentele sunt disjuncte,
deoarece identificatorii care sunt replicai n fiecare fragment sunt entiti
atribuite de ctre sistem, iar gestiunea acestora nu este vizibil utilizatorilor;
Dac atributele ce constituie cheia primar a relaiei sunt replicate n fiecare
fragment, atunci fragmentele nu sunt disjuncte (sunt disjuncte cu exceptia
atributelor cheii primare); dac fragmentele sunt disjuncte, nelund n
considerare atributele cheii primare, atunci se poate considera c acestea
satisfac proprietatea de disjuncie;

10

5. Schema conceptual

11

6. Constrngeri
O baz de date este consistent dac satisface anumite constrngeri, numite
constrngeri de integritate. Constrngerile de integritate trebuie s fie prelucrate de
administratorul bazei de date folosind limbaje de nivel nalt. Acestea pot fi definite
la momentul crerii relaiei sau ulterior, chiar dac relaia conine tupluri.
Se pot distinge trei tipuri de constrngeri de integritate:
predefinite
precompilate
generale.
Constrngerile predefinite sunt bazate pe cuvinte cheie simple. Cu ajutorul
acestora se pot exprima constrngeri de integritate de tipul: not null, unicitate,
cheie primar sau extern i dependee funcionale.
Chei primare:

id_ar PRIMARY KEY IN ari


id_ora PRIMARY KEY IN orae
id_utilizator PRIMARY KEY IN utilizatori
id_destinaie PRIMARY KEY IN destinaii
id_furnizor PRIMARY KEY IN furnizori
id_companie_aerian PRIMARY KEY IN companii aeriene
id_bilet PRIMARY KEY IN bilete
id_plat PRIMARY KEY IN plai
id_reducere PRIMARY KEY IN reduceri
id_cupon PRIMARY KEY IN cupoane

Chei externe:

id_ar IN orae REFERENCES id_ar IN ari


id_ar IN utilizatori REFERENCES id_ar IN ari
id_ora IN utilizatori REFERENCES id_ora IN orae
id_furnizor IN destinaii REFERENCES id_furnizor IN furnizori
12

id_companie_aerian IN destinaii REFERENCES id_companie_aerian IN


companii_aeriene
id_ora_plecare IN destinaii REFERENCES id_ora IN orae
id_ora_sosire IN destinaii REFERENCES id_ora IN orae
id_destinaie IN bilete REFERENCES id_destinaie IN destinaii
id_plat IN bilete REFERENCES id_plat IN pli
id_utilizator IN pli REFERENCES id_utilizator IN utilizatori
id_destinaie IN reduceri REFERENCES id_destinaie IN destinaii
id_reducere IN cupoane REFERENCES id_reducere IN reduceri
id_utilizator IN pli REFERENCES id_utilizator IN utilizatori
Unicitate:

nume UNIQUE IN ri
email UNIQUE IN utilizatori
nume UNIQUE IN companii_aeriene
nume UNIQUE IN furnizori

13

Вам также может понравиться