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

cmilos@etf.bg.ac.

yu

mbojovic@etf.bg.ac.yu

M.Bojovic, Univerzitetska Misao, 2003.

Upravljanje Transakcijama,

Joe Hellerstein, UC Berkeley, M. Garofalakis, Intel Research, 2005.

Introduction to Database Systems,

H. Garcia-Molina, J.D.Ulman, J. Widom, Prentice Hall, 2002.

Database Systems: The Complete Book,

A. Silberschatz, H. Korth, S Sudarshan, McGraw Hill International


Edition, 2005.

Database System Concepts,

Osnovna literatura

Milo Cvetanovi

Asistent

Prof. Miroslav Bojovi

Nastavnik

Ko?

Jesen 2006.

Miroslav Bojovi

Baze Podataka

Kako?

Ko?
Kako?
ta?
Zato?

Ispit Kolokvijum (30%+10%) i


Finalni (70%)

Microsoft SQL Server

Lab vebe: Projekat sa real world


fokusom:

Pitanja za danas

ta: Database Sistemi Danas

ta: Database Sistemi Danas

ta: Database Sistemi Nekada

ta: Database Sistemi Danas

Banking: all transactions


Airlines: reservations, schedules
Universities: registration, grades
Sales: customers, products, purchases
Online retailers: order tracking, customized recommendations
Manufacturing: production, inventory, orders, supply chain
Human resources: employee records, salaries, tax deductions

Databases touch all aspects of our lives

Database Applications:

Collection of interrelated data


Set of programs to access the data
An environment that is both convenient and efficient to use

DBMS contains information about a particular enterprise

ta je Sistem za Upravljanje Bazama


Podataka(DataBase Management System)?

ta: Database Sistemi Danas

New standards e.g., XML, Semantic Web can help data


modeling
Research on combining/summarizing data across documents

The picture is changing

few guarantees provided for freshness of data, consistency


across data items, fault tolerance,
Web sites typically have a (relational) DBMS in the
background to provide these functions.

cant modify the data


cant get summaries, complex combinations of data

data is mostly unstructured and untyped


search only:

But, currently

Crawler indexes pages on the web


Keyword-based search for pages

Fairly sophisticated search available

ta: Da li je WWW DBMS?

Entities: words, filenames, hosts


Relationships: word in filename, file available at host

P2P filesharing:

Entities: words, documents


Relationships: word in document, document links to document.

Web search:

Might surprise you how flexible this is

Entities (e.g., teams, games)


Relationships (e.g. The As are playing in the World Series)

Typically models a real-world enterprise

A very large, integrated collection of data.

A Database:

Prema tome ta je Baza podataka?

A) All B) None C) All Since Last Save D) ???

Youre updating a file.


The power goes out.
Which changes survive?

Thought Experiment 2:

Q: How do you write


programs over a
subsystem when it
promises you only ??? ?
A: Very, very carefully!!

A) Yours B) Partners C) Both D) Neither E) ???

You and your project partner are editing the same


file.
You both save it at the same time.
Whose changes survive?

Thought Experiment 1:

ta: Da li je File Sistem DBMS?

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.

ta: Search vs. Query

??

manages files on a magnetic disk


allows open, read, seek, close on a file
allows protections to be set on a file
drawbacks relative to RAM?

Every OS includes a File System

this is what every programming language


offers!
RAM is fast, and random access
Isnt this heaven?

Data can be stored in RAM

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.

What if you wanted to


find out which
musicians donated to
John Kerrys
presidential
campaign?

ta: Search vs. Query II

Expensive/complicated to set up & maintain


This cost & complexity must be offset by need
General-purpose, not suited for special-purpose
tasks (e.g. text search!)

Data independence
Efficient data access
Data integrity & security
Data administration
Concurrent access, crash recovery
Reduced application development time
So why not use them always?

Savremeni DBMS obezbeuju:

Integrity constraints (e.g. account balance > 0) become


buried in program code rather than being stated explicitly
Hard to add new constraints or change existing ones

Data isolation multiple files and formats


Integrity problems

Need to write a new program to carry out each new task

Difficulty in accessing data

Multiple file formats, duplication of information in different


files

In the early days, database applications were built directly


on top of file systems
Drawbacks of using file systems to store data:
Data redundancy and inconsistency

Da li Fajl Sistem zadovoljava? (1)

Korisnici

(naziva se ANSI/SPARC
arhitektura)

Fizika schema opisuje Kako


su podaci memorisani

DB

Physical Schema

Konceptualni nivo (schema) View 1 View 2 View 3


definie logiku strukturu
Koji podaci i Odnose izmeu
podataka
Conceptual Schema

Pogledi (Views) omoguuju


podskupove konceptualnog
nivoa.

Nivoi Apstrakcije Podataka

Database systems offer solutions to all the above problems

Hard to provide user access to some, but not all, data

Security problems

Example: Two people reading a balance and updating it at the same time

Concurrent accesses needed for performance


Uncontrolled concurrent accesses can lead to inconsistencies

Concurrent access by multiple users

Failures may leave database in an inconsistent state with partial


updates carried out
Example: Transfer of funds from one account to another should
either complete or not happen at all

Drawbacks of using file systems (cont.)


Atomicity of updates

Da li Fajl Sistem zadovoljava? (2)

Database systems are at the core of CS


They are incredibly important to society
The topic is intellectually rich
It isnt that much work
Looks good on your resume

Lets spend a little time on each of these

A.
B.
C.
D.
E.

Zato?

Analogous to the value of a variable

Instance the actual content of the database at a


particular point in time

Example: The database consists of information about a set of


customers and accounts and the relationship between them)
Analogous to type information of a variable in a program
Physical schema: database design at the physical level
Logical schema: database design at the logical level

Similar to types and variables in programming


languages
Schema the logical structure of the database

Ortogonalna dimenzija:
ema i Instanca
View 2

View 3

A. Database systems are the core of CS

Because rate of change of DB


applications is incredibly slow.
More generally:
dapp/dt << dplatform/dt

DB

Physical Schema

Conceptual Schema

View 1

Corporate: retail swipe/clickstreams, customer relationship


mgmt, supply chain mgmt, data warehouses, etc.
Web:not just documents. Search engines, e-commerce,
blogs, wikis, other web services.
Scientific: digital libraries, genomics, satellite imagery,
physical sensors, simulation data
Personal: Music, photo, & video libraries. Email archives.
File contents (desktop search).

Need for DB technology has exploded in the last


years

True in corporate computing for years


Web, p2p made this clear for personal computing
Increasingly true of scientific computing

Shift from computation to information

Zato?

Q: Why are these


particularly important for
DBMS?

Physical data independence:


Protection from changes in
physical structure of data.

Applications insulated from


how data is structured and
stored.
Logical data independence:
Protection from changes in
logical structure of data.

Nezavisnost Podataka
(Data Independence)

B. DBs are incredibly important to society

D. It isnt that much work.

Bad news: It is a lot of work.

Zato?

Policy-makers should understand technological possibilities.


Informed Technologists needed in public discourse on usage.

With great power comes


great responsibility. -SpiderMans Uncle Ben

Knowledge is power. -Sir Francis Bacon

Zato?
C. The topic is intellectually rich.

E. Looks good on my resume.

Database system concepts and techniques


increasingly used outside the box
A rich understanding of these issues is a basic
and (un?)fortunately unusual skill.

It is a course for well-educated computer


scientists

Though its useful for both!

Oracle administrators
IBM DB2 engine developers

Yes, but why? This is not a course for:

Zato?

* semantics: the meaning or relationship of meanings of a sign or set of signs

maintain data semantics even if you pull the plug

reliable data storage

controlling concurrent access


ensuring transactional semantics

concurrency control for data manipulation

complex queries & query semantics*


over massive data sets

languages and systems for querying data

data modeling

representing information

Zato?

Course_info(cid:string,enrollment:integer)

External Schema (View):

Relations stored as unordered files.


Index on first column of Students.

Physical schema:

Students(sid: string, name: string, login: string,


age: integer, gpa:real)
Courses(cid: string, cname:string, credits:integer)
Enrolled(sid:string, cid:string, grade:string)

Data Model: Relations


Conceptual schema:

Primer: Baza Podataka Fakulteta

ema je opis nekog skupa podataka,


korienjem datog modela podataka.

Podataka (Data)
Odnosa izmeu podataka (Data relationships)
Znaenja podataka (Data semantics)
Ogranienja (Data constraints)

Model Podataka je skup konceptualnih


alata za opis:

Opis Podataka: Model Podataka

SQL is the most widely used Query Language

Procedural user specifies what data is required and


how to get those data
Declarative (nonprocedural) user specifies what data
is required without specifying how to get those data

Two classes of languages

DML also known as Query Language

Language for accessing and manipulating the data


organized by the appropriate data model

Data Manipulation Language (DML)

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:

Razliiti modeli podataka

account (
account-number char(10),
balance
integer)

Centralized
Client-server
Parallel (multi-processor)
Distributed

The architecture of a database systems is greatly


influenced by the underlying computer system on
which the database is running:

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

DDL compiler generates a set of tables stored in a Data


Dictionary
Data dictionary contains metadata (i.e., data about data)

Example: create table

Specification notation for defining the database schema

Data Definition Language (DDL)

Application programmers interact with system through


DML calls
Sophisticated users form requests in a database query
language
Specialized users write specialized database applications
that do not fit into the traditional data processing framework
Nave users invoke one of the permanent application
programs that have been written previously
Examples, people accessing database over the web, bank
tellers

Users are differentiated by the way they expect to


interact with the system

Database Users

Language extensions to allow embedded SQL


Application program interface (e.g., ODBC/JDBC) which allow
SQL queries to be sent to a database

Application programs generally access dbase through one of

select account.balance
from depositor, account
where depositor.customer_id = 192-83-7465 and
depositor.account_number = account.account_number

Example: Find the balances of all accounts held by the customer


with customer-id 192-83-7465

select customer.customer_name
from customer
where customer.customer_id = 192-83-7465

Example: Find the name of the customer with customer-id 192-837465

SQL: widely used non-procedural language

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

A transaction is a collection of operations that


performs a single logical function in a database
application
Transaction-management component ensures
that the database remains in a consistent (correct)
state despite system failures (e.g., power failures
and operating system crashes) and transaction
failures.
Concurrency-control manager controls the
interaction among the concurrent transactions, to
ensure the consistency of the database.

Coordinates all the activities of the database


system; the database administrator has a good
understanding of the enterprises information
resources and needs.
Database administrator's duties include:

Database Administrator

Overall
System
Structure

Storage access
File organization
Indexing and hashing

Issues:

Interaction with the file manager


Efficient storing, retrieving and updating of data

Storage manager is a program module that


provides the interface between the low-level data
stored in the database and the application
programs and queries submitted to the system.
The SM is responsible to the following tasks:

Storage Management

can manipulate data and exploit semantics

recovery from system crashes,


concurrent access,
quick application development,
data integrity and security.

Key when dapp/dt << dplatform/dt

Relational

And related systems

2) What goes on inside a DBMS

1) How to be a sophisticated user of database technologies

In this course we will explore:

Levels of abstraction provide data independence

Most systems over databases use related technologies


Other benefits of DBMSs include:

DBMS used to maintain, query large datasets.

Summary (part 1)

Search engines, P2P, etc.

And of course, the other database technologies

MySQL, PostgreSQL, BerkeleyDB

Open Source coming on strong

adapting for extensibility (user-defined types), native XML support.


Microsoft merging file system/DB for next OS release (??)

Traditional Relational DBMS products dominant and evolving

data warehouse, document management, storage, backup,


reporting, business intelligence, ERP, CRM, app integration

Well-known benchmarks (esp. TPC)


Lots of related industries

Oracle, IBM, Microsoft


also Sybase, Informix (now IBM), Teradata
smaller players: java-based dbms, devices, OO,

A major part of the software industry:

Current Commercial Outlook

Summary, cont.

must understand how a DBMS works

Design logical/physical schemas


Handle security and authorization
Data availability, crash recovery
Database tuning as needs evolve

DBMS R&D represents a broad,


fundamental branch of the science
of computation

DBAs, DB developers the


bedrock of the information
economy

Database administrators (DBAs)

Build enterprise applications on top of DBMSs


Build web services that run off DBMSs

DB application programmers

Business, education, science,

End users in many fields

Oracle, IBM, MS, Sybase, NCR,

DBMS vendors, programmers

DBMSs make these folks happy ...

Primer: skup svih ljudi, kompanija, drvea, praznika

Skup Entiteta (Entity Set) je skup entiteta istog


tipa.

Primer: ljudi imaju imena i adrese

Entiteti su opisani atributima (attribute)

Primer: neka osoba, kompanija, dogaaj, ljubav

Entitet (Entity) je objekat koji postoji i razlikuje


se od drugih objekata.

Skup Entiteta,
Veza izmeu entiteta.

Bazira se na percepciji realnog okruenja:


Baza podataka se modelira kao:

Definicija modela Entiteti-Veze

(Entity-Relationship Model)

Model Entiteti-Veze

BAZE PODATAKA

customer_id customer_ customer_ customer_


name street
city

loan_
number

Skupovi Entiteta klijent i zajam

Definicija
Ogranienja
Dijagram E-V
Odluke u Dizajnu
Skupovi Slabih Entiteta
Proirenje modela E-V
Dizajn Bankarskog Sistema

Model Entiteti-Veze

amount

Skup Veza moe takoe imati atribute.


Na primer, skup veza ulaganje (depositor) izmeu skupova
entiteta klijent (customer) i raun (account) moe imati atribut
datum-pristupa (access-date)

Skup Veza (3)

Primer:
(Hayes, A-102) depositor

gde je (e1, e2, , en) veza

Vezama (Relationship) su prikazani odnosi izmeu


entiteta
Primer:
depositor
A-102
Hayes
customer entity relationship set account entity
Skup Veza (Relationship set) je matematika relacija
izmeu n t 2 entiteta, od kojih svaki pripada nekom
skupu entiteta
{(e1, e2, en) | e1 E1, e2 E2, , en En}

Veza i Skup Veza (1)

Skupovi Veza koji ukljuuju vie nego dva skupa


entiteta su retki. Veina veza je binarna. (Vie o
tome kasnije)

(odgovornosti) u vie ekspozitura, i to razliite poslove u razliitim


ekspoziturama. Tada vai ternarni skup veza izmeu skupova
entiteta zaposleni(employee), posao(job), i ekspozitura(branch)

