39
Predavanje Predavanje 01 – Baze 01 – Baze podataka podataka Definicija i osnovni pojmovi baza podataka Entitet, svojstvo Relacijski model baza podataka Programi za upravljanje s bazama podataka Veze među entitetima Modeliranje podataka Predavanje 01 - Baze podataka 1

1 - Baza Podataka

Embed Size (px)

Citation preview

Page 1: 1 - Baza Podataka

PredavanjePredavanje 01 – Baze 01 – Baze podatakapodataka Definicija i osnovni pojmovi baza podataka Entitet, svojstvo Relacijski model baza podataka Programi za upravljanje s bazama podataka Veze među entitetima Modeliranje podataka

Predavanje 01 - Baze podataka 1

Page 2: 1 - Baza Podataka

Baza podatakaBaza podataka

Baza podataka je organizirana zbirka podataka.

Razlikujemo bazu podataka od programa za upravljanje bazom podataka!

Program za upravljanje bazom podataka (Database Management System, DBMS) podrazumijeva da su podaci na neki organizirani način pohranjeni u obliku dostupnom programu.

Predavanje 01 - Baze podataka 2

Ivo Beroš
Baza podataka je npr. telefonski imenik, podaci o zaposlenicima koji se vode u obliku raznih kartoteka i sličnoOvdje treba istaknuti mane papirnatih baza podataka (sortiranje po jednom kriteriju, glomaznost) i naglasiti prednosti elektroničkih baza podataka. Primjer: telefonski imenikU programe za rad s bazama podataka u prvom redu ubrajamo Access (zbog toga jer je relativno jednostavno dostupan), FoxPro, Oracle, Informix, DB2 ...
Page 3: 1 - Baza Podataka

Načini organizacije Načini organizacije podataka podataka Relacijski model – podaci su

spremljeni u tablicama, koje su međusobno povezane. Za nas najvažniji model.

Hijerarhijski modelMrežni modelObjektni model

Predavanje 01 - Baze podataka 3

Ivo Beroš
Ova tri modela samo spomenuti.Može se još nadodati i hipertekstualni model (literatura koju sam konzultirao nije jednistvena u tome da li je riječ o modelu ili nije)
Page 4: 1 - Baza Podataka

Model podataka (Model podataka (Data Data ModelModel))Model podataka je prikaz

◦Stvari (objekata, događaja) važnih za opis poslovnih procesa

◦Kako su stvari međusobno povezane Model podataka se stvara i

mijenja sve dok ne predstavlja poslovne procese dovoljno dobro da se na osnovu modela može napraviti baza podataka

Predavanje 01 - Baze podataka 4

Page 5: 1 - Baza Podataka

Relacijski modelRelacijski modelPodaci su organizirani u tablicama. Svaka tablica predstavlja (najčešće) neki

objekt (proizvod, tvrtku, zaposlenika) ili događaj (transakciju, račun).

Objekt/događaj koji je predstavljen u tablici zovemo entitet.

Entitet ima svoja svojstva (atribute). Svako svojstvo treba biti nekog tipa

podataka.Objekt opisuje neku pojavu, stvar,

osobu.Događaj načelno opisuje vezu između

dva ili više entiteta (uglavnom objekata).Predavanje 01 - Baze podataka 5

Page 6: 1 - Baza Podataka

Primjer 1.Primjer 1.Za slijedeće entitete odredite

vrstu (objekt/događaj)

Predavanje 01 - Baze podataka 6

Učenik

Prijava ispita

Predmet

Profesor

Škola

Page 7: 1 - Baza Podataka

Tipovi podataka u AccessuTipovi podataka u AccessuText – niz bilo kakvih znakova, duljine do 255 znakova.Memo – isto kao Text, samo duljina do 65535 znakovaNumber – prikaz brojčanih vrijednosti potrebnih za

razna računanja. Zbog načina prikaza broja u računalu, ponekad su potrebna dodatna podešavanja.

Date/Time – služi za prikaz vremena i datumaCurrency – služi za računanje i prikaz novčanih

