Predavanje 01 Baze podataka Definicija i osnovni pojmovi
Predavanje 01 – Baze 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
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
Načini organizacije podataka Relacijski model – podaci su spremljeni u tablicama, koje su međusobno povezane. Za nas najvažniji model. Hijerarhijski model Mrežni model Objektni model Predavanje 01 - Baze podataka 3
Model podataka (Data Model) 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
Relacijski model Podaci 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 svojstva (atribute). Svako svojstvo treba biti nekog tipa podataka. Objekt opisuje neku pojavu, stvar, osobu. Događaj načelno opisuje vezu između dva 01 - Baze podataka ili više entiteta (uglavnom Predavanje objekata). 5
Primjer 1. Za slijedeće entitete odredite vrstu (objekt/događaj) Učenik Prijava ispita Predmet Profesor Škola Predavanje 01 - Baze podataka 6
Tipovi podataka u Accessu Text – niz bilo kakvih znakova, duljine do 255 znakova. Memo – isto kao Text, samo duljina do 65535 znakova Number – 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 datuma Currency – služi za računanje i prikaz novčanih vrijednosti. Novčane vrijednosti se mogu računati točno do na 4 decimalna mjesta. Auto. Number – 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 7 Predavanje 01 - Baze podataka
Primjer 2. U prethodnom zadatku je spomenut entitet Učenik. Navedite neka svojstva tog entiteta i odredite im tip podataka! • • • 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) Predavanje 01 - Baze podataka 8
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! • Naziv (T) • Lučki grad (Y/N) • Broj stanovnika (N) • Proračun (C) • Država (T) • Pokrajina/županija/oblast (T) • Broj automobila (N) • Broj mostova (N) • itd. Predavanje 01 - Baze podataka 9
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! • • • 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) Predavanje 01 - Baze podataka 10
Relacijski model (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
Primjer – tablica Grad Redak koji opisuje “Zagreb” Stupac u kojem su navedni nazivi gradova (polje Naziv) Koliko instanci entiteta Grad je predstavljeno u tablici? Predavanje 01 - Baze podataka 12
Veze između entiteta Između veza entiteta mogu postojati tri vrste ◦ 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
Zadatak: kreirati entitete grad i adresa i povezati ih!
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
Primjer Zadani su entiteti Student, Kolegij, Predavač, Studij Utvrdite veze između onih entiteta između kojih postoji direktna veza! Učenik - Predmet više-više Učenik - Profesor ne postoji Učenik - Škola više-više Predmet - Profesor više-više Predmet - Škola više-više Profesor - Škola jedan - više Predavanje 01 - Baze podataka 16
Primjer Zadani su entiteti v. Država – države u Europi v. Grad – svi gradovi sa više od 100000 stanovnika u Europi v. Glavni grad – glavni gradovi europskih država v. Jezik – svi službeni jezici u europskim državama Odredite veze među entitetima. Predavanje 01 - Baze podataka 17
Vrste veze Država - Grad jedan-više Država - Glavni grad jedan-jedan Država - Jezik više-više Grad - Jezik ne postoji Grad - Glavni grad ne postoji Glavni grad - Jezik ne postoji 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
Veza 1 -1 Između entitet Država i Glavni grad Drž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
Država i Glavni grad (uklapanje) Država ◦ Naziv države ◦ Stanovnika ◦ Veličina ◦ Uređenje 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) Predavanje 01 - Baze podataka 20
Veza 1 -∞ Između entiteta Država i Grad Država ima više gradova, a grad pripada točno jednoj državi. Realizacija veze: ili umetanjem primarnog ključa ili novom tablicom Umetanje 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
Država i Grad (umetanje prim. ključa) Država ◦ Naziv države ◦ Stanovnika ◦ Veličina ◦ Uređenje Entitet Država se ne mijenja Grad – Naziv grada – Broj stanovnika – Naziv države Grad – Naziv grada – Broj stanovnika Umetnuti primarni ključ entiteta Država Predavanje 01 - Baze podataka 22
Veza ∞-∞ Između entiteta Država i Jezik U državi se može govoriti više jezika, a jedan jezik se može govoriti u više država. Realizacija veze: novom tablicom Nova tablica treba imati svoj primarni ključ, sadržavati primarne ključeve Države i Jezika, te eventualna dodatna svojstva Predavanje 01 - Baze podataka 23
Država i Jezik (nova tablica) Država – Naziv države – Stanovnika – Veličina – Uređenje Jezik – Naziv jezika – Pismo Država i Jezik se ne mijenjaju Primarni ključ nove tablice Govori_se – ID – Naziv jezika – Naziv države – Broj stanovnika Umetnuti primarni ključevi entiteta Jezik i Država Dodatno svojstvo Predavanje 01 - Baze podataka 24
Oblikovanje modela podataka - pripaziti 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
Oblikovanje modela – 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
Loše. . . Razdvojiti grad od adrese Više podataka u jednoj ćeliji U tablici imamo podatke o dva entiteta, Zaposlenik i Odjel, tablicu treba razbiti na dvije. Koja je veza između Zaposlenik i Odjel? • Što je primarni ključ za Zaposlenik ? • Treba dodati novo polje: ID ili JMBG Predavanje 01 - Baze podataka 27
Bolje. . . Mana: dosta praznog prostora u tablici Zaposlenik Predavanje 01 - Baze podataka 28
Još bolje. . . Predavanje 01 - Baze podataka 29
Oblikovanje modela podataka Pri 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
Oblikovanje modela – još neka pitanja Koji 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
Primjer Ž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
Entiteti i veze Entiteti Član – podaci o članovima Film – podaci o filmovima Posudba – podaci o posudbi Djelatnik – podaci o djelatniku Veze Član - Posudba 1 -∞ Film - Posudba 1 -∞ Djelatnik - Posudba 1 -∞ Predavanje 01 - Baze podataka 33
Svojstva Član v v v Šifra člana (T) Ime i prezime (T) Adresa (T) Broj telefona (T) Napomena (M) Posudba Film v v v v Šifra filma (AN) v Naziv filma (T) v Žanr (T) Šifra posudbe (AN) Šifra člana (T) Šifra filma (N) Id djelatnika (N) Datum (D/T) Cijena (C) Film vraćen (Y/N) 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! Djelatnik v Id djelatnika (AN) v Ime i prezime (T) v Adresa (T) v Broj telefona (T) v Napomena (M) Predavanje 01 - Baze podataka 34
Nove ž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
Novi model Član v v v Šifra člana (T) Ime i prezime (T) Adresa (T) Broj telefona (T) Napomena (M) Film v Šifra filma (AN) v Naziv filma (T) v Žanr (T) Posudba v v v v Šifra posudbe (AN) Šifra člana (T) Šifra filma (N) Id djelatnika (N) Datum (D/T) Cijena (C) Film vraćen (Y/N) Djelatnik v Id djelatnika (AN) v Ime i prezime (T) v Adresa (T) v Broj telefona (T) v Napomena (M) Glumac. Film v Id (AN) v Šifra filma (N) v Id glumca (N) v v Id glumca (AN) Ime i prezime (T) Godina rođ. (N) Nagrade (M) Predavanje 01 - Baze podataka 36
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
Novi model Tablice Član, Djelatnik, Glumac. Film ostaju iste kao u prethodnom modelu Film v Šifra filma (AN) v Naziv filma (T) v Žanr (T) Stavka v v Id stavka (AN) Šifra filma (N) Šifra posudbe (N) Film vraćen (Y/N) Posudba v v v Šifra posudbe (AN) Šifra člana (T) Id djelatnika (N) Datum (D/T) Cijena (C) Predavanje 01 - Baze podataka 38
Posljednji model Član v Šifra člana v Ime i prezime v Adresa v Broj telefona v Napomena Glumac v Id glumca v Ime i prezime v Godina rođ. v Nagrade Posudba v Šifra posudbe v Šifra člana v Id djelatnika v Datum v Cijena Film v Šifra filma v Naziv filma v Žanr Djelatnik v Id djelatnika v Ime i prezime v Adresa v Broj telefona v Napomena Stavka v Id Stavka v Šifra posudbe v Šifra filma v Film vraćen Glumac. Film v Id v Šifra filma v Id glumca Predavanje 01 - Baze podataka 39
- Slides: 39