Primer: Pretpostavimo da zaposleni banke mogu imati poslove

Odnosi se na broj skupova entiteta koji uestvuju u


skupu veza.
Skupovi Veza koji ukljuuju dva skupa entiteta su
binarni (ili stepena dva). Generalno, veina
skupova veza u bazama podataka su binarne.
Skupovi Veza mogu ukljuivati i vie nego dva
skupa entiteta.

Stepen Skupa Veza

Skup Veza pozajmiti (2)

Jedan-u-jedan (One to one)


Jedan-u-vie (One to many)
Vie-u-jedan (Many to one)
Vie-u-vie (Many to many)

Izraava broj entiteta koji se mogu dovesti u vezu


sa drugim entitetom.
Najupotrebljivija za opisivanje binarnog skupa
veza.
Za binarni skup veza kardinalnost mapiranja moe
biti:

Kardinalnost mapiranja (1)

Mogu se sraunati iz drugih atributa


Primer: starost, sraunava se iz datum_roenja

Sraunljivi (Derived) atributi

Primer: vie-vrednosni (multivalued) atribut: phone_numbers

Prosti (Simple) i Kompozitni (Composite) atributi.


Sa Jednom (Single-valued) i Vie (Multi-valued) vrednosti

Domen skup dozvoljenih vrednosti svakog


atributa
Tipovi Atributa:

Primer:
Customer=(customer_id, customer_name, customer_street, customer_city)
loan = (loan_number, amount )

Entitet je predstavljen skupom Atributa, kojima su


opisane osobine pojedinih entiteta u skupu entiteta.

Atributi

Jedan-u-vie

Primedba: Neki elementi u A i B ne moraju biti mapirani ni na


jedan element drugog skupa

Jedan-u-jedan

Kardinalnost mapiranja (2)

Kompozitni Atributi

Vie-u-vie

Mora se uzeti u obzir kardinalnost mapiranja skupa


veza pri odluci o kandidat kljuu
Potrebno je uzeti u obzir semantiku skupa veza pri
izboru primarnog kljua u sluaju vie od jednog
kandidat kljua

Primer: Ako elimo da pratimo sve access_dates za svaki account


za svakog customer, ne moemo pretpostaviti vezu za svaki
pristup. Moemo koristiti vie-vrednosni (multivalued) atribut

depositor
Primedba: to znai da par skupova entiteta moe imati
najvie jednu vezu u datom skupu veza.

(customer_id, account_number) je super klju za

Skup primarnih kljueva skupova entiteta u nekoj


vezi je super klju skupa veza.

Klju Skupa Veza

Primedba: Neki elementi u A i B ne moraju biti mapirani ni na


jedan element drugog skupa

Vie-u-jedan

Kardinalnost mapiranja (3)

Dvostruke elipse predstavljaju vie-vrednosne atribute.


z

Isprekidane elipse predstavljaju sraunljive atribute.


Podvueno ime oznaava atribute primarnog kljua

entiteta sa skupovima veza.


Elipse predstavljaju atribute

Linije povezuju atribute sa skupovima entiteta i skupove

Rombovi predstavljaju skupove veza.

Pravougaonici predstavljaju skupove entiteta.

Dijagram E-V

Primarni klju (primary key) je izabrani


kandidat klju.

Customer_id je kandidat klju za customer


account_number je kandidat klju za account

Super klju (super key) skupa entiteta je


skup jednog ili vie atributa ije vrednosti
jednoznano odreuju svaki entitet.
Kandidat klju (candidate key) skupa
entiteta je minimalni super klju

Klju

Skupovi entiteta u vezi ne moraju biti iskljuivi.


Labele manager i worker se nazivaju Uloge; specificiraju
kako entiteti employee uestvuju u skupu veza works_for.
Uloge se oznaavaju labelama linija koje povezuju skupove
veza i entiteta.
Uloge su obino implicitne, specificiraju se samo ako nije
oigledna semantika veze.

Uloge

Dijagram E-V sa Kompozitnim,


Vie-vrednosnim, i Sraunljivim
Atributima

customer je povezan sa najvie jednim loan


vezom borrower
loan je povezan sa najvie jednim customer
vezom borrower

Kardinalnost mapiranja se izraava


usmerenom linijom (o), oznaavajui
jedan, ili
neusmerenom linijom (), oznaavajui
vie.
Veza jedan-u-jedan:

Izraavanje Kardinalnosti Mapiranja

Atributi Skupa Veza

customer je povezan sa vie (ukljuujui 0)


loans vezom borrower
loan je povezan sa vie (ukljuujui 0)
customers vezom borrower

Veza Vie-u-Vie

U vezi jedan-u-vie loan je povezan sa


najvie jednim customer vezom borrower, a
customer je povezan sa vie (ukljuujui 0)
loans vezom borrower

Veza Jedan-u-Vie

svaki loan mora imati customer povezanog vezom


borrower
jednoj vezi u skupu veza
z Primer: uee customer u borrower je parcijalno

Parcijalno uee: neki entiteti ne moraju uestvovati ni u

u skupu entiteta uestvuje u najmanje jednoj vezi u skupu


veza
z Na primer uee loan u borrower je totalno

Totalno uee (predstavljeno duplom linijom): svaki entitet

Uee Skupa Entiteta u Skupu Veza

U vezi vie-u-jedan loan je povezan sa vie


(ukljuujui 0) customers vezom borrower, a
customer je povezan sa najvie jednim loan
vezom borrower

Veza Vie-u-Jedan

Dozvoljena je najvie jedna strelica iz ternarne (ili veeg


stepena) veze za oznaavanje ogranienja kardinalnosti
Npr. strelica iz works_on prema job oznaava da svaki
employee radi na najvie jednom poslu u bilo kojoj ekspozituri.
Ako postoji vie nego jedna strelica, dve su mogue
interpretacije znaenja.
Npr. ternarna veza R izmeu A, B i C sa strelicom prema B i
C moe znaiti
1. svaki entitet iz A je u vezi sa jednim entitetom iz B i C ili
2. svaki par entiteta iz (A, B) je u vezi sa jednim entitetom iz
C, i svaki par (A, C) je u vezi sa jednim entitetom iz B
Da bi se izbegla konfuzija zabranjuje se vie od jedne
strelice

Ogranienja kardinalnosti na
ternarnim vezama

kardinalnost mapiranja (min..max)

Opseg vrednosti dat brojevima oznaava

Alternativna notacija
kardinalnosti veza

Korienje skupova entiteta vs. atributa


Izbor uglavnom zavisi od strukture sistema koji
modeliramo, i od semantike atributa.
Korienje skupova entiteta vs. skupova veza
Mogue uputstvo je odreivanje skupa veza za opis
aktivnosti izmeu entiteta
Binarni vs. n-arni skupovi veza
Mada je mogue prevesti bilo koji nebinarni (n-arni,
za n > 2) skup veza u vie posebnih binarnih
skupova veza, n-arni skup veza jasnije pokazuje da
vie entiteta uestvuje u jednoj vezi.
Korienje atributa skupova veza

Odluke u Dizajnu

Dijagram E-V sa ternarnom Vezom

Moe se izbei uvoenje identifikacionog atributa


pravljenjem E kao skupa slabih entiteta koji se identifikuje
posredstvom tri skupa veza

Zadatak: dodati ogranienja u veze RA, RB i RC da bi novi entiteti


odgovarali tano jednom entitetu u svakom od skupova entiteta
A, B i C

Prevoenje svih ogranienja nije uvek mogue


Moe biti instanci u prevedenoj emi koje ne odgovaraju
ni jednoj instanci veze R

Takoe je potrebno prevesti ogranienja

Konvertovanje
ne-binarnih u binarne veze (2)

Primer: works_on

Ali postoje neke veze koje su prirodno ne-binarne

Korienje dve binarne veze dozvoljava parcijalnu informaciju


(npr. Poznata je samo majka)

Npr. Ternarnu vezu roditelji, koja povezuje dete sa


ocem i majkom, je bolje zameniti sa dve binarne veze,
otac i majka

Neke veze koje izgledaju ne-binarne mogu biti


bolje predstavljene kao binarne veze

Binarne vs. Ne-Binarne Veze

2. dodati (ei , ai ) u RA
4. dodati (ei , ci ) u RC

2.RB, koja povezuje E i B

Odnosno, veza rauna sa klijentom je vie u jedan, ili


equivalentno, klijent sa raunom je jedan u vie

umesto kao atribut veze, ako svaki raun moe pripadati samo
jednom klijentu

Mogue access-date uvesti kao atribut za entitet account,

Uticaj kardinalnosti mapiranja na


dizajn E-V

1. novi entitet ei u skup entiteta E


3. dodati (ei , bi ) u RB

1. RA, koja povezuje E i A


3. Rc, koja povezuje E i C
Uvesti poseban identifikacioni atribut za E
Dodati atribute veze R u E
Za svaku vezu (ai , bi , ci) u R, uvesti

Zameniti vezu R izmeu skupova entiteta A, B i C sa skupom entiteta E,


i tri skupa veza:

Generalno, svaka ne-binarna veza moe biti predstavljena


binarnim vezama kreiranjem vetakih skupova entiteta.

Konvertovanje
ne-binarnih u binarne veze (1)

Npr., ako je loan_number eksplicitno dat, payment


moe postati jak entitet, ali je tada veza izmeu
payment i loan duplicirana implicitnom vezom
definisanom posredstvom atributa loan_number
koji je zajedniki za payment i loan

Primedba: Primarni klju skupa jakih entiteta se


eksplicitno ne nalazi u skupu slabih entiteta, ve je
dat implicitno posredstvom identifikacione veze.

Skupovi Slabih Entiteta (3)

Skup entiteta koji nema primarni klju se oznaava kao Skup


Slabih Entiteta (Weak Entity Set).
Egzistencija skupa slabih entiteta zavisi od postojanja
identifikacionog skupa entiteta (identifying entity set)
mora biti u vezi sa identifikacionim skupom entiteta
postedstvom totalnog, jedan-u-vie skupa veza od
identifikacionog prema skupu slabih entiteta
Identifikaciona veza se oznaava dvostrukim rombom
Diskriminator skupa slabih entiteta je skup atributa na
osnovu kojih se mogu razlikovati entiteti u skupu slabih
entiteta.
Primarni klju skupa slabih entiteta se formira od primarnog
kljua jakog skupa entiteta od koga je skup slabih entiteta
egzistencijalno zavistan, plus diskriminator skupa slabih
entiteta.

Skupovi Slabih Entiteta (1)

U modelu univerziteta, course je jak entitet, a


course_offering moe biti modeliran kao slab entitet
Diskriminator course_offering moe biti semester
(ukljuuje godinu) i section_number (ako ima vie
delova)
Ako modeliramo course_offering kao jak entitet
tada course_number modeliramo kao atribut.
Onda je veza sa course implicitna posredstvom
atributa course_number

Skupovi Slabih Entiteta (Primeri)

Primarni klju za payment (loan_number,


payment_number)

payment

Skup slabih entiteta se oznaava dvostrukim


pravougaonikom.
Diskriminator skupa slabih entiteta se oznaava
isprekidanom linijom.
payment_number diskriminator skupa entiteta

Skupovi Slabih Entiteta (2)

Bottom-up proces dizajna grupisanje vie


skupova entiteta koji imaju zajednike osobine u
skup entiteta vieg nivoa.
Specijalizacija i generalizacija su inverzije jedna
druge; Predstavljene su na isti nain u dijagramu
E-V.
Koriste se saglasno tome da li elimo da istaknemo
razlike(specijalizacija) ili slinosti(generalizacija)
koje postoje izmeu pojedinih skupova entiteta.

Generalizacija

Top-down proces dizajna; Delimo skup entiteta


na vie podskupova entiteta ime istiemo razlike
koje meu njima postoje.
Podskupovi entiteta postaju skupovi entiteta nieg
nivoa u odnosu na polazni skup i imaju neke
atribute ili uestvuju u nekim vezama koje nema ili
u kojima ne uestvuje skup entiteta vieg nivoa.
Oznaava se trouglom sa labelom ISA (Npr.
customer is a person).
Nasleivanje (inheritance) atributa skupovi
entiteta nieg nivoa nasleuju sve atribute i veze
skupa entiteta vieg nivoa sa kojim su povezani.

Specijalizacija

Veza ISA se oznaava i kao veza superclass subclass

lan permanent_employee ili temporary_employee,


i takoe lan officer, secretary, ili teller

Moemo imati vie specijalizacija skupa entiteta


zavisno od razlika koje elimo da istaknemo.
Npr. permanent_employee vs. temporary_employee,
i/ili officer vs. secretary vs. teller
Svaki zaposleni moe biti

Specializacija i Generalizacija

Specijalizacija (Primer)

za poslove koje su zaposleni uradili u ekspoziturama

Pretpostavimo da elimo da imamo informacije o menaderima

Razmotrimo ranije pomenutu ternarnu vezu works_on

Agregacija (1)

entitet moe pripadati vie nego jednom skupu entiteta nieg


nivoa

Overlapping

entitet moe pripadati samo jednom skupu entiteta nieg nivoa


U dijagramu E-V se oznaava upisivanjem disjoint uz ISA trougao

Disjoint

Ogranienja za odreivanje da li entiteti mogu


pripadati vie nego jednom skupu entiteta nieg
nivoa u jednoj generalizaciji.

korisniki-definisana

Primer: svi klijenti preko 65 godina su lanovi skupa entiteta


senior-citizen; senior-citizen ISA person.

uslovom-definisana

Ogranienja za ukljuivanje entiteta u skupove


nieg nivoa.

Ogranienja dizajna za
Specializaciju i Generalizaciju (1)

Dobijamo sledei dijagram:


Zaposleni radi neki posao u nekoj ekspozituri
Kombinacija zaposleni, ekspozitura, posao moe
imati pridruenog menadera

Ova redundantnost se moe eliminisati Agregacijom


Vezu posmatramo kao abstraktni entitet vieg nivoa
Dozvoljava se veza izmeu veza
Abstrakciju veze ukljuujemo u novi entitet

Prema tome ne moemo izbaciti vezu works_on

Skupovi veza works_on i manages se preklapaju


Svaka veza manages odgovara vezi works_on
Meutim, neke veze works_on ne moraju
odgovarati ni jednoj vezi manages

Agregacija (2)

parcijalno: entitet ne mora pripadati ni jednom od