vrijednosti. Novčane vrijednosti se mogu računati točno do na 4 decimalna mjesta.

AutoNumber – Access sam generira vrijednosti u polju ovog tipa i time osigurava da se te vrijednosti ne ponavljaju. Idealan tip za polje koje predstavlja primarni ključ.

Yes/No – dvije vrijednosti, Da ili Ne (0 ili 1)OLE object – binarni objekt kojeg umećemo u našu

bazu. Može biti neki Office dokument, slika ili nešto drugo.

Hyperlink – veza prema nekom drugom dokumentu bilo na disku bilo na Internetu

Predavanje 01 - Baze podataka 7

Page 8: 1 - Baza Podataka

Primjer 2. Primjer 2. U prethodnom zadatku je

spomenut entitet Učenik. Navedite neka svojstva tog entiteta i odredite im tip podataka!

Predavanje 01 - Baze podataka 8

• Naziv učenika (T)• Datum rođenja (D/T)• Matični broj(T)• JMBG (T)• OIB (T)

• Ime roditelja (T)• Adresa (T)• Broj telefona (T)• Koju školu pohađa

(T)

Page 9: 1 - Baza Podataka

Primjer 3.Primjer 3.Želimo napraviti bazu podataka u

kojoj će među ostalim entitetima biti i entitet Grad koji će sadržavati podatke o gradovima u Europi. Navedite neka svojstva tog entiteta i odredite im tip podataka!

Predavanje 01 - Baze podataka 9

• Naziv (T)• Broj stanovnika (N)• Država (T)• Broj automobila (N)

• Lučki grad (Y/N)• Proračun (C)• Pokrajina/županija/oblast (T)• Broj mostova (N)• itd.

Page 10: 1 - Baza Podataka

Primjer 4.Primjer 4.Želimo napraviti bazu podataka u kojoj će

među ostalim entitetima biti i entitet Račun, koji će sadržavati podatke o računima koje neka tvrtka izdaje Pretpostavite da se račun izdaje samo za jednu vrstu proizvoda!

Predavanje 01 - Baze podataka 10

• Naziv robe (T)• Naziv kupca (T)• Količina (N)• Jedinična cijena (C)• Ukupna cijena (C)

• PDV (C)• Broj računa (T ili N)• Datum izdavanja računa (D/T)• Tko izdaje račun (osoba) (T)• Način plaćanja (T)• Račun plaćen (Y/N)

Page 11: 1 - Baza Podataka

Relacijski model Relacijski model (nastavak)(nastavak)U jednom retku tablice držimo sve

podatke o konkretnoj realizaciji jedne instance entiteta.

Stupac u tablici sadrži podatke o nekom svojstvu za sve entitete.

Redak tablice zovemo zapis (record). Stupac tablice zovemo polje (field)Među poljima treba postojati jedno polje

koje na jedinstven način određuje zapis. To polje zovemo primarni ključ

Predavanje 01 - Baze podataka 11

Page 12: 1 - Baza Podataka

Primjer – tablica GradPrimjer – tablica Grad

Redak koji opisuje “Zagreb”

Predavanje 01 - Baze podataka 12

Stupac u kojem sunavedni nazivi gradova (polje Naziv)

Koliko instanci entiteta Grad je predstavljeno u tablici?

Page 13: 1 - Baza Podataka

Veze između entitetaVeze između entitetaIzmeđu entiteta mogu postojati tri

vrste veza◦Veza 1:1 (jedan-jedan)◦Veza 1:N (jedan-više, piše se i 1:∞)◦Veza M:N (više-više, piše se i ∞:∞)

Ovisno o tipu veze, vezu realiziramo◦ili uklapanjem entiteta u drugi entitet ◦ili umetanjem primarnog ključa jednog

entiteta među svojstva drugog entiteta ◦ili stvaranjem posebne tablice (entiteta)

Predavanje 01 - Baze podataka 13

Page 14: 1 - Baza Podataka

Zadatak:Zadatak:kreirati entitete grad i adresa i

povezati ih!

Page 15: 1 - Baza Podataka

