Академический Документы
Профессиональный Документы
Культура Документы
yu
mbojovic@etf.bg.ac.yu
Upravljanje Transakcijama,
Osnovna literatura
Milo Cvetanovi
Asistent
Nastavnik
Ko?
Jesen 2006.
Miroslav Bojovi
Baze Podataka
Kako?
Ko?
Kako?
ta?
Zato?
Pitanja za danas
Database Applications:
But, currently
P2P filesharing:
Web search:
A Database:
Thought Experiment 2:
Thought Experiment 1:
What if you
wanted to
find out
which actors
donated to
John Kerrys
presidential
campaign?
Try actors
donated to
john kerry in
your favorite
search
engine.
??
Podrka OS za Upravljanje
Podacima (Data Management)
If it isnt published,
it cant be searched
Try musicians
donated to john
kerry in your favorite
search engine.
Data independence
Efficient data access
Data integrity & security
Data administration
Concurrent access, crash recovery
Reduced application development time
So why not use them always?
Korisnici
(naziva se ANSI/SPARC
arhitektura)
DB
Physical Schema
Security problems
Example: Two people reading a balance and updating it at the same time
A.
B.
C.
D.
E.
Zato?
Ortogonalna dimenzija:
ema i Instanca
View 2
View 3
DB
Physical Schema
Conceptual Schema
View 1
Zato?
Nezavisnost Podataka
(Data Independence)
Zato?
Zato?
C. The topic is intellectually rich.
Oracle administrators
IBM DB2 engine developers
Zato?
data modeling
representing information
Zato?
Course_info(cid:string,enrollment:integer)
Physical schema:
Podataka (Data)
Odnosa izmeu podataka (Data relationships)
Znaenja podataka (Data semantics)
Ogranienja (Data constraints)
Network model
Hierarchical model
Relational model
Entity-Relationship data model (mainly for
database design)
Object-based data models (Object-oriented and
Object-relational)
Semistructured data model (XML)
Other older models:
account (
account-number char(10),
balance
integer)
Centralized
Client-server
Parallel (multi-processor)
Distributed
Database Architecture
Database schema
Data Storage and Definition language
Specifies the storage structure and access methods used
Integrity constraints
Domain constraints
Referential integrity (references constraint in SQL)
Assertions
Authorization
Database Users
select account.balance
from depositor, account
where depositor.customer_id = 192-83-7465 and
depositor.account_number = account.account_number
select customer.customer_name
from customer
where customer.customer_id = 192-83-7465
SQL
Transaction Management
Schema definition
Storage structure and access method definition
Schema and physical organization modification
Granting user authority to access the database
Specifying integrity constraints
Acting as liaison with users
Monitoring performance and responding to changes in
requirements
Database Administrator
Overall
System
Structure
Storage access
File organization
Indexing and hashing
Issues:
Storage Management
Relational
Summary (part 1)
Summary, cont.
DB application programmers
Skup Entiteta,
Veza izmeu entiteta.
(Entity-Relationship Model)
Model Entiteti-Veze
BAZE PODATAKA
loan_
number
Definicija
Ogranienja
Dijagram E-V
Odluke u Dizajnu
Skupovi Slabih Entiteta
Proirenje modela E-V
Dizajn Bankarskog Sistema
Model Entiteti-Veze
amount
Primer:
(Hayes, A-102) depositor
Primer:
Customer=(customer_id, customer_name, customer_street, customer_city)
loan = (loan_number, amount )
Atributi
Jedan-u-vie
Jedan-u-jedan
Kompozitni Atributi
Vie-u-vie
depositor
Primedba: to znai da par skupova entiteta moe imati
najvie jednu vezu u datom skupu veza.
Vie-u-jedan
Dijagram E-V
Klju
Uloge
Veza Vie-u-Vie
Veza Jedan-u-Vie
Veza Vie-u-Jedan
Ogranienja kardinalnosti na
ternarnim vezama
Alternativna notacija
kardinalnosti veza
Odluke u Dizajnu
Konvertovanje
ne-binarnih u binarne veze (2)
Primer: works_on
2. dodati (ei , ai ) u RA
4. dodati (ei , ci ) u RC
umesto kao atribut veze, ako svaki raun moe pripadati samo
jednom klijentu
Konvertovanje
ne-binarnih u binarne veze (1)
payment
Generalizacija
Specijalizacija
Specializacija i Generalizacija
Specijalizacija (Primer)
Agregacija (1)
Overlapping
Disjoint
korisniki-definisana
uslovom-definisana
Ogranienja dizajna za
Specializaciju i Generalizaciju (1)
Agregacija (2)
Ogranienja dizajna za
Specializaciju i Generalizaciju (2)
Agregacija (3)
Korienje atributa ili skupa entiteta za
predstavljanje objekta.
Da li je realno okruenje bolje predstavljeno
skupom entiteta ili skupom veza.
Korienje ternarne veze ili para binarnih veza.
Korienje skupa jakih ili slabih entiteta.
Korienje specijalizacije/generalizacije doprinosi
modularnosti dizajna.
Korienje agregacije tretiranje agregiranog skupa
entiteta kao celine bez razmatranja detalja njegove
interne strukture.
relacija na
Atributi
Relacioni Model
(Relational Model)
Relacioni Model
BAZE PODATAKA
proizvoljnim redosledom)
Relacije su neureene
customer (Customer_schema)
Primer:
r (R ) je relacija sa emom R
customer_street,
customer_city)
Relaciona ema
relacija customer
Main
North
North
Park
Harrison
Rye
Rye
Pittsfield
customer_city
torke
(ili vrste)
koji raun
customer : sadri informacije o klijentima
Relaciona Baza
Jones
Smith
Curry
Lindsay
customer_name customer_street
atributi
(ili kolone)
Relaciona Instanca
imena.
{customer_name}
Security Dizajn
Fiziki Dizajn
konzistentnost, normalizacija
Poboljanja ema
Logiki Dizajn
Konceptualni Dizajn
Specifikacija Zahteva
Klju
Neka je K R
K je superklju R ako dve torke ne mogu imati
iste vrednosti za K u relaciji r(R)
Primer:
payment =
(loan_number, payment_number, payment_date, payment_amount)
Konceptualni dizajn
ssn
Employees
name
lot
131-24-3650 Smethurst 35
22
231-31-5368 Smiley
lot
48
name
123-22-3666 Attishoo
ssn
opisne atribute
person
customer
employee
Metod 1:
attributes
manages
person
customer
employee
schema
Metod 2:
Relaciona algebra
Relacioni raun sa torkama (Tuple relational calculus)
Relacioni raun sa domenima (Domain relational calculus)
isti jezici:
Proceduralni
Ne-proceduralni, ili deklarativni
Upitni jezici
(Query Languages)
Upitni Jezici
BAZE PODATAKA
Projekcija (project):
Unija (union):
Razlika (set difference):
Dekartov Proizvod (Cartesian product): x
Preimenovanje (rename):
Selekcija (select):
Proceduralni jezik
est osnovnih operacija
Relaciona Algebra
Relaciona Algebra
Relacioni Raun
SQL
Upitni Jezici
23 10
23 10
12
A,C (r)
Relation
r:
Projekcija (primer)
Relacija
Selekcija (primer)
1
1
2
D
E
E
40
30
20
10
C
1
1
2
D
E
E
V branch_name=Perryridge (account)
A1 , A2 ,, Ak
(r)
account
Notacija:
Operacija Projekcije
Primer:
p je predikat selekcije
Definicija:
Vp(r) = {t | t r and p(t)}
Notacija: V p(r)
Operacija Selekcije
r, s:
r s:
Relacije r, s:
Razlika (primer)
r s:
Relacije
Unija (primer)
2
1
D
E
B
1
2
1
E
r
rs
r s = {t | t r i t s}
Notacija:
Definicija:
Operacija Razlike
Notacija: r s
Definicija:
r s = {t | t r ili t s}
Da bi operacija r s bila validna:
1. r, s moraju imati isti broj atributa
2. Domeni atributa moraju biti kompatibilni
Primer: nai sve klijente koji imaju bilo raun bilo
kredit
Operacija Unije
s:
1
1
1
1
2
2
2
2
D
D
D
D
E
E
E
E
D
E
E
J
D
E
E
J
10
10
20
10
10
10
20
10
a
a
b
b
a
a
b
b
10
10
20
10
D
E
E
J
s
C
a
a
b
b
VA=C(r x s)
1
2
2
D
E
E
1
1
1
1
2
2
2
2
D
D
D
D
E
E
E
E
10
10
20
10
10
10
20
10
D 10
E 10
E 20
D
E
E
J
D
E
E
J
a
a
b
a
a
b
b
a
a
b
b
r x s:
Relacije r,
1 ,A2
,..., A n )
(E )
vraa rezultat izraza E pod imenom X, sa
atributima preimenovanim u A1 , A2 , ., An .
U x(A
Operacija Preimenovanja
Notacija
rxs
Definicija:
r x s = {t q | t r i q s}
Primeri (2)
Banka (primer)
customer_name(depositor)
Primeri (3)
Primeri (1)
Query 2
Query 1
E1 x E2
Vp (E1), P je predikat na atributima iz E1
s (E1), S je lista nekih atributa iz E1
E1 E2
E1 E2
Konstantne relacije
customer_name(Vloan.loan_number = borrower.loan_number (
Primeri (4)
Dodatne Operacije
Strategy:
Primeri (5)
Notacija:
r s
Neka su r i s relacije na emama R i S respektivno.
Tada je, r s relacija na emi R S koja se
dobija na sledei nain:
Prirodno Spajanje
Notacija:
rs
Definicija:
rs={t|tr its}
Pretpostavka:
Presek
r, s:
B
2
B
1
2
4
1
2
D
E
J
D
G
D
J
E
J
E
Relacije r, s:
1
2
1
D
D
E
A
D
E
2
3
a
a
b
a
b
D
D
D
D
G
1
1
1
1
2
D
D
J
J
E
a
a
a
a
b
D
J
D
J
G
a
a
a
b
b
1
3
1
2
3
D
E
J
G
rs
Relacije
Presek (primer)
rys
r y s:
Relacije r, s:
a
a
a
a
a
a
a
a
D
D
D
E
E
J
J
J
a
a
D
J
a
a
b
a
b
a
b
b
D
J
J
J
J
J
J
E
J
J
1
1
1
1
3
1
1
1
Deljenje (primer 2)
a
b
1
1
r y s = { t | t R-S (r) u s ( tu r ) }
R S = (A1, , Am)
S = (B1, , Bn)
R = (A1, , Am , B1, , Bn )
Notacija:
Za upite koji ukljuuju frazu za sve.
Deljenje
1
2
3
1
1
1
3
4
6
1
2
D
D
D
E
J
G
G
G
E
r
Neka je q = r y s
Tada je q najvea relacija koja zadovoljava q x s r
Osobina
r y s:
Relacije r, s:
Deljenje (primer 1)
account))
account ))
Query 2
Query 1
Primeri (2)
niza dodela
zavrno sa izrazom ija je vrednost rezultat upita.
Operacija Dodele
loan )
Primeri (3)
Primeri (1)
5. Skup kvantifikatora:
4. Implikacija ():
x y, ako je x istinito, tada je i y istinito
x y {x v y
SQL
Relacioni Raun
Relaciona Algebra
Upitni Jezici
s [amount ] ! 1200)}
Primeri (1)
Primeri (4)
Primeri (2)
Primeri (3)
{ c ! | s,n ( c, s, n ! customer)
{ c ! | l ( c, l ! borrower
b,a ( l, b, a ! loan b = Perryridge))
a ( c, a ! depositor
b,n ( a, b, n ! account b = Perryridge))}
Primeri (2)
Izraz:
{ x1, x2, , xn ! | P (x1, x2, , xn )}
je siguran ako vai sledee:
b = Perryridge))}
over $1200
Primeri (1)
Definicija Podataka
Osnovna Struktura Upita
Skupovne Operacije
Agregatne Funkcije
Null Vrednosti
Ugnjedeni Upiti
Kompleksni Upiti
Pogledi
Modifikacije Baze
Spojene Relacije**
Ogranienja Integriteta
eme relacija.
SQL
Relaciona Algebra
Relacioni Raun
Upitni Jezici
SQL-86
SQL-89
SQL-92
SQL:1999 (usaglaen sa Y2K)
SQL:2003
table
Primer:
create table branch
(branch_name char(15) not null,
branch_city
char(30),
assets
integer)
r je ime relacije
Ai je ime atributa u emi relacije r
Di je tip podatka vrednosti u domenu atributa Ai
Komanda create
Istorijat
not null
primary key (A1, ..., An )
table
table
select loan_number
from loan
where amount between 90000 and 100000
Promenljive Torki
Komanda from
amount
Operacija preimenovanja
avg:
min:
max:
sum:
count:
srednju vrednost
minimalnu vrednost
maximalnu vrednost
sumu vrednosti
broj vrednosti
Agregatne Funkcije
Skupovne Operacije
select loan_number
from loan
where amount is null
Rezultat bilo kojeg aritmetikog izraza sa null je null
ili
null = null
OR:
select T.customer_name
from depositor as T
where unique (
select R.customer_name
from account, depositor as R
where T.customer_name = R.customer_name and
Ugnjedeni Upiti
Pogledi (1)
select T.customer_name
from depositor as T
where not unique (
select R.customer_name
from account, depositor as R
where T.customer_name = R.customer_name and
Primer
Pogledi (2)
Ekspanzija Pogleda
select customer_name
from all_customer
where branch_name = Perryridge
Pogledi (Primer)
od v1 ka v2
Brisanje - Problem
update account
set balance = balance
1.05
where balance d 10000
Redosled je vaan
Bolje je koristiti case strukturu
stanjem
create view v as
select branch_name from account
update account
set balance = case
when balance <= 10000 then
balance *1.05
else balance * 1.06
end
select customer_name
from (depositor natural full outer join borrower )
where account_number is null or loan_number is null
loan.loan_number = borrower.loan_number
loan.loan_number = borrower.loan_number
6.3
6.1
BAZE PODATAKA
6.4
6.2
null vrednosti.
6.7
account
Spajanje ema?
6.5
6.6
6.8
loan_number o amount
Kako Dekomponovati?
Spajanje ema?
Identifikatori
Skup
6.11
6.12
6.10
redundantnost podataka
nedeljivim celinama
6.9
4
5
7
ne postoji D K, D o R
a da ne vai:
6.15
amount o customer_name
loan_number o amount
K o R, i
customer_name o customer_name
6.16
Primer:
relacije
6.14
1
1
3
DoE
vai na R ako i samo ako su, u svakoj legalnoj relaciji r(R), dve
torke t1 i t2 koje su jednake na atributima D, takoe jednake i na
atributima E,
Funkcionalna zavisnost
6.13
D R and E R
Funkcionalne Zavisnosti
Kaemo
3.: iz A o B i B o H
6.19
i primenom 3.
primenom
CG o HI
primenom
AG o I
primenom
AoH
F={ AoB
AoC
CG o H
CG o I
B o H}
R = (A, B, C, G, H, I)
6.17
Primer
(augmentativnost (augmentation))
(tranzitivnost (transitivity))
2.
3.
(dekompozicija)
(pseudotranzitivnost)
z
z
6.20
(unija)
pravila:
Zatvara (Nastavak)
6.18
(refleksivnost(reflexivity))
1.
F+ je nadskup skupa F.
(CG o H i CG AGBC)
3. result = ABCGH
Da li vai AG o R? == Da li je (AG)+ R
Da li je neki podskup AG superklju?
2.
Da li vai G o R? == Da li je (G)+ R
2.
6.23
Nalaenje zatvaraa F
6.24
D je superklju za R
Do E
Provera superkljua:
6.22
Da li vai A o R? == Da li je (A)+ R
1.
1.
Da li je AG super klju?
1.
(A o C i A o B)
2. result = ABCG
1. result = AG
6.21
result := D;
while (promene u result) do
for each E o J in F do
begin
if E result then result := result J
end
AoC
CG o H
CG o I
B o H}
(AG)+
F = {A o B
R = (A, B, C, G, H, I)
Primer
E = amount
Ouvane zavisnosti
R1 R2 = {B} i B o BC
6.27
R1 R2 = {A} i A o AB
R2)
F = {A o B, B o C)
R = (A, B, C)
6.25
Primer
pa bor_loan dekomponujemo na
D = loan_number
(DU E )
(R-(E-D))
uslov za BCNF.
R2 (r )
R1 R 2 o R2
R1 R 2 o R1
6.26
6.28
r = R1 (r )
Ouvane zavisnosti
6.31
R1 i R2 u BCNF
R nije u BCNF
F = {A o B
B o C}
Klju = {A}
R = (A, B, C )
6.29
Ako
(F1 F2 Fn )+ = F +
Dekompozicija
Primer
Ouvanje Zavisnosti
result = D
while (promene u result) do
for each Ri u dekompoziciji
t = (result Ri)+ Ri
result = result t
6.32
result := {R };
done := false;
nalaenje F +;
while (not done) do
if (postoji ema Ri u result koja nije u BCNF)
then begin
neka je D o E netrivijalna funkcionalna zavisnost koja vai na Ri
takva da D o Ri nije u F +,
i D E = ;
result := (result Ri ) (Ri E) (D, E );
end
else done := true;
6.30
R4 = (customer_name, loan_number )
6.35
ouvanja zavisnosti
6.36
D je superklju za R
z
z
Do E
6.34
JK o L
R nije u BCNF
F = {JK o L
LoK}
Dva kandidat kljua = JK i JL
6.33
R1, R3, R4
Finalna dekompozicija
Dekompozicija
R = (J, K, L )
Primer
k1
k1
k1
k2
l1
l1
l1
l2
j1
j2
j3
null
6.39
6.37
JK je superklju
K je sadrano u kandidat kljuu
JK o L
LoK
R je u 3NF
6.40
(employee_id, branch_name)
ema relacije:
Primer
6.38
R = (J, K, L)
F = {JK o L, L o K }
R = (J, K, L )
F = {JK o L, L o K }
z
Primer
Primer
Relacija R:
Primer
Avi
Avi
Hank
Hank
Mike
Mike
Avi
Avi
Pete
Pete
classes
teacher
book
DB Concepts
DB Systems
DB Concepts
DB Systems
DB Concepts
DB Systems
OS Concepts
OS Basics
OS Concepts
OS Basics
6.43
Anomalija pri unosu ako elimo uneti novog nastavnika Mary koji
relacija u BCNF
database
database
database
database
database
database
operating systems
operating systems
operating systems
operating systems
course
6.41
zavisnosti.
Ciljevi Normalizacije
course
text
book
DB Concepts
DB Systems
OS Concepts
OS Basics
6.44
database
database
operating systems
operating systems
teacher
Avi
Hank
Mike
Avi
Jim
teaches
database
database
database
operating systems
operating systems
course
6.42
Posmatrajmo relaciju
6.47
If Y o Z then Y oo Z
Note:
6.48
6.46
In our example:
Y oo Z if Y oo W
Note that since the behavior of Z and W are identical it follows that
then
course oo teacher
course oo book
Y, Z, W
We say that Y oo Z (Y multidetermines Z )
Primer
Primer
6.45
vai na R ako u bilo kojoj legalnoj relaciji r(R) u kojoj postoje parovi torki t1 i t2
takvi da je t1[D] = t2 [D], postoje i torke t3 i t4 u r takve da vai:
D oo E
(multivalued dependency)
Vievrednosne Zavisnosti
If D o E, then D oo E
6.51
where D Ri and D oo E is in D+
D oo (E Ri)
6.49
The closure
D+
6.52
result: = {R};
done := false;
compute D+;
Let Di denote the restriction of D+ to Ri
6.50
D oo E is trivial (i.e., E D or D E = R)
following rule:
(R3 is in 4NF)
c) R3 = (C, G, H)
d) R4 = (A, C, G, I)
(R6 is in 4NF)
f)R6 = (A, C, G)
extra coding work for programmer and possibility of error in extra code
depositor
6.55
account
faster lookup
6.53
(R5 is in 4NF)
e) R5 = (A, I)
(R1 is in 4NF)
a) R1 = (A, B)
b) R2 = (A, C, G, H, I)
Decomposition
CG oo H }
B oo HI
6.54
R =(A, B, C, G, H, I)
F ={ A oo B
Primer
7.3
drugim programima
Program za podizanje i ulaganje novca sa ATM ureaja mora zadovoljiti vie zahteva:
Start
Read ( Poruka sa terminala )
Read ( Stanje na raunu )
Write ( Stanje na raunu )
Write ( Dnevnik izvrenih transakcija )
Read ( Stanje ATM ureaja )
Write ( Stanje ATM ureaja )
Read ( Stanje ekspoziture )
Write ( Stanje ekspoziture )
Write ( Poruka na terminal )
Commit
Koncept Transakcije
7.1
Upravljanje Transakcijama
BAZE PODATAKA
Definicija Transakcije
7.2
Kontrola Serijalizovanosti
Serijalizovanost
Izvravanje Transakcija
Stanja Transakcije
Koncept Transakcije
Upravljanje Transakcijama
Kreirana
Aktivna
7.7
Ponitena
Pogrena
Zavrena
7.5
Unitena
Potvrdjena
$50 izvren), aurirana baza mora zadrati stanje uprkos moguim kvarovima.
7.6
Serijalizovani redosled
Ekvivalentni i
7.8
Konkurentno (Neserijski)
Serijski, ili
Izvravanje Transakcija
Stanja Transakcije
Atomska ako se transakcija prekine posle koraka 3 i pre koraka 6, sistem mora
6. write(B)
5. B := B + 50
4. read(B)
3. write(A)
2. A := A 50
1. read(A)
Primer
7.11
Redosled 4
7.10
Redosled 2
Redosled 3
7.9
Redosled 1
li i lj nisu konfliktne.
Konfliktne.
Konfliktne.
Konfliktne.
7.15
Redosled 3
7.16
Redosled 6
7.14
1. li = read(Q), lj = read(Q).
2. li = read(Q), lj = write(Q).
3. li = write(Q), lj = read(Q).
4. li = write(Q), lj = write(Q).
Konfliktne Instrukcije
Konfliktna Serijalizovanost
7.13
2. view serijalizovanost
1. conflict serijalizovanost
baze.
baze.
Serijalizovanost
blind writes.
7.19
serializable.
schedule.
7.17
redosled < T3, T4 >, ili serijski redosled < T4, T3 >.
7.20
Druge Serijalizovanosti
7.18
View Serijalizovanost
7.21
there others?
7.23
Are
Example 1
Provera Serijalizovanosti
read(Y)
write(Y)
T2
read(X)
write(Z)
T3
7.22
read(Y)
write(Y)
read(Z)
write(Z)
T4
read(V)
read(W)
read(W)
T5
7.24
T3
T1
read(U)
write(U)
read(U)
read(Y)
read(Z)
T1
T4
T2
7.25
7.27
serializability.
late!
schedules are
A database must provide a mechanism that will ensure that all possible
Kontrola Serijalizovanosti
7.26
7.28
protocol is correct.
read (A);
z
z
7.31
7.32
7.30
7.29
get updated in-between the read of A and B, the displayed sum would be
wrong.
display(A+B)
unlock(B);
read (B);
lock-S(B);
unlock(A);
T2: lock-S(A);
Problem Deadlock-a
7.35
Second Phase:
7.36
First Phase:
Implementacija Zakljuavanja
7.34
7.33
Rigorous two-phase locking is even stricter: here all locks are held
potential
decrease in concurrency
increased
Transactions may have to lock data items that they do not access.
Need
7.39
Schedules not possible under two-phase locking are possible under tree
Drawbacks
Unlocking may occur earlier in the tree-locking protocol than in the two-
deadlock.
7.37
items.
Impose a partial ordering o on the set D = {d1, d2 ,..., dh} of all data
7.40
timestamp values:
In order to assure such behavior, the protocol maintains for each data Q two
transaction Ti has time-stamp TS(Ti), a new transaction Tj is assigned timestamp TS(Tj) such that TS(Ti) <TS(Tj).
7.38
read(X)
read(Y)
T1
read(X)
abort
read(Y)
T2
7.43
write(Z)
abort
write(Y)
write(Z)
T3
T4
write(Y)
write(Z)
read(Z)
T5
read(X)
7.41
Primer
2.
1.
7.42
transaction
with larger
timestamp
recoverable.
7.44
But the schedule may not be cascade-free, and may not even be
ever waits.
transaction
with smaller
timestamp
3.
2.
1.