skupova entiteta nieg nivoa

totalno : entitet mora pripadati jednom od skupova


entiteta nieg nivoa (generalizacija account je totalna)

Ogranienje Potpunosti (Completeness


constraint) specificira da li entitet u skupu entiteta
vieg nivoa mora pripadati najmanje jednom od
skupova entiteta nieg nivoa u generalizaciji.

Ogranienja dizajna za
Specializaciju i Generalizaciju (2)

Dijagram E-V za bankarski sistem

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.

Odluke u procesu dizajna

customer_name x customer_street x customer_city

relacija na

(Curry, North, Rye), (Lindsay, Park, Pittsfield) }

null vrednosti pripadaju svakom domenu


null vrednosti nisu poeljne

Primedba: vrednosti vievrednosnih atributa nisu


atomske
Primedba: vrednosti sloenih atributa nisu
atomske

customer_name = {Jones, Smith, Curry, Lindsay}


customer_street = {Main, North, Park}
customer_city = {Harrison, Rye, Pittsfield}
tada je r = { (Jones, Main, Harrison), (Smith, North, Rye),

Primer: Ako su dati skupovi

D1 x D2 x x Dn, za dati skup D1, D2, . Dn


Prema tome, relacija je skup n-torki (a1, a2, , an)
takvih da ai Di

Atributi

Definicija Relacionog modela


Prevodjenje modela E-V u Relacioni model

Relacioni Model

Svakom atributu u relaciji se dodeljuje ime


Skup dozvoljenih vrednosti svakog atributa se
naziva domen atributa
Vrednosti atributa su (uobiajeno) atomske
ili nedeljive

Relacija r je podskup dekartovog proizvoda

Definicija Relacionog modela

(Relational Model)

Relacioni Model

BAZE PODATAKA

Primer: relacija account sa neureenim torkama

proizvoljnim redosledom)

Redosled torki je nebitan (torke se mogu smetati

Relacije su neureene

customer (Customer_schema)

Primer:

r (R ) je relacija sa emom R

customer_street,
customer_city)

Primer: Students(sid: string, name: string, login: string, age:


integer, gpa: real)
Primer:Customer_schema = (customer_name,

specificira ime relacije, ime i tip svake kolone


(atributa).

R = (A1, A2, , An ) je Relaciona ema

A1, A2, , An su atributi

Relaciona ema

relacija customer

Main
North
North
Park

Harrison
Rye
Rye
Pittsfield

customer_city
torke
(ili vrste)

Sve informacije se mogu nalaziti u jednoj relaciji, npr.


bank (account_number, balance, customer_name, ..)
Takav pristup dovodi do
ponavljanja informacija (npr., dva klijenta poseduju raun)
potreba za null vrednostima (npr., ako klijent nema raun)

koji raun
customer : sadri informacije o klijentima

account : sadri informacije o raunima


depositor : sadri informacije o tome koji klijent poseduje

Informacije o okruenju koje modeliramo su razbijene na


relacije, tako da svaka relacija sadri informacije o nekom delu
okruenja, npr.

Relacionu Bazu ini skup relacija

Relaciona Baza

Jones
Smith
Curry
Lindsay

customer_name customer_street

atributi
(ili kolone)

Relaciona Instanca predstavlja tekue vrednosti


relacije koje se predstavljaju tabelom
Element t relacije r se naziva torka, i
predstavljen je vrstom u tabeli
Sve torke (vrste) su razliite

Relaciona Instanca

Primarni Klju je izabrani kandidat klju

Primer: {customer_name} je kandidat klju za Customer, jer je superklju


(ako dva klijenta ne mogu imati ista imena), i nijedan podskup atributa
nije superklju.

K je kandidat klju ako je superklju, a nijedan


podskup K nije superklju

imena.

su superkljuevi za Customer, ako dva klijenta ne mogu imati ista

{customer_name}

Primer: {customer_name, customer_street} i

ko, emu i kako moe pristupiti

Security Dizajn

indeksi, disk layout

Fiziki Dizajn

konzistentnost, normalizacija

Poboljanja ema

prevoenje modela E-V u model konkretnog DBMS

Logiki Dizajn

konceptualni opis (obino model E-V)

Konceptualni Dizajn

potrebe korisnika; koje zahteve baza mora da zadovolji?

Specifikacija Zahteva

Koraci u dizajnu baze

Klju

Neka je K R
K je superklju R ako dve torke ne mogu imati
iste vrednosti za K u relaciji r(R)

Relacija Ulaga (Depositor)

Relacija Klijent (Customer)

Primer:
payment =
(loan_number, payment_number, payment_date, payment_amount)

Skup jakih entiteta se prevodi u relacionu


emu (tabelu) sa istim atributima u
kolonama.
Skup slabih entiteta postaje tabela koja,
pored kolona za atribute skupa slabih
entiteta ima i kolone za svaki atribut
primarnog kljua identifikacionog skupa
jakih entiteta

Skupovi Entiteta u Relacije (Tabele)

ta su entiteti i veze u okruenju?


Koje informacije o uoenim entitetima i
vezama treba uvati u bazi podataka?
Koja ogranienja integriteta ili poslovna
pravila treba da budu zadovoljena?
Grafika predstava (dijagram E-V) eme baze
u modelu E-V.

Konceptualni dizajn

ssn

Employees

name

lot

131-24-3650 Smethurst 35

22

231-31-5368 Smiley

lot
48

name
123-22-3666 Attishoo

ssn

Skupovi Entiteta u Relacije (Primer)

Slina struktura. Skupovi entiteta i veza se mogu


predstaviti kao relacione eme.
Svaki skup entiteta i veza se moe predstaviti
jedinstvenom relacionom emom sa imenom koje
odgovara imenu relevantnog skupa entiteta ili
veza.
Svaka relaciona ema ima kolone jedinstvenih
imena koje odgovaraju atributima.
Baza podataka koja odgovara dijagramu E-V moe
se predstaviti skupom relacionih ema.

Pretvaranje modela E-V u Relacioni

Primer: ema payment ve sadri atribute koji bi se


pojavili u emi loan_payment (tj., atribute loan_number
i payment_number).

Ako je participacija parcijalna na strani vie,


dodavanje ekstra atributa u emu na strani vie
moe dovesti do pojave null vrednosti
ema koja odgovara skupu veza koji povezuje
skupove slabih i njima identifikacionih skupova
jakih entiteta je redundantna.

Prema tome, ekstra atribut moe biti dodat bilo kojoj


tabeli koja odgovara skupovima entiteta koji su u vezi

Za skupove veza jedan-u-jedan, bilo koja strana


moe biti odabrana da bude strana vie

Skupovi Veza u Tabele (3)

Primer: ema za skup veza borrower


borrower = (customer_id, loan_number )

Skup Veza sa ogranienjem vie-u-vie se


predstavlja emom sa:
1) atributima koji odgovaraju atributima
primarnih kljueva skupova entiteta koji su
u vezi, i
2) atributima koji odgovaraju opisnim
atributima skupa veza.

Skupovi Veza u Tabele (1)

ema EM ima atribute koji odgovaraju primarnom kljuu E i


atribut koji odgovara vievrednosnom atributu M
Primer: Vievrednosni atribut dependent_names skupa entiteta
employee se predstavlja emom:
employee_dependent_names = ( employee_id, dname)
Svaka vrednost vievrednosnog atributa se mapira u posebnu
torku relacije sa emom EM
Na primer, entitet employee sa primarnim kljuem 123-45-6789 i
dependents Jack i Jane se mapiraju u dve torke:
(123-45-6789 , Jack) i (123-45-6789 , Jane)

Vievrednosni atribut M skupa entiteta E se


predstavlja posebnom emom EM

Primer: ema koja odgovara skupu entiteta customer sa kompozitnim


atributom name sa komponentama first_name i last_name ima dva
atributa
name.first_name i name.last_name

Kompozitni atributi se predstavljaju kreiranjem


posebnih atributa za svaku komponentu

Sloeni i atributi sa vie vrednosti

koji su totalni na strani vie mogu se predstaviti


dodavanjem ekstra atributa relacijama nastalim od
skupova entiteta na strani vie, koji odgovaraju
atributima primarnog kljua na strani jedan
Primer: Umesto kreiranja eme za skup veza
account_branch, dodaje se atribut branch_name u emu
nastalu od skupa entiteta account

Skupovi veza sa ogranienjem vie-u-jedan i jedan-u-vie

Skupovi Veza u Tabele (2)

name, street, city


name, credit_rating
name, salary

primarni klju agregirane veze,

primarni klju pridruenog skupa entiteta

opisne atribute

Za predstavljanje agregacije, treba kreirati


emu koja sadri

Predstavljanje Agregacije (1)

Nedostatak: ako elimo da dobijemo informaciju o


employee potrebno je pristupiti dvema relacijama, jednoj
koja odgovara emi nieg nivoa i jednoj koja odgovara
emi vieg nivoa

person
customer
employee

Formirati emu za skupove entiteta vieg nivoa


Formirati emu za svaki skup entiteta nieg nivoa, koja
ukljuuje primarni klju skupa entiteta vieg nivoa i
lokalne atribute
ema
atributi

Metod 1:

Predstavljanje Specijalizacije (1)

name, street, city


name, street, city, credit_rating
name, street, city, salary

attributes

manages

ema works_on je redundantna i mogu se pojaviti null


vrednosti za atribut manager_name u relaciji sa emom

manages (employee_id, branch_name, title, manager_name)

Na primer, za predstavljanje agregacije manages izmeu veza


works_on i skupa entiteta manager, treba kreirati emu

Predstavljanje Agregacije (2)

Nedostatak: street i city mogu biti redundantni za osobe


koje su i klijenti i zaposleni

Moe biti definisana kao view koji sadri uniju specijalizovanih


relacija
Ali eksplicitna ema moe biti potrebna zbog stranog kljua

Ako je specijalizacija totalna, ema za generalizovani


skup entiteta (person) se ne koristi za uvanje
informacija

person
customer
employee

schema

Formirati emu za svaki skup entiteta sa svim lokalnim i


nasleenim atributima

Metod 2:

Predstavljanje Specijalizacije (2)

isti jezici predstavljaju osnovu komercijalnih


upitnih jezika.

Relaciona algebra
Relacioni raun sa torkama (Tuple relational calculus)
Relacioni raun sa domenima (Domain relational calculus)

isti jezici:

Proceduralni
Ne-proceduralni, ili deklarativni

Jezici koji omoguuju dobijanje informacija iz baze.


Kategorije upitnih jezika

Upitni jezici

(Query Languages)

Upitni Jezici

BAZE PODATAKA

Operacije su definisane na jednoj (V, ) ili dve


relacije (, , x) i kao rezultat daju novu relaciju.

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)

VA=B ^ D > 5 (r)

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_number, balance (account)

gde su A1 , A2 atributi a r relacija.


Rezultat je relacija od k kolona koje su navedene
kao predikati operacije
Vrste koje se ponavljaju se uklanjaju iz rezultata,
jer su relacije skupovi
Primer: Eliminisanje atributa branch_name iz

account

Notacija:

Operacija Projekcije

Primer:

<atribut>op <atribut> ili <konstanta>


gde je op: =, z, >, t. <. d

gde je p formula predikatnog rauna koja se sastoji


od lanova povezanih sa : (i), (ili), (ne)
Svaki lan je:

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 i s moraju imati isti broj atributa


Domeni atributa r i s moraju biti kompatibilni

Razlika je mogua izmeu kompatibilnih


relacija.

r s = {t | t r i t s}

Notacija:
Definicija:

Operacija Razlike

customer_name (depositor) customer_name (borrower)

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

Mogu se praviti izrazi korienjem vie operacija


Primer: VA=C(r x s)
rxs
A B C D E

Kombinovanje operacija (primer)

r x s:

Relacije r,

Dekartov Proizvod (primer)

1 ,A2

,..., A n )

(E )
vraa rezultat izraza E pod imenom X, sa
atributima preimenovanim u A1 , A2 , ., An .

U x(A

vraa izraz E pod imenom X


Ako izraz relacione algebre E ima n atributa, tada

Omoguuje imenovanje, i referisanje, rezultata


izraza u relacionoj algebri.
Omoguuje referisanje na relaciju sa vie imena.
Primer:
U x ( E)

Operacija Preimenovanja

Pretpostavlja se da su skupovi atributi r(R) i


s(S) uzajamno iskljuivi. (R S = ).
Ako skupovi atibuta r(R) i s(S) nisu
iskljuivi, moraju se preimenovati.

Notacija
rxs
Definicija:
r x s = {t q | t r i q s}

Operacija Dekartov Proizvod

customer_name (borrower) customer_name (depositor)

loan and an account at bank.

Find the names of all customers who have a

customer_name (borrower) customer_name (depositor)

Find the names of all customers who have a


loan, an account, or both, from the bank

Primeri (2)

borrower (customer_name, loan_number)

depositor (customer_name, account_number)

loan (loan_number, branch_name, amount)

account (account_number, branch_name, balance)

customer (customer_name, customer_street,


customer_city)

branch (branch_name, branch_city, assets)

Banka (primer)

customer_name(depositor)

(Vborrower.loan_number = loan.loan_number(borrower x loan)))

at the Perryridge branch but do not have an account


at any branch of the bank.
customer_name (Vbranch_name = Perryridge

Find the names of all customers who have a loan

(Vborrower.loan_number = loan.loan_number(borrower x loan)))

Find the names of all customers who have a


loan at the Perryridge branch.
customer_name (Vbranch_name=Perryridge

Primeri (3)

loan_number (Vamount > 1200 (loan))

amount greater than $1200

Find the loan number for each loan of an

Vamount > 1200 (loan)

Find all loans of over $1200

Primeri (1)

Query 2

Vborrower.loan_number = loan.loan_number (borrower x loan)))

customer_name (Vbranch_name = Perryridge (

Query 1

U x (E1), x je novo ime za rezultat E1

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

Neka su E1 i E2 izrazi relacione algebre; Tada su izrazi


relacione algebre i:

Konstantne relacije

Relacije u bazi podataka

Izraz relacione algebre sastoji se od:

Formalna Definicija Relacione Algebre

(Vbranch_name = Perryridge (loan)) x borrower))