Kako otkriti vrstu veze?Kako otkriti vrstu veze?Promatramo entitete za koje znamo

da su povezani (u stvarnom svijetu). Nazovimo ih A i B

Pitamo se s koliko zapisa iz B možemo povezati neki zapis iz A. Odgovor je 1 ili više.

Pitamo se s koliko zapisa iz A možemo povezati neki zapis iz B. Odgovor je ponovo 1 ili više.

Spojimo odgovore i dobijemo vezu.

Predavanje 01 - Baze podataka 15

Page 16: 1 - Baza Podataka

PrimjerPrimjerZadani su entiteti Student, Kolegij,

Predavač, StudijUtvrdite veze između onih entiteta između

kojih postoji direktna veza!

Predavanje 01 - Baze podataka 16

Učenik - Predmet

Učenik - Profesor

Učenik - Škola

Predmet - Profesor

Predmet - Škola

Profesor - Škola

više-više

jedan - više

više-više

više-više

više-više

ne postoji

Page 17: 1 - Baza Podataka

PrimjerPrimjer

Zadani su entiteti Država – države u EuropiGrad – svi gradovi sa više od 100000

stanovnika u EuropiGlavni grad – glavni gradovi

europskih državaJezik – svi službeni jezici u

europskim državama

Odredite veze među entitetima.

Predavanje 01 - Baze podataka 17

Page 18: 1 - Baza Podataka

Vrste vezeVrste veze

Između entiteta Jezik i Grad, te Jezik i Glavni grad ne postoji direktna veza već se ona realizira preko Države!

Predavanje 01 - Baze podataka 18

Država - Grad

Država - Glavni grad

Država - Jezik

Grad - Jezik

Grad - Glavni grad

Glavni grad - Jezik

više-više

jedan-više

jedan-jedan

ne postoji

ne postoji

ne postoji

Page 19: 1 - Baza Podataka

Veza 1-1Veza 1-1Između entitet Država i Glavni gradDržava ima točno jedan glavni

grad, a glavni grad pripada točno jednoj državi

Realizacija veze: sva tri načina su moguća, ovisi o konkretnoj situaciji u bazi

Prikazat ćemo realizaciju uklapanjem.

Predavanje 01 - Baze podataka 19

Page 20: 1 - Baza Podataka

DržavaDržava i i Glavni grad Glavni grad (uklapanje)(uklapanje)

Država◦Naziv države◦Stanovnika◦Veličina◦Uređenje

Predavanje 01 - Baze podataka 20

Glavni grad– Naziv grada– Broj stanovnika

Država– Naziv države– Stanovnika– Veličina– Uređenje– Naziv grada– Broj stanovnika

Realizacija veze uklapanjem Glavnog grada u Državu (može i obrnuto)

Page 21: 1 - Baza Podataka

Veza 1-∞Veza 1-∞Između entiteta Država i GradDržava ima više gradova, a grad pripada

točno jednoj državi. Realizacija veze: ili umetanjem primarnog

ključa ili novom tablicomUmetanje primarnog ključa: imamo

entitete A i B. Neka jednom zapisu entiteta A može odgovarati više zapisa entiteta B, a jednom zapisu entiteta B odgovara točno jedan zapis entiteta A. Tada među svojstva eniteta B umećemo primarni ključ entiteta A!

Predavanje 01 - Baze podataka 21

Page 22: 1 - Baza Podataka

DržavaDržava i i Grad Grad (umetanje prim. (umetanje prim. ključa)ključa)

Država◦Naziv države◦Stanovnika◦Veličina◦Uređenje

Predavanje 01 - Baze podataka 22

Grad– Naziv grada– Broj stanovnika

Grad– Naziv grada– Broj stanovnika– Naziv države

Umetnuti primarni ključ entiteta Država

Entitet Država se ne mijenja

Page 23: 1 - Baza Podataka

Veza ∞-∞Veza ∞-∞Između entiteta Država i JezikU državi se može govoriti više jezika,

a jedan jezik se može govoriti u više država.

Realizacija veze: novom tablicomNova tablica treba imati svoj