customer_name(Vloan.loan_number = borrower.loan_number (

Find the names of all customers who have a loan


at the Perryridge branch.

Primeri (4)

Prirodno Spajanje (Natural join)


Deljenje (Division)
Dodeljivanje (Assignment)

Presek (Set intersection)

Definiemo dodatne operacije koje


pojednostavljuju uobiajene upite.

Dodatne Operacije

(Vaccount.balance < d.balance (account x Ud (account)))

The query is:


balance(account) - account.balance

Use set difference to find those account balances that


were not found in the earlier step.

account balance with all others

Find those balances that are not the largest


Rename account relation as d so that we can compare each

Strategy:

Find the largest account balance

Primeri (5)

ema rezultata = (A, B, C, D, E)


r s je definisano kao:
r.A, r.B, r.C, r.D, s.E (Vr.B = s.B r.D = s.D (r x s))

Primer: R = (A, B, C, D), S = (E, B, D)

t ima istu vrednost kao ts na s

t ima istu vrednost kao tr na r

Posmatrajmo neki par torki tr iz r i ts iz s.


Ako tr i ts imaju istu vrednost na atributima u R S,
rezultatu treba dodati torku t, takvu da

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

Definicija osnovnim operacijama relacione


algebre:
r s = r (r s)

r, s imaju isti broj atributa


atributi relacija r i s su kompatibilni

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

Prirodno Spajanje (primer)

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

Gde tu oznaava konkatenaciju torki t i u u jednu torku

r y s = { t | t R-S (r)  u s ( tu r ) }

R S = (A1, , Am)

Rezultat operacije r y s je relacija na emi

S = (B1, , Bn)

R = (A1, , Am , B1, , Bn )

Neka su r i s relacije na emama R i S respektivno


takve da je

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

R-S (r ) takve da za neke torke u s, tu r.

R-S (R-S (r ) x s ) R-S,S (r )) daje one torke t u

R-S,S (r) preureuje atribute relacije r

r y s = R-S (r ) R-S ( ( R-S (r ) x s ) R-S,S (r ))

Definicija osnovnim operacijama relacione algebre


Neka su r(R) i s(S) relacije, i neka je S R

Neka je q = r y s
Tada je q najvea relacija koja zadovoljava q x s r

Osobina

Deljenje (Definicija Osn. Op. Rel. Alg.)

r y s:

Relacije r, s:

Deljenje (primer 1)

account))

account ))

customer_name, branch_name (depositor


account)
y Utemp(branch_name) ({(Downtown ), (Uptown )})

Query 2

Note that Query 2 uses a constant relation.

customer_name (Vbranch_name = Uptown (depositor

customer_name (Vbranch_name = Downtown (depositor

Query 1

Find all customers who have an account from at


least the Downtown and the Uptown branches.

Primeri (2)

Mogu se koristiti promenljive u narednim izrazima.

Rezultat desno od m je dodeljen promenljivoj relaciji na


levoj strani m.

Dodela se mora uvek vriti u privremenu promenljivu


relaciju.
Primer: Napiimo r y s kao
temp1 m R-S (r )
temp2 m R-S ((temp1 x s ) R-S,S (r ))
result = temp1 temp2

niza dodela
zavrno sa izrazom ija je vrednost rezultat upita.

Piemo upit kao sekvencijalni program koji se sastoji od

Operacija dodele (m) olakava pisanje


kompleksnih upita.

Operacija Dodele

loan )

customer_name, branch_name (depositor account)


y branch_name (Vbranch_city = Brooklyn (branch))

Find all customers who have an account at all


branches located in Brooklyn city.

Primeri (3)

customer-name, loan-number, amount (borrower

Find the name of all customers who have a


loan at the bank and the loan amount

customer_name (borrower) customer_name (depositor)

loan and an account at bank.

Find the names of all customers who have a

Primeri (1)

f t r (Q (t )) {postoji neka torka t u relaciji r


takva da je predikat Q (t ) istinit
f t r (Q (t )) {Q je istinito za svaku torku t
u relaciji r

5. Skup kvantifikatora:

4. Implikacija ():
x y, ako je x istinito, tada je i y istinito
x y {x v y

3. Skup logikih operacija: i (), ili (v) ne ()

2. Skup operatora poredjenja: (, d, , z, !, t)

1. Skup atributa i konstanti

Formula Predikatnog Rauna

SQL

Relacioni Raun sa Torkama (Tuple Relational


Calculus)
Relacioni Raun sa Domenima (Domain Relational
Calculus)

Relacioni Raun

Relaciona Algebra

Upitni Jezici

Primetimo da je relacija na emi [loan_number] implicitno definisana upitom

s [amount ] ! 1200)}

{t |  s loan (t [loan_number ] = s [loan_number ]

amount greater than $1200

Find the loan number for each loan of an

{t | t loan t [amount ] ! 1200}

Find the loan_number, branch_name, and


amount for loans of over $1200

Primeri (1)

Neproceduralni upitni jezik, u kome svaki upit


ima oblik
{t | P (t ) }
To je skup svih torki t takvih da je predikat
P istinit za t
t je promenljiva torka, a t [A ] oznaava
vrednost torke t na atributu A
t r oznaava da je torka t u relaciji r
P je formula predikatnog rauna

Relacioni Raun sa Torkama

( w [branch_name ] = u [branch_name ]))))}

 w account ( w[account_number ] = s [account_number ]

 s depositor (t [customer_name ] = s [customer_name ]

(  u branch (u [branch_city ] = Brooklyn

{t |  r customer (t [customer_name ] = r [customer_name ])

branches located in Brooklyn:

Find the names of all customers who have an account at all

{t | s loan (s [branch_name ] = Perryridge


u borrower (u [loan_number ] = s [loan_number ]
t [customer_name ] = u [customer_name ])
 v customer (u [customer_name ] = v [customer_name ]
t [customer_city ] = v [customer_city ])))}

Find the names of all customers having a loan from the


Perryridge branch, and the cities in which they live

Primeri (4)

{t | s borrower ( t [customer_name ] = s [customer_name ])


u depositor ( t [customer_name ] = u [customer_name] )

and an account at the bank

Find the names of all customers who have a loan

{t | s borrower ( t [customer_name ] = s [customer_name ])


u depositor ( t [customer_name ] = u [customer_name ])

Find the names of all customers having a loan, an


account, or both at the bank

Primeri (2)

Primer: { t | t [A] = 5 true } nije siguran upit --- definie


beskonaan skup sa vrednostima atributa koje se ne
pojavljuju ni u jednoj relaciji, torki ili konstanti u P.

Izraz {t | P (t )} relacionog rauna sa torkama je


siguran ako se svaka komponenta t nalazi u nekoj
od relacija, torki, ili konstanti koje se nalaze u P

Ograniavamo se na sigurne upite.

Na primer, rezultat upita { t | t r } je beskonana relacija


ako je domen bilo kog atributa relacije r beskonaan

Upit u relacionom raunu sa torkama moe


generisati beskonanu relaciju.

Problem Beskonane Relacije

{t | s borrower (t [customer_name ] = s [customer_name ]


u loan (u [branch_name ] = Perryridge
u [loan_number ] = s [loan_number ]))
not v depositor (v [customer_name ] =
t [customer_name ])}

the Perryridge branch, but no account at any


branch of the bank

Find the names of all customers who have a loan at

{t | s borrower (t [customer_name ] = s [customer_name ]


u loan (u [branch_name ] = Perryridge
u [loan_number ] = s [loan_number ]))}

Find the names of all customers having a loan at


the Perryridge branch

Primeri (3)

 x,y,z ( x, y, z ! branch y = Brooklyn)


 a,b ( x, y, z ! account  c,a ! depositor)}

{ c ! |  s,n ( c, s, n ! customer)

account at all branches located in Brooklyn:

Find the names of all customers who have an

{ 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))}

Find the names of all customers having a loan, an


account, or both at the Perryridge branch:

Primeri (2)

x1, x2, , xn predstavljaju promenljive domena


P je formula predikatnog rauna

Neproceduralni upitni jezik, u kome svaki upit


ima oblik
{  x1, x2, , xn ! | P (x1, x2, , xn)}

Relacioni Raun sa Domenima

3. Za svaku formulu oblika x (P1 (x )), formula je


istinita ako i samo ako je P1(x ) istinito za sve
vrednosti x iz dom (P1).

2. Za svaku formulu oblika x (P1(x )), formula je


istinita ako i samo ako postoji vrednost x u dom(P1)
takvo da je P1(x ) istinito.

1. Sve vrednosti koje se pojavljuju u torkama izraza su


vrednosti iz dom (P ) (to jest, vrednosti se
pojavljuju u P ili u torki relacije u P ).

Izraz:
{  x1, x2, , xn ! | P (x1, x2, , xn )}
je siguran ako vai sledee:

Problem Beskonane Relacije

f{ c, a ! |  l ( c, l ! borrower  l, Perryridge, a ! loan)}

b = Perryridge))}

f{ c, a ! |  l ( c, l ! borrower b ( l, b, a ! loan

the Perryridge branch and the loan amount:

Find the names of all customers who have a loan from

{ c ! |  l, b, a ( c, l ! borrower  l, b, a ! loan a > 1200)}

over $1200

Find the names of all customers who have a loan of

{ l, b, a ! |  l, b, a ! loan a > 1200}

Find the loan_number, branch_name, and amount for


loans of over $1200

Primeri (1)

Definicija Podataka (Data Definition)

Definicija Podataka
Osnovna Struktura Upita
Skupovne Operacije
Agregatne Funkcije
Null Vrednosti
Ugnjedeni Upiti
Kompleksni Upiti
Pogledi
Modifikacije Baze
Spojene Relacije**

Fizika struktura relacija na disku.

Informacije o Sigurnosti i Zatiti relacija.

Skupovi indeksa relacija.

Ogranienja Integriteta

Domeni vrednosti atributa.

eme relacija.

Specificiraju se relacije i informacije o


relacijama:

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

Definicija relacije se vri komandom create table:


create table r (A1 D1, A2 D2, ..., An Dn,
(integrity-constraint1),
...,
(integrity-constraintk))

Komanda create

Komercijalni sistemi nude najvei deo ili sve


mogunosti standarda SQL-92, plus razliite
mogunosti iz kasnijih standarda plus specijalne
mogunosti.

IBM Sequel jezik razvijen kao deo projekta System R


u IBM San Jose Research Laboratory
Preimenovan u Structured Query Language (SQL)
ANSI i ISO standard SQL:

Istorijat

Rezultat SQL upita je relacija.

A1,A2 ,,An (V P (r1 u r2 u  u rm ))

SQL se bazira na skupovnim i relacionim operacijama


sa odreenim modifikacijama i unapreenjima
Tipini SQL upit je oblika:
select A1, A2, ..., An
from r1, r2, ..., rm
where P
gde su: Ai atributi, ri relacije, a P predikat.
Ovaj upit je ekvivalentan sledeem izrazu relacione
algebre:

Osnovna Struktura Upita

Deklaracija primary key automatski obezbedjuje not null u


standardu SQL-92 i novijim, u SQL-89 je potrebno
eksplicitno zadati

create table branch


(branch_name char(15),
branch_city
char(30),
assets
integer,
primary key (branch_name))

Primer: Deklaracija branch_name za primarni klju relacije


branch i obezbedjenje da vrednosti assets budu ne-negativne.

not null
primary key (A1, ..., An )

table

Ogranienja Integriteta u create

table

Napomena: SQL imena su case insensitive

Primer: Nai imena svih ekspozitura u relaciji


loan:
select branch_name
from loan
U relacionoj algebri, odgovarajui upit je:
branch_name (loan)

Odgovara operaciji projekcije u relacionoj algebri

Komandom select zadajemo listu atributa u


rezultatu upita

Komanda select (1)

gde je A ime atributa iz relacije r

alter table r drop A

Komanda alter table se moe koristiti i za


eliminisanje atributa iz relacije:

Sve vrednosti novog atributa u relaciji su null .

alter table r add A D


gde je A ime atributa koji se dodaje relaciji r a D
domen atributa A.

Komanda drop table brie iz baze sve informacije o


zadatoj relaciji.
Komanda alter table se koristi za dodavanje
atributa u postojeu relaciju:

Komande drop i alter

Nai sve brojeve kredita za kredite podignute u


ekspozituri Perryridge sa iznosima veim od $1200.
select loan_number
from loan
where branch_name = Perryridge and
amount > 1200
Mogu se koristiti logike operacije and, or, i not.
Mogu se koristiti aritmetiki izrazi.

Odgovara predikatu selekcije u relacionoj algebri.

Komanda where specificira uslove koje rezultat mora


zadovoljiti

Komanda where (1)

Kljuna re all specificira da duplikate ne treba


uklanjati.
select all branch_name
from loan

SQL dozvoljava duplikate u relacijama kao i u


rezultatu upita.
Za eliminaciju duplikata, koristi se kljuna re
distinct posle select.
Nai imena svih ekspozitura u relaciji loan, i
eliminisati duplikate
select distinct branch_name
from loan

Komanda select (2)

select loan_number
from loan
where amount between 90000 and 100000

Primer: Nai brojeve kredita sa iznosima izmeu


$90,000 i $100,000 (to jest, t $90,000 i d $100,000)

SQL dozvoljava korienje operatora between

Komanda where (2)

Zvezdica * u komandi select oznaava sve atribute


select *
from loan
Komanda select moe sadrati aritmetike izraze
koji ukljuuju operacije, +, , , /, na konstantama ili
atributima torki.
Upit:
select loan_number, branch_name, amount 100
from loan
daje relaciju koja se od relacije loan razlikuje po
vrednosti atributa amount koji je pomnoen sa 100.

Komanda select (3)

select distinct T.branch_name


from branch as T, branch as S
where T.assets > S.assets and S.branch_city = Brooklyn

nego neka ekspozitura u Brooklyn-u.

Nai imena svih ekspozitura koje imaju vei prihod

select customer_name, T.loan_number, S.amount


from borrower as T, loan as S
where T.loan_number = S.loan_number

Promenljive torki su definisane korienjem komande


as u komandi from.
Nai imena klijenata i brojeve njihovih kredita koje
imaju u nekoj ekspozituri.

Promenljive Torki

select customer_name, borrower.loan_number, amount


from borrower, loan
where borrower.loan_number = loan.loan_number and
branch_name = Perryridge

Nai ime, broj i iznos kredita za sve klijente koji


imaju kredit u ekspozituri Perryridge.

from borrower, loan

Nai Dekartov proizvod relacija borrower i loan


select

Odgovara operaciji Dekartovog proizvoda u relacionoj


algebri.

Komandom from se zadaju relacije na koje se upit


odnosi

Komanda from

Primer: order by customer_name desc

Moe se specificirati desc za opadajui ili asc za


rastui redosled, za svaki atribut; rastui redosled je
default.

Prikazati abecednim redom imena svih klijenata koji


imaju kredit u ekspozituri Perryridge
select distinct customer_name
from borrower, loan
where borrower.loan_number=loan.loan_number
and branch_name = Perryridge
order by customer_name

Sortiranje Prikazivanja Torki

from borrower, loan


where borrower.loan_number = loan.loan_number

amount

select customer_name, borrower.loan_number as loan_id,

SQL omoguuje preimenovanje relacija i


atributa korienjem komande as:
staro-ime as novo-ime
Nai ime, broj i iznos kredita za sve klijente;
preimenovati atribut loan_number u loan_id.

Operacija preimenovanja

avg:
min:
max:
sum:
count:

srednju vrednost
minimalnu vrednost
maximalnu vrednost
sumu vrednosti
broj vrednosti

Agregatne funkcije se izvravaju na skupu


vrednosti atributa relacije, i daju sledee
rezultate:

Agregatne Funkcije

m + n puta u r union all s


min(m,n) puta u r intersect all s
max(0, m n) puta u r except all s

Pretpostavimo da se torka pojavljuje m puta u r i n


puta u s, tada se pojavljuje:

Skupovne operacije union, intersect, i except


odgovaraju operacijama relacione algebre 
Svaka od ovih operacija automatski eliminie
duplikate; ako hoemo da zadrimo duplikate
koristimo odgovarajue multiset verzije union all,
intersect all i except all.

Skupovne Operacije

select count (*)


from customer

Find the number of tuples in the customer relation.

select count (distinct customer_name)


from depositor

Find the number of depositors in the bank.

select avg (balance)


from account
where branch_name = Perryridge

Find the average account balance at the Perryridge branch.

Agregatne Funkcije (Primeri)

(select customer_name from depositor)


except
(select customer_name from borrower)

Find all customers who have an account but no loan.

(select customer_name from depositor)


intersect
(select customer_name from borrower)

Find all customers who have both a loan and an account.

Find all customers who have a loan, an account, or both:


(select customer_name from depositor)
union
(select customer_name from borrower)

Skupovne Operacije (Primeri)

Agregatne funkcije ignoriu null vrednosti

Primer: 5 + null daje null

select loan_number
from loan
where amount is null
Rezultat bilo kojeg aritmetikog izraza sa null je null

Primer: Nai sve brojeve kredita sa null vrednostima za


iznos kredita.

Torke mogu imati null vrednosti, za neke od atributa


null oznaava nepoznatu vrednost ili da ta vrednost
ne postoji.
Predikat is null se koristi za proveru null vrednosti.

Null Vrednosti (1)

Atributi u komandi select izvan agregatne funkcije


moraju se nalaziti u listi group by

select branch_name, count (distinct customer_name)


from depositor, account
where depositor.account_number =account.account_number
group by branch_name

Nai broj ulagaa za svaku ekspozituru.

Agregatne Funkcije Group By

ili

null = null

Rezultat predikata komande where se tretira kao


false ako je unknown

OR:

(unknown or true) = true,


(unknown or false) = unknown
(unknown or unknown) = unknown
AND: (true and unknown) = unknown,
(false and unknown) = false,
(unknown and unknown) = unknown
NOT: (not unknown) = unknown
P is unknown je true ako je predikat P unknown

Tro-vrednosna logika koristi istinosnu vrednost


unknown:

Primer: 5 < null ili null <> null

Poreenje sa null daje unknown

Null Vrednosti (2)

Predikati u komandi having se primenjuju posle


formiranja grupa dok se predikati u komandi
where primenjuju pre formiranja grupa

select branch_name, avg (balance)


from account
group by branch_name
having avg (balance) > 1200

Nai imena svih ekspozitura u kojima je srednje


stanje na raunima vee od $1,200.

Agregatne Funkcije Having

select distinct customer_name


from borrower
where customer_name not in (select customer_name
from depositor )

do not have an account at the bank

Find all customers who have a loan at the bank but

select distinct customer_name


from borrower
where customer_name in (select customer_name
from depositor )

Find all customers who have both an account and a


loan at the bank.

Ugnjedeni Upiti (Primer)

Sve agregatne operacije izuzev count(*)


ignoriu torke sa null vrednostima na
agregiranim atributima.

Izraz ignorie null iznose kredita


Rezultat je null ako nema ne-null iznosa

Nai ukupnu sumu svih iznosa kredita


select sum (amount )
from loan

Null Vrednosti (3)

R.account_number = account.account_number and


account.branch_name = Perryridge )

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

Konstrukcijom unique se vri provera


postojanja dupliciranih torki u rezultatu.
Nai sve klijente koji imaju ne vie od jednog
rauna u ekspozituri Perryridge.

Provera Postojanja Dupliciranih Torki

Ugnjedeni upiti se obino koriste za testiranje


elemenata skupa, poreenje, i kardinalnost skupa.

Ugnjedeni upit je select-from-where izraz zadat


unutar drugog izraza.

SQL omoguuje ugnjedavanje upita.

Ugnjedeni Upiti

Potrebni su nam podskupovi konceptualnog modela.


Npr. Hoemo da omoguimo uvid u broj kredita
klijenta, ali ne i u iznos:
(select customer_name, loan_number
from borrower, loan
where borrower.loan_number = loan.loan_number)
Pogled (view) obezbeuje mehanizam za pravljenje
podskupova konceptualnog modela.
Neka relacija koja nije deo konceptualnog modela ali
je korisnik moe videti kao virtuelnu relaciju naziva
se pogled (view).

Pogledi (1)

R.account_number = account.account_number and


account.branch_name = Perryridge )

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

Nai sve klijente koji imaju najmanje dva


rauna u ekspozituri Perryridge.

Primer

Pogled nam omoguuje eliminisanje izraza u upitu.

Definisanje pogleda nije isto to i kreiranje nove


relacije kao rezultata nekog izraza u upitu

Poto je pogled definisan, ime pogleda se moe


koristiti za referisanje virtuelne relacije koju pogled
generie.

gde je v ime pogleda, a <query expression> neki


legalni SQL izraz.

create view v as < query expression >

Pogled se definie korienjem naredbe create


view koja ima sledeu formu

Pogledi (2)

Ne koristimo komandu having, ve sraunavamo privremenu


relaciju (pogled) branch_avg u komandi from, tako da atribut
branch_avg moemo koristiti direktno u komandi where.

SQL dozvoljava ugnjedavanje i unutar komande


from
Find the average account balance of those branches
where the average account balance is greater than
$1200.
select branch_name, avg_balance
from (select branch_name, avg (balance)
from account
group by branch_name )
as branch_avg ( branch_name, avg_balance)
where avg_balance > 1200

Ugnjedeni Upiti u from

Ako definicije pogleda nisu rekurzivne, petlja nije


beskonana

Ekspanzija pogleda se vri po sledeem algoritmu:


repeat
Nai neki pogled vi u e1
Zameni pogled vi sa definicionim izrazom za vi
until nema vie pogleda u e1

Neka je pogled v1 definisan izrazom e1 koji koristi


poglede.

Nain odreivanja znaenja pogleda definisanog


posredstvom drugih pogleda.

Ekspanzija Pogleda

select customer_name
from all_customer
where branch_name = Perryridge

Nai sve klijente ekspoziture Perryridge

create view all_customer as


(select branch_name, customer_name
from depositor, account
where depositor.account_number =
account.account_number )
union
(select branch_name, customer_name
from borrower, loan
where borrower.loan_number = loan.loan_number )

Pogled koji sadri ekspoziture i njihove klijente

Pogledi (Primer)

Obrisati sve raune u svakoj ekspozituri u gradu


Needham.
delete from account
where branch_name in (select branch_name
from branch
where branch_city = Needham)

Obrisati sve raune u ekspozituri Perryridge


delete from account
where branch_name = Perryridge

Modifikacije Baze - Brisanje

Za pogled v se kae da je rekurzivan ako zavisi


sam od sebe.

od v1 ka v2

Za pogled v1 se kae da zavisi od pogleda v2 ako


direktno zavisi od v2 ili postoji putanja zavisnosti

Za pogled v1 se kae da direktno zavisi (depend


directly) od pogleda v2 ako se v2 koristi u definiciji
pogledav1

Za definisanje pogleda se mogu koristiti drugi


pogledi

Definisanje Pogleda Drugim Pogledima

Modifikacije Baze - Dodavanje Torki(2)

2. Zatim, obrisati sve naene torke (bez ponovnog


sraunavanja avg i pretraivanja torki)

1. Prvo, sraunati avg stanje i nai sve torke za brisanje

Reenje koje se koristi u SQL:

Problem: ako briemo torke iz rauna, srednje stanje se


menja

insert into table1 select * from table1

insert into account


select loan_number, branch_name, 200
from loan
where branch_name = Perryridge
insert into depositor
select customer_name, loan_number
from loan, borrower
where branch_name = Perryridge
and loan.account_number = borrower.account_number
Struktura select from where se realizuje pre nego to se
izvri dodavanje torke u relaciju; u suprotnom bi upiti kao to je
sledei izazivali probleme:

Poklon od $200 na tedni raun za sve klijente sa kreditom u


ekspozituri Perryridge, pri emu se broj kredita koristi kao broj
novog tednog rauna.

delete from account


where balance < (select avg (balance )
from account )

Obrisati sve raune ija su stanja ispod


srednjeg stanja rauna u banci.

Brisanje - Problem

update account
set balance = balance 1.05
where balance d 10000
Redosled je vaan
Bolje je koristiti case strukturu

Auriranje se vri sa komandom update:


update account
set balance = balance 1.06
where balance > 10000

Dodati kamatu od 6% za stanja na raunima preko


$10,000, a 5% za ostale.

Modifikacije Baze - Auriranje Torki

insert into account


values (A-777,Perryridge, null )

stanjem

Dodavanje nove torke u relaciju account sa null

Dodavanje nove torke u relaciju account


insert into account
values (A-9732, Perryridge,1200)
ili ekvivalentno
insert into account (branch_name, balance,
account_number)
values (Perryridge, 1200, A-9732)

Modifikacije Baze - Dodavanje Torki(1)

Operacija Join spaja dve relacije i vraa kao


rezultat novu relaciju.
Tipino se koristi u komandi from
Join uslov definie koje torke u dve relacije se
poklapaju, i koji atributi se pojavljuju u rezultatu
spajanja.
Join tip definie kako se tretiraju torke koje se ne
poklapaju (na osnovu join uslova).

Neka auriranja posredstvom pogleda se ne mogu


realizovati na relacijama na kojima je pogled
definisan

Veina SQL implementacija dozvoljava auriranje


samo na pogledima bez agregacija definisanim na
jednoj relaciji

Moe za loan ili account, i treba kreirati novi loan/account broj!

insert into all_customer values ( Perryridge, John)

Neka nisu jedinstvena

insert into v values (L-99, Downtown, 23)

create view v as
select branch_name from account

Spojene Relacije** (Joined Relations**)

Kreiranje pogleda sa svim podacima o kreditu izuzev


iznosa kredita:
create view branch_loan as
select branch_name, loan_number
from loan
Dodavanje nove torke u pogled branch_loan
insert into branch_loan
values (Perryridge, L-307)
Ovo dodavanje mora biti realizovano dodavanjem
torke
(L-307, Perryridge, null )
u relaciju loan na kojoj je pogled definisan.

Auriranje Posredstvom Pogleda (1)

Auriranje Posredstvom Pogleda (2)

update account
set balance = case
when balance <= 10000 then
balance *1.05
else balance * 1.06
end

Isti upit: Dodati kamatu od 6% za stanja na


raunima preko $10,000, a 5% za ostale.

Auriranje Torki - Case

select customer_name
from (depositor natural full outer join borrower )
where account_number is null or loan_number is null

Find all customers who have either an account or a


loan (but not both) at the bank.

loan full outer join borrower using (loan_number)

Spojene Relacije - Primeri (3)

loan.loan_number = borrower.loan_number

loan left outer join borrower on

loan.loan_number = borrower.loan_number

loan inner join borrower on

Spojene Relacije - Primeri (1)

loan natural right outer join borrower

loan natural inner join borrower

Spojene Relacije - Primeri (2)

R moe biti jedna relacija koja sadri sve atribute od interesa


(takva relacija se naziva univerzalna relacija).

R moe biti rezultat nekog ad hoc dizajna relacija.

6.3

R moe biti generisano prevoenjem modela E-V u skup relacijatabela.

Pretpostavljamo da je data relaciona ema R

Date su Relacione eme

6.1

Dizajn Relacione Baze

BAZE PODATAKA

borrower = (customer_id, loan_number)


depositor = (customer_id, account_number)
cust_banker = (customer_id, employee_id, type)
works_for = (worker_employee_id, manager_employee_id)
payment = (loan_number, payment_number, payment_date, payment_amount)
savings_account = (account_number, interest_rate)
checking_account = (account_number, overdraft_amount)

6.4

loan_branch = (loan_number, branch_name)

account_branch = (account_number, branch_name)

dependent_name = (employee_id, dname)

employee = (employee_id. employee_name, telephone_number, start_date)

account = (account_number, balance)

loan = (loan_number, amount)

customer = (customer_id, customer_name, customer_street, customer_city)

branch = (branch_name, branch_city, assets)

ema Bankarskog Sistema

6.2

Modeliranje Privremenih Podataka

Neki Aspekti Dizajna

Druge Normalne Forme

Dekompozicija Korienjem Vievrednosnih Zavisnosti

Teorija Funkcionalnih Zavisnosti

Dekompozicija Korienjem Funkcionalnih Zavisnosti

Atomski Domeni i Prva Normalna Forma

Karakteristike Dobrog Dizajna Relacione Baze

Dizajn Relacione Baze

null vrednosti.

6.7

Rezultat je mogue neadekvatno predstavljanje informacija. Moramo uvesti

Rezultat je mogue ponavljanje informacija.

bor_loan_dep_acc = (customer_id, loan_number, amount, account_number,


balance)

account

Pretpostavimo da napravimo jednu relaciju od borrower, loan, depositor i

Spajanje ema?

6.5

Rezultat je mogue ponavljanje informacija (L-100 u primeru)

6.6

Posmatrajmo injenicu ako imamo emu (loan_number, amount), tada je


loan_number kandidat klju
Nazovimo tu injenicu funkcionalna zavisnost:

Meutim pri dekompoziciji se mogu pojaviti problemi. Pretpostavimo


dekompoziciju relacije employee na dve relacije:

6.8

Dolazi do gubitka informacija spajanjem se ne moe rekonstruisati originalna


relacija employee (primer na sledeem slajdu) kaemo da je to
dekompozicija sa gubitkom pri spajanju.

employee2 = (employee_name, telephone_number, start_date)

employee1 = (employee_id, employee_name)

U relaciji bor_loan, loan_number nije kandidat klju, tako da se iznos kredita


moe ponavljati. To ukazuje na potrebu dekomponovanja relacije bor_loan.

loan_number o amount

Pretpostavimo da startujemo sa bor_loan. Na osnovu ega odluiti da treba da


je dekomponujemo u borrower i loan?

Kako Dekomponovati?

Nema ponavljanja (primer)

loan_amt_br = (loan_number, amount, branch_name)

Pretpostavimo da napravimo jednu relaciju od loan_branch i loan

Pretpostavimo da napravimo jednu relaciju od borrower i loan

bor_loan = (customer_id, loan_number, amount )

Kombinovana ema bez Ponavljanja

Spajanje ema?

koji se mogu podeliti na manje celine, npr RTI4BP

imena, kompozitni atributi

 Identifikatori

 Skup

Primeri ne-atomskih domena:

Pretpostavljamo da su sve relacije u prvoj normalnoj formi

Pretpostavimo da studenti dobijaju identifikatore predmeta u formi


CS0012 ili EE1127

Ako se prva dva karaktera koriste za identifikaciju odseka, domeni


identifikatora predmeta nisu atomski.

To je loa praksa: informacije u aplikativnom programu umesto u


bazi.

6.11

Primer: Stringovi se normalno smatraju nedeljivim

dekompozicija je bez gubitka pri spajanju

svaka relacija zadovoljava karakteristike dobrog dizajna

Vievrednosnih zavisnosti (multivalued dependencies)


z

6.12

Funkcionalnih zavisnosti (functional dependencies)


z

Teorija se bazira na ogranienjima izraenim posredstvom:

{R1, R2, ..., Rn} takvih da vai:

U sluaju da ne zadovoljava, kako je dekomponovati na skup relacija

dizajna (da li je u dobroj formi)?

Kako odrediti da li neka relacija R zadovoljava karakteristike dobrog

Da li je neki domen atomski ili ne ustvari zavisi od toga kako se

elementi domena koriste.

Cilj Formalizam zasnovan na Teoriji

6.10

Primer: Skup rauna memorisan sa klijentom, i skup vlasnika


rauna memorisan sa raunom

redundantnost podataka

Ne-atomske vrednosti komplikuju memorisanje i uzrokuju

atributa relacije R atomski.

Relaciona ema R je u Prvoj Normalnoj Formi ako su domeni svih

nedeljivim celinama

Domeni atributa su atomski ako se njegovi elementi mogu smatrati

Prva Normalna Forma (1NF)

Prva Normalna Forma (1NF) - nastavak

6.9

Dekompozicija sa Gubitkom pri Spajanju

4
5
7

ne postoji D K, D o R

a da ne vai:

6.15

amount o customer_name

loan_number o amount

Oekujemo da vai sledea funkcionalna zavisnost:

bor_loan = (customer_id, loan_number, amount ).

mogu biti izraena korienjem superkljueva. Posmatrajmo emu:

Funkcionalne zavisnosti omoguuju izraavanje ogranienja koja ne

K o R, i

customer_name o customer_name


6.16

Generalno, funkcionalna zavisnost D o E je trivijalna ako je E D

customer_name, loan_number o customer_name




Primer:

relacije

Funkcionalna zavisnost je trivijalna ako je zadovoljena za sve instance

K je superklju relacione eme R ako i samo ako vai K o R

K je kandidat klju eme R ako i samo ako vai

Funkcionalne Zavisnosti (nastavak)

6.14

Na ovoj relaciji, A o B NE vai, ali B o A vai.

1
1
3

Primer: Posmatrajmo relaciju r(A,B ) sa sledeim instancama:

t1[D] = t2 [D] t1[E ] = t2 [E ]

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

Funkcionalne Zavisnosti (nastavak)

6.13

Funkcionalna zavisnost je generalizacija pojma kljua.

odreene vrednostima drugog skupa atributa.

D R and E R

Neka je R relaciona ema, a D i E atributi ili skupovi atributa

Ogranienja na skupu legalnih relacija.

Zahtevaju da su vrednosti nekog skupa atributa jednoznano

Funkcionalne Zavisnosti (definicija)

Funkcionalne Zavisnosti

Ako je relacija r legalna na skupu F funkcionalnih zavisnosti,


kaemo da r zadovoljava F.

da F vai na R ako sve legalne relacije na R


zadovoljavaju skup funkcionalnih zavisnosti F.

 Kaemo

specifikaciju ogranienja na skupu legalnih relacija

testiranje legalnosti relacija na datom skupu funkcionalnih zavisnosti.

2.: iz CG o I, dodavanjem CG, dobijamo CG o CGI,

2.: iz A o C , dodavanjem G, dobijamo AG o CG


i primenom 3. sa CG o I

3.: iz A o B i B o H

6.19

i primenom 3.

i iz CG o H, dodavanjem I, dobijamo CGI o HI,

 primenom

CG o HI

 primenom

AG o I

 primenom

AoH

Nalaenje nekih lanova F+

F={ AoB
AoC
CG o H
CG o I
B o H}

R = (A, B, C, G, H, I)

6.17

Primer, specifina instanca relacije loan moe zadovoljavati


amount o customer_name.

Primer

funkcionalnu zavisnost iako funkcionalna zavisnost ne vai na svim


legalnim instancama.

Primedba: Specifina instanca relacione eme moe zadovoljavati

Funkcionalne zavisnosti se koriste za:

Korienje Funkcionalnih Zavisnosti

Primer: Ako A o B i B o C, tada vai i A o C

(augmentativnost (augmentation))
(tranzitivnost (transitivity))

Ako vai D o E, tada vai J D o J E


Ako vai D o E, i E o J, tada vai D o J

2.
3.

svih vaeih funkcionalnih zavisnosti.

(dekompozicija)
(pseudotranzitivnost)

Ako vai D o E J, tada vai D o E i D o J


Ako vai D o E i J E o G, tada vai D J o G

z
z

6.20

Ova pravila se mogu dobiti iz Armstrong-ovih aksioma.

(unija)

Ako vai D o E i D o J, tada vai D o E J


z

pravila:

Sraunavanje F+ se moe dalje pojednostaviti korienjem dodatnih

Zatvara (Nastavak)

6.18

samo vaeih funkcionalnih zavisnosti i

Armstrong-ovi Aksiomi omoguuju nalaenje

(refleksivnost(reflexivity))

Ako je E D, tada vai D o E

1.

Zatvara F+ moemo nai primenom Armstrong-ovih Aksioma:

F+ je nadskup skupa F.

Zatvara skupa F se oznaava sa F+.

naziva Zatvaraem skupa F.

Skup svih funkcionalnih zavisnosti koje su logiki implicirane skupom F se

zavisnosti koje su logiki implicirane skupom F.

Za dati skup funkcionalnih zavisnosti F, moemo nai i druge funkcionalne

Zatvara Skupa Funkcionalnih Zavisnosti

(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.

Da bi proverili da li je D superklju, nalazimo D+, i proveravamo da


li D+ sadri sve atribute R.

Nalaenje D+ je znatno jednostavnije od nalaenja F+.

Znai da umesto da nalazimo F+, nalazimo D+, i potom


proveravamo da li sadri E.

Da bi proverili da li vai funkcionalna zavisnost D o E (ili, drugim


reima, da li je u F+), dovoljno je proveriti da li je E D+.

6.23

Za svaki J R, nalazimo zatvara J+, i za svako S J+,


generiemo funkcionalnu zavisnost J o S.

Nalaenje zatvaraa F

Provera funkcionalnih zavisnosti

6.24

Zato to vai loan_number o amount na bor_loan ali loan_number nije


superklju

bor_loan = ( customer_id, loan_number, amount )

Primer eme koja nije u BCNF:

D je superklju za R

D o E je trivijalna (to jest., E D)

gde D R i E R, vai najmanje jedno od sledea dva tvrenja:

Do E

Relaciona ema R je u BCNF u odnosu na skup F funkcionalnih


zavisnosti ako za sve funkcionalne zavisnosti u F+ oblika

Provera superkljua:

6.22

Da li vai A o R? == Da li je (A)+ R

1.

1.

Da li je AG super klju?

1.

4. result = ABCGHI (CG o I i CG AGBCH)


Da li je AG kandidat klju?

(A o C i A o B)

2. result = ABCG

1. result = AG

Boyce-Codd-ova Normalna Forma (BCNF)

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

Algoritam za sraunavanje D+, na skupu F

AoC
CG o H
CG o I
B o H}
(AG)+

F = {A o B

R = (A, B, C, G, H, I)

Primer

Korienje Zatvaraa Skupa Atributa

zavisnosti F, predstavlja skup atributa koji su funkcionalno zavisni od


D na skupu F.

Zatvara skupa atributa D u oznaci D+, na skupu funkcionalnih

Zatvara Skupa Atributa

E = amount

Ouvane zavisnosti

R1 R2 = {B} i B o BC

Dekompozicija bez gubitka pri spajanju:

6.27

Nisu ouvane zavisnosti


(ne moemo proveriti B o C bez sraunavanja R1

R1 R2 = {A} i A o AB

Dekompozicija bez gubitka pri spajanju:

2) R1 = (A, B), R2 = (A, C)

R2)

Moemo izvriti dekompoziciju na dva razliita naina

1) R1 = (A, B), R2 = (B, C)

F = {A o B, B o C)

R = (A, B, C)

6.25

(DU E ) = ( loan_number, amount )


( R - ( E - D ) ) = ( customer_id, loan_number )

Primer

pa bor_loan dekomponujemo na

D = loan_number

loan_number o amount vai, ali loan_number nije superklju

bor_loan = ( customer_id, loan_number, amount )

Za primer sa prethodnog slajda,

(DU E )
(R-(E-D))

Dekomponovaemo relaciju R na sledee relacije:

uslov za BCNF.

Pretpostavimo emu R i ne-trivijalnu zavisnost DoE koja ne zadovoljava

Dekompozicija ema u BCNF

R2 (r )

R1 R 2 o R2

R1 R 2 o R1

6.26

6.28

zavisnosti, pa se zadovoljavamo manje strogom normalnom formom,


poznatom kao trea normalna forma.

U optem sluaju decompozicija u BCNF ne obezbeuje ouvanje

testirati samo one zavisnosti koje vae na po samo jednoj relaciji da bi


bili sigurni da vae sve funkcionalne zavisnosti.

Kaemo da je dekompozicija sa Ouvanjem Zavisnosti ako je dovoljno

ukoliko se ne moe realizovati samo na jednoj relaciji.

Provera ogranienja, ukljuujui i funkcionalne zavisnosti, je skupa

BCNF i Ouvanje Zavisnosti

gubitka pri spajanju ako i samo ako je najmanje jedna od


sledeih funkcionalnih zavisnosti u F+:

Dekompozicija eme R na eme R1 i R2 je dekompozicija bez

r = R1 (r )

r na emi R mora da vai

Za dekompoziciju eme R = (R1, R2), za sve mogue relacije

Dekompozicija bez gubitka pri spajanju

je sa ouvanjem zavisnosti, ako je

Dekompozicija bez gubitka pri spajanju

Ouvane zavisnosti

6.31

R1 i R2 u BCNF

Dekompozicija R1 = (A, B), R2 = (B, C)

R nije u BCNF

F = {A o B
B o C}
Klju = {A}

R = (A, B, C )

6.29

nije, tada provera zadovoljenja funkcionalnih zavisnosti


pri auriranju zahteva skupa prirodna spajanja.

 Ako

(F1 F2 Fn )+ = F +

 Dekompozicija

Neka je Fi skup funkcionalnih zavisnosti iz F + koji ukljuuje samo


atribute iz Ri.

Primer

Ouvanje Zavisnosti

Ako result sadri sve atribute u E, tada je funkcionalna zavisnost


D o E ouvana.

result = D
while (promene u result) do
for each Ri u dekompoziciji
t = (result Ri)+ Ri
result = result t

6.32

Svaka Ri je u BCNF, i dekompozicija je bez gubitka pri spajanju.

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;

Algoritam Dekompozicije ema u BCNF

6.30

Algoritam je polinomijalne sloenosti, umesto eksponencijalne sloenosti za


nalaenje F+ i (F1 F2 Fn)+

Test primenjujemo na sve funkcionalne zavisnosti u F

primenjujemo sledei test (sa D+ umesto F+):

Za proveru ouvanja D o E u dekompoziciji eme R na R1, R2, , Rn

Provera Ouvanja Zavisnosti

customer_name, loan_number, amount )

R3 = (branch_name, loan_number, amount )

R4 = (customer_name, loan_number )

Efikasnost provere ouvanja zavisnosti je vana

Ali funkcionalne zavisnosti se mogu proveravati na


pojedinanim relacijama bez prirodnih spajanja.

Uvek postoji dekompozicija u 3NF bez gubitka pri spajanju i


sa ouvanim zavisnostima.

6.35

Dozvoljavamo izvesno ponavljanje

(Trea Normalna Forma (3NF))

Reenje: Definisati slabiju normalnu formu

BCNF ne obezbeuje ouvanje zavisnosti, i

ouvanja zavisnosti

6.36

Trei uslov omoguava izvesno ponavljanje informacija u cilju

dva uslova mora vaiti).

Ako je relacija u BCNF tada je i u 3NF (poto u BCNF jedan od prva

Svaki atribut A u E D je sadran u kandidat kljuu za R.


(svaki atribut moe biti u razliitom kandidat kljuu)

D je superklju za R
z
z

D o E je trivijalna (to jest., E D)


z

gde D R i E R, vai najmanje jedno od sledeih tvrenja:

Do E

skup F funkcionalnih zavisnosti ako za sve funkcionalne zavisnosti u


F+ oblika

Relaciona ema R je u Treoj Normalnoj Formi (3NF) u odnosu na

Kako postupiti u situacijama kada

Trea Normalna Forma (3NF)

6.34

To implicira da moramo izvriti spajanje da bi proverili


funkcionalnu zavisnost JK o L

JK o L

Bilo koja dekompozicija R ne obezbeuje ouvanje

R nije u BCNF

F = {JK o L
LoK}
Dva kandidat kljua = JK i JL

Zato Trea Normalna Forma (3NF)

6.33

R1, R3, R4

R2 = (branch_name, customer_name, loan_number, amount )

Finalna dekompozicija

R1 = (branch_name, branch_city, assets )

Dekompozicija

Klju = {loan_number, customer_name}

loan_number o amount branch_name }

F = {branch_name o assets branch_city

R = (J, K, L )

Nije uvek mogue izvriti dekompoziciju u BCNF i ouvati funkcionalne


zavisnosti

Originalna relacija R i skup funkcionalnih zavisnosti F

R = (branch_name, branch_city, assets,

BCNF i Ouvanje Zavisnosti

Primer

k1
k1
k1
k2

l1
l1
l1
l2

j1
j2
j3
null

6.39

*Kanoniki prekriva F je minimalni skup funkcionalnih zavisnosti


ekvivalentan sa F, koji nema redundantnih zavisnosti ili redundantnih
delova zavisnosti.

Svaka Ri je u 3NF, i dekompozicija je bez gubitka pri spajanju i sa ouvanim


zavisnostima.

Neka je Fc kanoniki prekriva F;


i := 0;
for each funkcionalnu zavisnost D o E u Fc do
if nijedna od ema Rj, 1 d j d i ne sadri D E
then begin
i := i + 1;
Ri := D E
end
if nijedna od ema Rj, 1 d j d i ne sadri kandidat klju R
then begin
i := i + 1;
Ri := neki kandidat klju R;
end
return (R1, R2, ..., Ri)

Algoritam Dekompozicije ema u 3NF

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)

if generie (ali je podskup prve eme pa ne ulazi u rezultat):

(customer_id, employee_id, branch_name, type )

for petlja generie:

customer_id, employee_id o branch_name, type


employee_id o branch_name

Funkcionalne zavisnosti koje vae na ovoj emi:

cust_banker_branch = (customer_id, employee_id, branch_name, type )

ema relacije:

Primer

6.38

Potreba za null vrednostima (predstavljanje veze


l2, k2 ako nemamo odgovarajuu vrednost za J).

ponavljanje informacija (veza l1, k1)

Dva kandidat kljua: JK i JL

R = (J, K, L)
F = {JK o L, L o K }

R = (J, K, L )
F = {JK o L, L o K }
z

Primer

Postoji ponavljanje u emi R

Primer

Relacija R:

Primer

dekompozicija je bez gubitaka pri spajanju

Poeljno je da je dekompozicija sa ouvanjem zavisnosti.

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

(database, Mary, DB Concepts)


(database, Mary, DB Systems)

moe predavati baze podataka, moramo uneti dve torke

Anomalija pri unosu ako elimo uneti novog nastavnika Mary koji

relacija u BCNF

Na ovoj relaciji ne vae ne-trivijalne funkcionalne zavisnosti pa je

database
database
database
database
database
database
operating systems
operating systems
operating systems
operating systems

course

Koliko dobra je BCNF? (nastavak)

6.41

svaka relaciona ema je u dobroj formi

dekomponovati je na skup relacionih ema {R1, R2, ..., Rn} takvih


da vai

U sluaju da relaciona ema R nije u dobroj formi,

Proveriti da li je relaciona ema R u dobroj formi.

zavisnosti.

Neka je R relaciona ema na kojoj vai skup F funkcionalnih

Ciljevi Normalizacije

course

text

book
DB Concepts
DB Systems
OS Concepts
OS Basics

6.44

Ovo nas navodi na razmiljanje o potrebi za viim normalnim


formama i novim mehanizmima izraavanja ogranienja.

database
database
operating systems
operating systems

teacher
Avi
Hank
Mike
Avi
Jim
teaches

database
database
database
operating systems
operating systems

course

Bolji dizajn je ako dekomponujemo relaciju classes na:

Koliko dobra je BCNF? (nastavak)

6.42

predmet i skup knjiga predvienih za kurs, bez obzira ko ga predaje.

Za svaki predmet imamo skup nastavnika koji mogu predavati dati

takvu da (c, t, b) classes znai da je nastavnik t kvalifikovan da


predaje predmet c, i da je knjiga b predviena knjiga za predmet c

classes (course, teacher, book)

Posmatrajmo relaciju

Postoje eme u BCNF koje ne izgledaju dovoljno normalizovane

Koliko dobra je BCNF?

< y1, z1, w2 > r and < y2, z2, w1 > r

< y1, z1, w1 > r and < y2, z2, w2 > r

6.47

Indeed we have (in above notation) Z1 = Z2


The claim follows.

If Y o Z then Y oo Z

Note:

notion that given a particular value of Y (course) it has


associated with it a set of values of Z (teacher) and a set of
values of W (book), and these two sets are in some sense
independent of each other.

The above formal definition is supposed to formalize the

6.48

can construct a relations rc that does satisfy the multivalued


dependency by adding tuples to r.

If a relation r fails to satisfy a given multivalued dependency, we

2. To specify constraints on the set of legal relations. We shall


thus concern ourselves only with relations that satisfy a
given set of functional and multivalued dependencies.

1. To test relations to determine whether they are legal under a


given set of functional and multivalued dependencies

We use multivalued dependencies in two ways:

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

if and only if for all possible relations r (R )

Korienje Vievrednosnih Zavisnosti

course oo teacher
course oo book

Y, Z, W
We say that Y oo Z (Y multidetermines Z )

into 3 nonempty subsets.

Let R be a relation schema with a set of attributes that are partitioned

Primer

Primer

6.45

t1[D] = t2 [D] = t3 [D] = t4 [D]


= t1 [E]
t3[E]
t3[R E] = t2[R E]
= t2[E]
t4 [E]
t4[R E] = t1[R E]

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)

Neka je R relaciona ema i D R i E R. Vievrednosna zavisnost

Vievrednosne Zavisnosti

If D o E, then D oo E

We can manage with such reasoning for very simple multivalued


dependencies, which seem to be most common in practice

For complex dependencies, it is better to reason about sets of


dependencies using a system of inference rules.

All multivalued dependencies of the form

6.51

where D Ri and D oo E is in D+

D oo (E Ri)

All functional dependencies in D+ that include only attributes of Ri

The restriction of D to Ri is the set Di consisting of

Restrikcija Vievrednosnih Zavisnosti

6.49

We can compute D+ from D, using the formal definitions of


functional dependencies and multivalued dependencies.

of D is the set of all functional and multivalued


dependencies logically implied by D.

The closure

D+

That is, every functional dependency is also a multivalued


dependency
D is a superkey for schema R

6.52

Note: each Ri is in 4NF, and decomposition is lossless-join

let D oo E be a nontrivial multivalued dependency that holds


on Ri such that D o Ri is not in Di, and DE I;
result := (result - Ri) (Ri - E) (D, E);
end
else done:= true;

while (not done)


if (there is a schema Ri in result that is not in 4NF) then
begin

result: = {R};
done := false;
compute D+;
Let Di denote the restriction of D+ to Ri

Algoritam Dekompozicije ema u 4NF

6.50

If a relation is in 4NF it is in BCNF

D oo E is trivial (i.e., E D or D E = R)

multivalued dependencies if for all multivalued dependencies in D+ of


the form D oo E, where D R and E R, at least one of the following
hold:

A relation schema R is in 4NF with respect to a set D of functional and

From the definition of multivalued dependency, we can derive the

following rule:

etvrta Normalna Forma (4NF)

Teorija Vievrednosnih Zavisnosti

(R2 is not in 4NF)

(R3 is in 4NF)

(R4 is not in 4NF)

c) R3 = (C, G, H)

d) R4 = (A, C, G, I)