primarni ključ, sadržavati primarne ključeve Države i Jezika, te eventualna dodatna svojstva

Predavanje 01 - Baze podataka 23

Page 24: 1 - Baza Podataka

DržavaDržava i i Jezik Jezik (nova (nova tablica)tablica)

Država– Naziv

države– Stanovnika– Veličina– Uređenje

Predavanje 01 - Baze podataka 24

Jezik– Naziv jezika– Pismo

Govori_se– ID– Naziv jezika– Naziv države– Broj stanovnika

Umetnuti primarni ključevi entiteta Jezik iDržava

Država i Jezik se ne mijenjaju

Primarni ključ nove tablice

Dodatno svojstvo

Page 25: 1 - Baza Podataka

Oblikovanje modela podataka - Oblikovanje modela podataka - pripazitipripaziti

Tablice trebaju imati značenje ◦Svaki redak bi trebao predstavljati jedno

pojavljivanje entiteta◦Jedna tablica ne bi trebala sadržavati

podatke o nekoliko entiteta Izbjegava se ponavljanje podataka Olakšavaju se izmjene

Različiti stupci za podatke kojima treba neovisno pristupati.◦Ako trebate pristupati samo dijelu

podataka u nekom stupcu, razdvojite stupac!

Predavanje 01 - Baze podataka 25

Page 26: 1 - Baza Podataka

Oblikovanje modela – Oblikovanje modela – pripaziti (2)pripaziti (2)Svaka ćelija sadrži točno jednu

vrijednost◦ U prošlom primjeru ne bi bilo dobro

da smo u entitetu Država imali svojstvo Jezik koje ima vrijednost talijanski, francuski

Svaka tablica treba imati primarni ključ

Izbjegavati nepotrebno ponavljanje podataka

Predavanje 01 - Baze podataka 26

Page 27: 1 - Baza Podataka

Loše ...Loše ...

U tablici imamo podatke o dva entiteta, Zaposlenik i Odjel, tablicu treba razbiti na dvije.

Koja je veza između Zaposlenik i Odjel?

Predavanje 01 - Baze podataka 27

Više podataka u jednoj ćelijiRazdvojiti grad od adrese

• Što je primarni ključ za Zaposlenik ?• Treba dodati novo polje: ID ili JMBG

Page 28: 1 - Baza Podataka

Bolje ...Bolje ...

Mana: dosta praznog prostora u tablici Zaposlenik

Predavanje 01 - Baze podataka 28

Page 29: 1 - Baza Podataka

Još bolje ...Još bolje ...

Predavanje 01 - Baze podataka 29

Page 30: 1 - Baza Podataka

Oblikovanje modela Oblikovanje modela podatakapodatakaPri oblikovanju modela podataka

treba voditi računa o slijedećem:◦Koji su entiteti potrebni za

funkcioniranje baze◦Koje upite želimo postavljati na bazi◦Kakva izvješća želimo imati u bazi◦Kakve su veze među entitetima◦Koja su svojstva svakog entiteta◦Trebaju li se neka svojstva entiteta

izdvojiti u posebnu tablicu?

Predavanje 01 - Baze podataka 30

Page 31: 1 - Baza Podataka

Oblikovanje modela – još neka Oblikovanje modela – još neka pitanjapitanjaKoji su entiteti? Postoje li veze između njih? Kakva je vrsta veze? Postoje li neki dodatni uvjeti? Kakve tablice trebamo za prikaz

entiteta?Što je primarni ključ svake tablice?Koja su ostala polja u tablici? Koja polja/tablice trebamo za prikaz

veze?Jesmo li nešto zaboravili???

Predavanje 01 - Baze podataka 31

Page 32: 1 - Baza Podataka

PrimjerPrimjerŽelimo napraviti model podataka za

videoteku. Potrebno je pratiti podatke o članovima, o filmovima te o posudbama koje članovi rade. Zbog jednostavnosti pretpostavljamo da članovi posuđuju jedan film. Također, treba znati koji je djelatnik posudio film. Za film se treba znati kojeg je žanra da bi filmove mogli složiti na police, te da li je vraćen ili ne. Pretpostavljamo da imamo točnu jednu kopiju filma.