(R6 is in 4NF)

f)R6 = (A, C, G)

extra space and extra execution time for updates

extra coding work for programmer and possibility of error in extra code

depositor

6.55

Benefits and drawbacks same as above, except no extra coding work


for programmer and avoids possible errors

account

Alternative 2: use a materialized view defined as

faster lookup

as well as depositor with all above attributes

Alternative 1: Use denormalized relation containing attributes of account

balance requires join of account with depositor

For example, displaying customer_name along with account_number and

May want to use non-normalized schema for performance

Denormalizacija zbog performansi

6.53

(R5 is in 4NF)

e) R5 = (A, I)

Since A oo B and B oo HI, A oo HI, A oo I

(R1 is in 4NF)

a) R1 = (A, B)

b) R2 = (A, C, G, H, I)

Decomposition

R is not in 4NF since A oo B and A is not a superkey for R

CG oo H }

B oo HI

lead to project-join normal form (PJNF) (also called fifth normal


form)

Hence rarely used

6.54

and no set of sound and complete set of inference rules exists.

Problem with these generalized constraints: are hard to reason with,

called domain-key normal form.

A class of even more general constraints, leads to a normal form

Join dependencies generalize multivalued dependencies

R =(A, B, C, G, H, I)

F ={ A oo B

Ostale Normalne Forme

Primer

7.3

Program se mora izvravati, saglasno specifikacijama, i u distribuiranom okruenju

Rezultati rada programa, moraju biti trajni i dokumentovani

Ako program pone sa izvravanjem, mora se i zavriti

drugim programima

Radi zadovoljenja performansi sistema, program se mora izvravati konkurentno sa

Izvrenje programa se sastoji od vie operacija

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

Protokol u Obliku Stabla

sva auriranja podataka su smetena u memoriju, tipino na disk, koji moe


sauvati podatke i u sluaju kvara sistema. Posle oporavka sistema od kvara,
podaci nisu izgubljeni, a time i rezultati rada transakcije, nego se mogu nai na
odgovarajuem mestu na disku.
7.4

Trajna. Pod trajnou se podrazumeva osobina da kada se transakcija zavri,

konkurentnog izvravanja isti kao da su se izvravale jedna po jedna, bez


preklapanja izvravanja. Saglasno tome, osobina nezavisnosti obezbeuje
konkurentno izvravanje transakcija.

Nezavisna. Kae se da je skup transakcija nezavistan, ako je rezultat njihovog

mora prevesti bazu u takoe konzistentno stanje, odnosno ouvati


konzistentnost baze. Ouvanje konzistentnosti baze podrazumeva potovanje
svih ogranienja integriteta.

Konzistentna. Izvrenje transakcije nad bazom podataka koja je konzistentna,

dozvoliti mogunost izvrenja samo dela programa transakcije, jer bi to moglo


dovesti do nekonzistentnog stanja baze.

Atomska. Transakcija se mora izvriti ili u potpunosti, ili nimalo. Ne sme se

realnom okruenju, i obezbeuje ouvanje konzistentnosti baze podataka,


kojom je okruenje modelirano. Transakcija mora biti:

Transakcija je izvrenje programa koji predstavlja neku interakciju u

Definicija Transakcije

7.2

Protokol Vremenskog Markiranja

Dvofazni Protokol Zakljuavanja

Protokoli Bazirani na Zakljuavanju

Kontrola Serijalizovanosti

Serijalizovanost

Izvravanje Transakcija

Stanja Transakcije

Koncept Transakcije

Upravljanje Transakcijama

Kreirana

Aktivna

7.7

Ponitena

Pogrena

Zavrena

Stanja Transakcije - Dijagram

7.5

Unitena

Potvrdjena

$50 izvren), aurirana baza mora zadrati stanje uprkos moguim kvarovima.