Napravite model!

Predavanje 01 - Baze podataka 32

Page 33: 1 - Baza Podataka

Entiteti i vezeEntiteti i veze

Član – podaci o članovimaFilm – podaci o filmovimaPosudba – podaci o posudbiDjelatnik – podaci o djelatniku

Predavanje 01 - Baze podataka 33

Član - Posudba 1 - ∞

Film - Posudba 1 - ∞

Djelatnik - Posudba 1 - ∞

Veze

Entiteti

Page 34: 1 - Baza Podataka

SvojstvaSvojstvaČlan Šifra člana (T) Ime i prezime

(T) Adresa (T) Broj telefona

(T) Napomena (M)

Predavanje 01 - Baze podataka 34

Film Šifra filma (AN) Naziv filma (T) Žanr (T)

Posudba Šifra posudbe (AN) Šifra člana (T) Šifra filma (N) Id djelatnika (N) Datum (D/T) Cijena (C) Film vraćen (Y/N)

Djelatnik Id djelatnika (AN) Ime i prezime (T) Adresa (T) Broj telefona (T) Napomena (M)

U raznim tablicama povezujemo polja koja imaju isto značenje. Ta polja trebaju biti istog tipa. Izuzetak je polje tipa Autonumber koji se povezuje s poljem tipa Number u drugoj tablici!

Page 35: 1 - Baza Podataka

Nove željeNove željeŽelimo omogućiti članovima

videoteke da mogu dobiti popis filmova u kojima nastupa njihov omiljeni glumac. Koje preinake (dodavanje novih entiteta, dodavanje novih svojstava postojećim entitetima) treba napraviti?

Predavanje 01 - Baze podataka 35

Page 36: 1 - Baza Podataka

Novi modelNovi modelČlan Šifra člana (T) Ime i prezime

(T) Adresa (T) Broj telefona

(T) Napomena (M)

Predavanje 01 - Baze podataka 36

Film Šifra filma (AN) Naziv filma (T) Žanr (T)

Posudba Šifra posudbe (AN) Šifra člana (T) Šifra filma (N) Id djelatnika (N) Datum (D/T) Cijena (C) Film vraćen (Y/N)

Djelatnik Id djelatnika (AN) Ime i prezime (T) Adresa (T) Broj telefona (T) Napomena (M)

Glumac Id glumca (AN) Ime i prezime (T) Godina rođ. (N) Nagrade (M)

GlumacFilm Id (AN) Šifra filma (N) Id glumca (N)

Page 37: 1 - Baza Podataka

Novo proširenje...Novo proširenje...Prethodni model je napravljen uz

pretpostavku da član posuđuje točno jedan film. Međutim, u praksi članovi mogu posuditi više filmova.Prepravite model tako da omogući i taj slučaj!

Predavanje 01 - Baze podataka 37

Page 38: 1 - Baza Podataka

Novi modelNovi modelTablice Član, Djelatnik, Glumac, GlumacFilm

ostaju iste kao u prethodnom modelu

Predavanje 01 - Baze podataka 38

Film Šifra filma (AN) Naziv filma (T) Žanr (T)

Posudba Šifra posudbe (AN) Šifra člana (T) Id djelatnika (N) Datum (D/T) Cijena (C)

Stavka Id stavka (AN) Šifra filma (N) Šifra posudbe (N) Film vraćen (Y/N)

Page 39: 1 - Baza Podataka

Posljednji modelPosljednji modelČlan Šifra člana Ime i prezime Adresa Broj telefona Napomena

Predavanje 01 - Baze podataka 39

Stavka Id Stavka Šifra posudbe Šifra filma Film vraćen

Film Šifra filma Naziv filma Žanr

Posudba Šifra posudbe Šifra člana Id djelatnika Datum Cijena

Djelatnik Id djelatnika Ime i prezime Adresa Broj telefona Napomena

Glumac Id glumca Ime i prezime Godina rođ. Nagrade

GlumacFilm Id Šifra filma Id glumca