7.6

Serijalizovani redosled

Ekvivalentni i

7.8

Zavisno od toga, da li izvravanje razliitim redosledima, bilo serijskim ili


konkurentnim, daje isti rezultat ili ne, kao i da li konkurentni redosled daje isti
rezultat kao neki serijski redosled, definiu se i sledei redosledi:

Konkurentno (Neserijski)

Serijski, ili

Pretpostavimo da u multiprogramskom raunarskom sistemu postoji skup od n


aktivnih transakcija, T ^T1 ,, Tn`. Transakcije iz ovog skupa se mogu izvravati
tako, da se prvo izvri kompletno jedna transakcija, zatim druga, pa trea, i tako
redom dok se kompletno ne izvri i poslednja transakcija iz skupa T. Transakcije iz
ovog skupa se mogu izvravati i tako, da se pre kompletnog izvrenja jedne
transakcije, startuje druga, pre kompletnog zavretka druge, startuje neka trea
transakcija, ili, nastavi prva, i tako naizmenino, sve do kompletnog zavretka svih
transakcija. Saglasno tome, kako su se transakcije iz skupa T izvravale, kae se
da su se transakcije izvravale:

Izvravanje Transakcija

ouvana konzistentnost baze.

greka moe biti ispravljena samo ponovnim pisanjem programa transakcije.

Potvrena svi upisi, inicirani u toku izvrenja transakcije, u bazu zavreni i

Trajna posle obavetavanja korisnika da je transakcija izvrena (to jest, prenos

Unitena Tipian sluaj je prisustvo logike greke u transakciji. Takva

stanje Ponitena, i vratiti bazu u prethodno konzistentno stanje. Posle


restauracije baze, transakciju treba ponovo startovati, ako je hardverski ili
softverski kvar, zbog koga se transakcija nije mogla zavriti, u potpunosti
otklonjen. Ukoliko kvar ne moe biti u potpunosti otklonjen, ponovno
startovanje transakcije nema smisla, ve se transakcija prevodi u stanje
Unitena.

Ponitena Poto se nije uspeno zavrila, transakciju je potrebno prevesti u

ovo stanje, transakcija moe prei i iz aktivnog stanja, ukoliko u toku


izvravanja transakcije doe do kvara sistema, bilo hardverskog, bilo
softverskog.

Pogrena ako se inicirani upisi u bazu ne zavre usled kvara sistema. U

Zavrena poto se izvri zadnja instrukcija.

Aktivna pone da se izvrava

Kreirana spremna za aktiviranje

Stanja Transakcije

delimino auriranoj bazi, ona e videti nekonzistentnu bazu (suma A + B e biti


manja nego to treba).

Nezavisna ako se izmeu koraka 3 i 6 dozvoli drugoj transakciji pristup

Konzistentna izvrenjem transakcije suma A i B nije promenjena.

obezbediti da auriranja nisu upisana u bazu, jer e baza prei u nekonzistentno


stanje.

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)

Transaction prenosa $50 sa rauna A na raun B:

Primer

7.11

U Redosledima 1, 2 i 3, suma A + B ostaje nepromenjena.


7.12

Sledei konkurentni redosled dovodi do promene sume (A + B).

Neka su T1 i T2 prethodno definisane transakcije. Sledei redosled

nije serijski, ali je ekvivalentan Redosledu 1.

Redosled 4

7.10

Serijski redosled u kome iza T2 sledi T1:

Redosled 2

Redosled 3

7.9

Serijski redosled u kome iza T1 sledi T2:

10% stanja rauna A u B.

Neka T1 prenosi $50 sa rauna A na raun B, a T2 prenosi

Redosled 1

li i lj nisu konfliktne.
Konfliktne.
Konfliktne.
Konfliktne.

7.15

ekvivalentan serijskom redosledu

Kaemo da je redosled S konfliktno serijalizovan ako je konfliktno

Redosled 3
7.16

Redosled 6

Prema tome Redosled 3 je konfliktno serijalizovan.

redosled u kome T2 sledi T1, promenom redosleda nekonfliktnih instrukcija.

Redosled 3 se moe transformisati u Redosled 6, serijski

redosleda ne-konfliktnih instrukcija, kaemo da su redosledi S i S


konfliktno ekvivalentni.

Ako se redosled S moe transformisati u redosled S promenom

7.14

Ako su li i lj nekonfliktne, rezultat njihovog izvravanja ostaje isti


bez obzira kojim se redosledom izvravale.

Konfliktna Serijalizovanost (nastavak)

Konflikt izmeu li i lj forsira redosled njihovog izvravanja.

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).

samo ako postoji podatak Q kome pristupaju i li i lj, i najmanje jedna


od ovih instrukcija je write(Q).

Instrukcije li i lj transakcija Ti i Tj respektivno, su konfliktne ako i

Konfliktne Instrukcije

Konfliktna Serijalizovanost

7.13

da transakcije mogu izvravati proizvoljna raunanja na podacima u


lokalnim baferima izmeu operacija read i write. Pojednostavljeni
redosledi se prema tome sastoje samo od read i write instrukcija.

Ignoriemo sve operacije izuzev read i write instrukcija, i pretpostavljamo

2. view serijalizovanost

1. conflict serijalizovanost

redosledu. Definiu se dve vrste ekvivalentnosti redosleda pa saglasno


tome i serijalizovanosti:

Neki neserijski redosled je serijalizovan ako je ekvivalentan serijskom

baze.

Tako i serijsko izvravanje skupa transakcija obezbeuje konzistentnost

baze.

Osnovna Pretpostavka Svaka transakcija obezbeuje konzistentnost

Serijalizovanost

blind writes.

7.19

Every view serializable schedule that is not conflict serializable has

What serial schedule is above equivalent to?

serializable.

Below is a schedule which is view-serializable but not conflict

Every conflict serializable schedule is also view serializable.

schedule.

A schedule S is view serializable it is view equivalent to a serial

View Serijalizovanost (nastavak)

7.17

redosled < T3, T4 >, ili serijski redosled < T4, T3 >.

Ne moemo promeniti redosled instrukcija da bi dobili bilo serijski

Primer redosleda koji nije konfliktno serijalizovan:

Konfliktna Serijalizovanost (nastavak)

other than read and write.

7.20

Determining such equivalence requires analysis of operations

schedule < T1, T5 >, yet is not conflict equivalent or view


equivalent to it.

The schedule below produces same outcome as the serial

Druge Serijalizovanosti

7.18

View equivalentnost se takoe bazira na read i write operacijama.

3. Za svaki podatak Q, transakcija koja zadnja izvrava write(Q)


u redosledu S mora zadnja izvravati write(Q) i u redosledu S.

2. Za svaki podatak Q, ako transakcija Ti izvrava read(Q) u


redosledu S, a tu vrednost je upisala transakcija Tj , tada
transakcija Ti mora i u redosledu S takoe itati vrednost Q
koju je upisala transakcija Tj .

1. Za svaki podatak Q, ako transakcija Ti ita poetnu vrednost Q


u redosledu S, tada transakcija Ti mora, u redosledu S,
takoe itati poetnu vrednost Q.

su view ekvivalentni ako vae sledea tri uslova:

Neka su S i S dva redosleda sa istim skupom transakcija. S i S

View Serijalizovanost

7.21

(Better algorithms take order n + e


where e is the number of edges.)

there others?

7.23

For example, a serializability order for


Schedule A would be
T5 o T1 o T3 o T2 o T4

 Are

This is a linear order consistent with the


partial order of the graph.

serializability order can be obtained by a


topological sorting of the graph.

If precedence graph is acyclic, the

order n2 time, where n is the number of


vertices in the graph.

Cycle-detection algorithms exist which take

if its precedence graph is acyclic.

A schedule is conflict serializable if and only

Provera Konfliktne Serijalizovanosti

Example 1

We may label the arc by the item that was accessed.

and Ti accessed the data item on which the conflict arose


earlier.

We draw an arc from Ti to Tj if the two transaction conflict,

the transactions (names).

Precedence graph a direct graph where the vertices are

Consider some schedule of a set of transactions T1, T2, ..., Tn

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

Extension to test for view serializability has cost exponential in the


size of the precedence graph.

Thus existence of an efficient algorithm is extremely unlikely.

7.24

conditions for view serializability can still be used.

However practical algorithms that just check some sufficient

class of NP-complete problems.

The problem of checking if a schedule is view serializable falls in the

directly to test for view serializability.

The precedence graph test for conflict serializability cannot be used

T3

T1

Provera View Serijalizovanosti

read(U)
write(U)

read(U)

read(Y)
read(Z)

T1

Primer provere Serijalizovanosti

T4

T2

are recoverable and preferably cascadeless

Are serial schedules recoverable/cascadeless?

7.25

7.27

proceed only after request is granted.

Lock requests are made to concurrency-control manager. Transaction can

2. shared (S) mode. Data item can only be read. S-lock is


requested using lock-S instruction.

1. exclusive (X) mode. Data item can be both read as well as


written. X-lock is requested using lock-X instruction.

Data items can be locked in two modes :

A lock is a mechanism to control concurrent access to a data item

Protokoli Bazirani na Zakljuavanju

serializability.

Goal to develop concurrency control protocols that will assure

late!

Testing a schedule for serializability after it has executed is a little too

serial schedules, but provides a poor degree of concurrency

A policy in which only one transaction can execute at a time generates

either conflict or view serializable, and

schedules are

A database must provide a mechanism that will ensure that all possible

Kontrola Serijalizovanosti

We study such protocols in Chapter 16.

7.26

but if any transaction holds an exclusive on the item no other


transaction may hold any lock on the item.

7.28

all incompatible locks held by other transactions have been released.


The lock is then granted.

If a lock cannot be granted, the requesting transaction is made to wait till

Any number of transactions can hold shared locks on an item,

compatible with locks already held on the item by other transactions

A transaction may be granted a lock on an item if the requested lock is

Matrica kompatibilnosti zakljuavanja

Protokoli Bazirani na Zakljuavanju (nast)

protocol is correct.

Tests for serializability help us understand why a concurrency control

between the amount of concurrency they allow and the amount of


overhead that they incur.

Different concurrency control protocols provide different tradeoffs

Instead a protocol imposes a discipline that avoids nonseralizable


schedules.

precedence graph as it is being created

Concurrency control protocols generally do not examine the

that the schedules are conflict/view serializable, and are recoverable


and cascadeless.

Concurrency-control protocols allow concurrent schedules, but ensure

Kontrola vs Provera Serijalizovanosti

read (A);

z
z

7.31

7.32

transactions can be serialized in the order of their lock points (i.e.


the point where a transaction acquired its final lock).

The protocol assures serializability. It can be proved that the

transaction may not obtain locks

transaction may release locks

Phase 2: Shrinking Phase

The same transaction is repeatedly rolled back due to deadlocks.

transaction may not release locks


z

transaction may obtain locks


z

Phase 1: Growing Phase

This is a protocol which ensures conflict-serializable schedules.

A transaction may be waiting for an X-lock on an item, while a


sequence of other transactions request and are granted an S-lock
on the same item.

Concurrency control manager can be designed to prevent starvation.

7.30

To handle a deadlock one of T3 or T4 must be rolled back


and its locks released.

Dvofazni Protokol Zakljuavanja

Such a situation is called a deadlock.

to wait for T3 to release its lock on B, while executing lock-X(A) causes


T3 to wait for T4 to release its lock on A.

designed. For example:

Starvation is also possible if concurrency control manager is badly

are a necessary evil.

The potential for deadlock exists in most locking protocols. Deadlocks

Problem iznurivanja (starvation)

7.29

requesting and releasing locks. Locking protocols restrict the set of


possible schedules.

A locking protocol is a set of rules followed by all transactions while

get updated in-between the read of A and B, the displayed sum would be
wrong.

Locking as above is not sufficient to guarantee serializability if A and B

display(A+B)

unlock(B);

read (B);

lock-S(B);

unlock(A);

Neither T3 nor T4 can make progress executing lock-S(B) causes T4

Consider the partial schedule

Example of a transaction performing locking:

T2: lock-S(A);

Problem Deadlock-a

Protokoli Bazirani na Zakljuavanju (nast)

can acquire a lock-X on item

can convert a lock-S to a lock-X (upgrade)

can release a lock-X

can convert a lock-X to a lock-S (downgrade)

7.35

insert the various locking instructions.

This protocol assures serializability. But still relies on the programmer to

can release a lock-S

Second Phase:

can acquire a lock-S on item

7.36

indexed on the name of the data item being locked

The lock table is usually implemented as an in-memory hash table

record granted locks and pending requests

The lock manager maintains a data-structure called a lock table to

The requesting transaction waits until its request is answered

messages (or a message asking the transaction to roll back, in case of


a deadlock)

The lock manager replies to a lock request by sending a lock grant

transactions send lock and unlock requests

A lock manager can be implemented as a separate process to which

Two-phase locking with lock conversions:

First Phase:

Implementacija Zakljuavanja

7.34

Given a transaction Ti that does not follow two-phase locking, we can


find a transaction Tj that uses two-phase locking, and a schedule for Ti
and Tj that is not conflict serializable.

to data), two-phase locking is needed for conflict serializability in the


following sense:

However, in the absence of extra information (e.g., ordering of access

two-phase locking is used.

There can be conflict serializable schedules that cannot be obtained if

Dvofazni Protokol Zakljuavanja (nast)

Promene tipa zakljuavanja

7.33

till commit/abort. In this protocol transactions can be serialized in the


order in which they commit.

Rigorous two-phase locking is even stricter: here all locks are held

this, follow a modified protocol called strict two-phase locking. Here


a transaction must hold all its exclusive locks till it commits/aborts.

Cascading roll-back is possible under two-phase locking. To avoid

Two-phase locking does not ensure freedom from deadlocks

Dvofazni Protokol Zakljuavanja (nast)

Implies that the set D may now be viewed as a directed acyclic


graph, called a database graph.

If di o dj then any transaction accessing both di and dj must


access di before accessing dj.

protocol is deadlock-free, no rollbacks are required

to introduce commit dependencies to ensure recoverability

 potential

locking overhead, and additional waiting time

decrease in concurrency

 increased

Transactions may have to lock data items that they do not access.

 Need

Protocol does not guarantee recoverability or cascade freedom

protocol, and vice versa.

7.39

Schedules not possible under two-phase locking are possible under tree

Drawbacks

shorter waiting times, and increase in concurrency

phase locking protocol.

Unlocking may occur earlier in the tree-locking protocol than in the two-

deadlock.

The tree protocol ensures conflict serializability as well as freedom from

Protokol u Obliku Stabla (nastavak)

7.37

The tree-protocol is a simple kind of graph protocol.

items.

Impose a partial ordering o on the set D = {d1, d2 ,..., dh} of all data

Graph-based protocols are an alternative to two-phase locking

Protokoli Bazirani na Grafovima

R-timestamp(Q) is the largest time-stamp of any transaction that


executed read(Q) successfully.
z

7.40

W-timestamp(Q) is the largest time-stamp of any transaction that


executed write(Q) successfully.
z

timestamp values:

In order to assure such behavior, the protocol maintains for each data Q two

determine the serializability order.

The protocol manages concurrent execution such that the time-stamps

transaction Ti has time-stamp TS(Ti), a new transaction Tj is assigned timestamp TS(Tj) such that TS(Ti) <TS(Tj).

Each transaction is issued a timestamp when it enters the system. If an old

Protokol Vremenskog Markiranja

7.38

Data items may be unlocked at any time.

can be locked by Ti only if the parent of Q is currently locked by Ti.

The first lock by Ti may be on any data item. Subsequently, a data Q

Only exclusive locks are allowed.

Protokol u Obliku Stabla

Hence, the read operation is


back.

rejected, and Ti is rolled

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)

A partial schedule for several data items for transactions with


timestamps 1, 2, 3, 4, 5

7.41

If TS(Ti)t W-timestamp(Q), then the read operation is executed,


and R-timestamp(Q) is set to the maximum of R-timestamp(Q)
and TS(Ti).

If TS(Ti) d W-timestamp(Q), then Ti needs to read a value of Q


that was already overwritten.

Primer

2.

1.

Suppose a transaction Ti issues a read(Q)

and write operations are executed in timestamp order.

The timestamp ordering protocol ensures that any conflicting read

Protokol Vremenskog Markiranja (nast)

Hence, the write operation is rejected, and Ti is rolled back.

Hence, this write operation is rejected, and Ti is rolled back.

7.42

Otherwise, the write operation is executed, and W-timestamp(Q)


is set to TS(Ti).

If TS(Ti) < W-timestamp(Q), then Ti is attempting to write an


obsolete value of Q.

If TS(Ti) < R-timestamp(Q), then the value of Q that Ti is


producing was needed previously, and the system assumed that
that value would never be produced.

transaction
with larger
timestamp

recoverable.

7.44

But the schedule may not be cascade-free, and may not even be

ever waits.

Timestamp protocol ensures freedom from deadlock as no transaction

Thus, there will be no cycles in the precedence graph

transaction
with smaller
timestamp

arcs in the precedence graph are of the form:

The timestamp-ordering protocol guarantees serializability since all the

Korektnost Protokola Vrem. Markiranja

3.

2.

1.

Suppose that transaction Ti issues write(Q).

Protokol Vremenskog Markiranja (nast)

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