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 Podatakad

Embed Size (px)

DESCRIPTION

d

Citation preview

  • Predavanje 01 Baze podataka Definicija i osnovni pojmovi baza podataka Entitet, svojstvo Relacijski model baza podataka Programi za upravljanje s bazama podataka Veze meu entitetima Modeliranje podataka

    Predavanje 01 - Baze podataka*

    *

  • Baza podatakaBaza 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 nain pohranjeni u obliku dostupnom programu.

    Predavanje 01 - Baze podataka*

    Ivo Bero (I. B.) - Baza podataka je npr. telefonski imenik, podaci o zaposlenicima koji se vode u obliku raznih kartoteka i slino

    Ovdje treba istaknuti mane papirnatih baza podataka (sortiranje po jednom kriteriju, glomaznost) i naglasiti prednosti elektronikih baza podataka. Primjer: telefonski imenik

    U programe za rad s bazama podataka u prvom redu ubrajamo Access (zbog toga jer je relativno jednostavno dostupan), FoxPro, Oracle, Informix, DB2 ...*Baza podataka je npr. telefonski imenik, podaci o zaposlenicima koji se vode u obliku raznih kartoteka i slino

    Ovdje treba istaknuti mane papirnatih baza podataka (sortiranje po jednom kriteriju, glomaznost) i naglasiti prednosti elektronikih baza podataka. Primjer: telefonski imenik

    U programe za rad s bazama podataka u prvom redu ubrajamo Access (zbog toga jer je relativno jednostavno dostupan), FoxPro, Oracle, Informix, DB2 ...

  • Naini organizacije podataka Relacijski model podaci su spremljeni u tablicama, koje su meusobno povezane. Za nas najvaniji model.Hijerarhijski modelMreni modelObjektni model

    Predavanje 01 - Baze podataka*

    Ivo Bero (I. B.) - Ova tri modela samo spomenuti.Moe se jo nadodati i hipertekstualni model (literatura koju sam konzultirao nije jednistvena u tome da li je rije o modelu ili nije)*Ova tri modela samo spomenuti.Moe se jo nadodati i hipertekstualni model (literatura koju sam konzultirao nije jednistvena u tome da li je rije o modelu ili nije)

  • Model podataka (Data Model)Model podataka je prikaz

    Stvari (objekata, dogaaja) vanih za opis poslovnih procesaKako su stvari meusobno povezane Model podataka se stvara i mijenja sve dok ne predstavlja poslovne procese dovoljno dobro da se na osnovu modela moe napraviti baza podataka

    Predavanje 01 - Baze podataka*

    *

  • Relacijski modelPodaci su organizirani u tablicama. Svaka tablica predstavlja (najee) neki objekt (proizvod, tvrtku, zaposlenika) ili dogaaj (transakciju, raun).Objekt/dogaaj 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.Dogaaj naelno opisuje vezu izmeu dva ili vie entiteta (uglavnom objekata).

    Predavanje 01 - Baze podataka*

    *- U iduem slajdu se propituje razumiju li oni to je entitet, to je atribut, a to vrijednost atributa. Ovdje im se moe spomenuti da su atributi slini pojmu varijable u statistici, ali reakcija na to e (najvjerojatnije) biti uzdasi...

  • Primjer 1.Za slijedee entitete odredite vrstu (objekt/dogaaj)

    Predavanje 01 - Baze podataka*

    UenikPrijava ispitaPredmetProfesorkola

    *Moda e se ovdje buniti kako to da je Prijava ispita dogaaj, stoga treba tu biti strpljiv. Probajte im sugerirati slijedee: to prijava ispita povezuje? Studenta i Kolegij (ima toga jo, ispitni rok itd.). Moe li student prijaviti vie ispita? Moe li se na jedan ispit prijaviti vie studenata. Entitet Prijava ispita zapravo realizira vezu vie:vie izmeu entiteta Student i KolegijNaravno, i kolegiji Student i Studij su povezani, ali tu veza nije vie:vie nego jedan:vie, pa je nije potrebno realizirati posebnom tablicom.

    Jo uvijek ne spominjati veze izmeu tablica.

  • Tipovi podataka u AccessuText niz bilo kakvih znakova, duljine do 255 znakova.Memo isto kao Text, samo duljina do 65535 znakovaNumber prikaz brojanih vrijednosti potrebnih za razna raunanja. Zbog naina prikaza broja u raunalu, ponekad su potrebna dodatna podeavanja. Date/Time slui za prikaz vremena i datumaCurrency slui za raunanje i prikaz novanih vrijednosti. Novane vrijednosti se mogu raunati tono 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 umeemo u nau bazu. Moe biti neki Office dokument, slika ili neto drugo. Hyperlink veza prema nekom drugom dokumentu bilo na disku bilo na Internetu

    Predavanje 01 - Baze podataka*

    *U ovom trenutku oni ne znaju to je primarni klju, ali oko toga se ne brinemo. Nadalje, ovo su tipovi podataka u Accessu, ali restrikcija nije bitna jer emo raditi samo s tim programom.Definicija tipa je neto relativno apstraktno, ali probajte ih podsjetiti na Excel tamo su mogli formatirati eliju tako da Excel zna nalazi li se unutra tekst, broj, datum ili neto slino. Za Text, Memo istaknuti da mogu unutra biti i dijakritiki znakoviZa Number rei da emo naknadno objasniti podeavanjaZa Autonumber moe se rei da ima dva naina rada sluajni odabir broja ili uveavanje broja, mi koristimo uveavanjeZa OLE object i Hyperlink napravit emo kasnije vjebu, ti objekti nam nisu toliko bitni. Zapravo, najefektnije je da se napravi neka tablica u koju emo staviti slike, napraviti formu na tu tablicu i onda pokazati kako se slike pojavljuju na toj formi. To u ostaviti za kraj kursa

  • Primjer 2. U prethodnom zadatku je spomenut entitet Uenik. Navedite neka svojstva tog entiteta i odredite im tip podataka!

    Predavanje 01 - Baze podataka*Naziv uenika (T)Datum roenja (D/T)Matini broj(T)JMBG (T)OIB (T)

    Ime roditelja (T)Adresa (T)Broj telefona (T)Koju kolu pohaa (T)

    *Dati zadatak i pustiti ih da daju prijedloge. Na kraju pokazati rjeenja.Bilo bi dobro postaviti pitanje: koje vrijednosti moe poprimiti pojedini atribut! Tipovi podataka su predstavljeni skraenicom. Objasniti da su Broj indeksa, JMBAG, Broj telefona svojstva koja su tekstualnog tipa, premda se mogu sastojati samo od znamenaka. Razlog tome je to s njima nita ne moemo raunati.

  • Primjer 3.elimo napraviti bazu podataka u kojoj e meu ostalim entitetima biti i entitet Grad koji e sadravati podatke o gradovima u Europi. Navedite neka svojstva tog entiteta i odredite im tip podataka!

    Predavanje 01 - Baze podataka*Naziv (T)Broj stanovnika (N)Drava (T)Broj automobila (N)

    Luki grad (Y/N)Proraun (C)Pokrajina/upanija/oblast (T)Broj mostova (N)itd.

    *Dati zadatak i pustiti ih da daju prijedloge. Na kraju pokazati rjeenja.Bilo bi dobro postaviti pitanje: koje vrijednosti moe poprimiti pojedini atribut!

  • Primjer 4.elimo napraviti bazu podataka u kojoj e meu ostalim entitetima biti i entitet Raun, koji e sadravati podatke o raunima koje neka tvrtka izdaje Pretpostavite da se raun izdaje samo za jednu vrstu proizvoda!

    Predavanje 01 - Baze podataka*Naziv robe (T)Naziv kupca (T)Koliina (N)Jedinina cijena (C)Ukupna cijena (C)

    PDV (C)Broj rauna (T ili N)Datum izdavanja rauna (D/T)Tko izdaje raun (osoba) (T)Nain plaanja (T)Raun plaen (Y/N)

    *Ovo je njihov domai teren, tu bi trebali spomenuti sve, moda e imati problema sa brojem rauna!Ovdje treba postaviti pitanje: to od ovih podataka je viak, odnosno ne treba spremati jer se moe iz preostalih izraunati? Ukupna cijena, PDVNa ovoj tablici treba spomenuti da se ona moe uredno voditi i u Excelu, ali istaknuti i neke mogue probleme: npr. krivo upiemo naziv kupca i ako elimo nai njegovu ukupnu potronju to ne moemo napraviti.Dalje, to ako elimo imati neke dodatne podatke o kupcu kao broj telefona. Hoemo li to pamtiti uz svaki raun? Moemo, ali to ako kupac promijeni broj telefona, a mi ga na osnovu nekog starog rauna elimo obavijestiti o neemu, novoj ponudi?Dakle treba im sugerirati da podatke o kupcu bi bilo pametno drati u jednoj posebnoj tablici i na neki nain spojiti sa tablicom rauna.

  • Relacijski model (nastavak)U jednom retku tablice drimo sve podatke o konkretnoj realizaciji jedne instance entiteta. Stupac u tablici sadri podatke o nekom svojstvu za sve entitete.Redak tablice zovemo zapis (record). Stupac tablice zovemo polje (field)Meu poljima treba postojati jedno polje koje na jedinstven nain odreuje zapis. To polje zovemo primarni klju

    Predavanje 01 - Baze podataka*

    *Definicija primarnog kljua koju sam ja ovdje naveo nije naravno potpuno tona, jer se tamo spominje vie polja, a ne samo jedno, ali je za nae potrebe sasvim dovoljna. Uglavnom, ideja e biti da u svakoj Access tablici koju naprave stave jedno polje id_neto, tipa Autonumber. Time rjeavaju sve probleme oko primarnog kljua.

  • Primjer tablica GradRedak koji opisuje ZagrebPredavanje 01 - Baze podataka*

    Stupac u kojem sunavedni nazivi gradova (polje Naziv)Koliko instanci entiteta Grad je predstavljeno u tablici?

    *Ovdje treba pojanjavati pojmove kao to su zapis i polje, da to to bolje razumiju.Pitati ih koje polje bi moglo biti primarni klju, ali treba im rei da misle na ovu tablicu samo kao na dio jedne velike tablice. Vjerojatno e se iskristalizirati odgovor da je polje Naziv primarni klju, ali im onda treba napomenuti da je mogue da postoje dva grada istog imena u razliitim dravama, a i u Hrvatskoj postoji vie mjesta s istim nazivom, sugerirati im uvoenje novog polja.

  • Veze izmeu entitetaIzmeu entiteta mogu postojati tri vrste veza

    Veza 1:1 (jedan-jedan)Veza 1:N (jedan-vie, pie se i 1:)Veza M:N (vie-vie, pie se i :)Ovisno o tipu veze, vezu realiziramo

    ili uklapanjem entiteta u drugi entitet ili umetanjem primarnog kljua jednog entiteta meu svojstva drugog entiteta ili stvaranjem posebne tablice (entiteta)Predavanje 01 - Baze podataka*

    *

  • 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 BPitamo se s koliko zapisa iz B moemo povezati neki zapis iz A. Odgovor je 1 ili vie.Pitamo se s koliko zapisa iz A moemo povezati neki zapis iz B. Odgovor je ponovo 1 ili vie.Spojimo odgovore i dobijemo vezu.

    Predavanje 01 - Baze podataka*

    *

  • PrimjerZadani su entiteti Student, Kolegij, Predava, StudijUtvrdite veze izmeu onih entiteta izmeu kojih postoji direktna veza!

    Predavanje 01 - Baze podataka*vie-viejedan - vievie-vievie-vievie-viene postoji

    Uenik-PredmetUenik-ProfesorUenik-kolaPredmet-ProfesorPredmet-kolaProfesor-kola

    *

  • PrimjerZadani su entiteti Drava drave u EuropiGrad svi gradovi sa vie od 100000 stanovnika u EuropiGlavni grad glavni gradovi europskih dravaJezik svi slubeni jezici u europskim dravamaOdredite veze meu entitetima.Predavanje 01 - Baze podataka*

    *

  • Vrste vezeIzmeu entiteta Jezik i Grad, te Jezik i Glavni grad ne postoji direktna veza ve se ona realizira preko Drave!

    Predavanje 01 - Baze podataka*vie-viejedan-viejedan-jedanne postojine postojine postoji

    Drava-GradDrava-Glavni gradDrava-JezikGrad-JezikGrad-Glavni gradGlavni grad-Jezik

    *Glavni grad je zapravo podentitet od Grad pa tu ne moemo govoriti o nekoj veziJedna drava ima vie gradova, a jedan grad moe biti samo u jednoj draviU jednoj dravi se moe govoriti vie jezika (vicarska, Belgija), a jedan jezik se moe govoriti u vie drava

  • Veza 1-1Izmeu entitet Drava i Glavni gradDrava ima tono jedan glavni grad, a glavni grad pripada tono jednoj dravi Realizacija veze: sva tri naina su mogua, ovisi o konkretnoj situaciji u baziPrikazat emo realizaciju uklapanjem.

    Predavanje 01 - Baze podataka*

    *

  • Drava i Glavni grad (uklapanje)DravaNaziv draveStanovnikaVeliinaUreenjePredavanje 01 - Baze podataka*Glavni gradNaziv gradaBroj stanovnika

    DravaNaziv draveStanovnikaVeliinaUreenjeNaziv gradaBroj stanovnika

    Realizacija veze uklapanjem Glavnog grada u Dravu (moe i obrnuto)

    *Pocrtano neka je primarni klju. Nismo naveli sva svojstva, samo neka da se dobije orijentacija.Naglasak je na realizaciji veze, a ne na odabiru svojstava.

  • Veza 1-Izmeu entiteta Drava i GradDrava ima vie gradova, a grad pripada tono jednoj dravi. Realizacija veze: ili umetanjem primarnog kljua ili novom tablicomUmetanje primarnog kljua: imamo entitete A i B. Neka jednom zapisu entiteta A moe odgovarati vie zapisa entiteta B, a jednom zapisu entiteta B odgovara tono jedan zapis entiteta A. Tada meu svojstva eniteta B umeemo primarni klju entiteta A!

    Predavanje 01 - Baze podataka*

    *Naglasiti da se veza 1-vie u pravilu realizira umetanjem primarnog kljua.Nakon to smo opisali postupak, postaviti pitanje to se dogaa u konkretnom sluaju!Naravno, meu svojstva entiteta Grad treba uvrstiti primarni klju entiteta Drava

  • Drava i Grad (umetanje prim. kljua)DravaNaziv draveStanovnikaVeliinaUreenjePredavanje 01 - Baze podataka*GradNaziv gradaBroj stanovnika

    GradNaziv gradaBroj stanovnikaNaziv drave

    Umetnuti primarni klju entiteta Drava

    Entitet Drava se ne mijenja

    *Pocrtano neka je primarni klju. Nismo naveli sva svojstva, samo neka da se dobije orijentacija.Naglasak je na realizaciji veze, a ne na odabiru svojstava.

  • Veza -Izmeu entiteta Drava i JezikU dravi se moe govoriti vie jezika, a jedan jezik se moe govoriti u vie drava. Realizacija veze: novom tablicomNova tablica treba imati svoj primarni klju, sadravati primarne kljueve Drave i Jezika, te eventualna dodatna svojstva

    Predavanje 01 - Baze podataka*

    *Naglasiti da se veza 1-vie u pravilu realizira umetanjem primarnog kljua.Nakon to smo opisali postupak, postaviti pitanje to se dogaa u konkretnom sluaju!Naravno, meu svojstva entiteta Grad treba uvrstiti primarni klju entiteta Drava

  • Drava i Jezik (nova tablica)DravaNaziv draveStanovnikaVeliinaUreenjePredavanje 01 - Baze podataka*JezikNaziv jezikaPismo

    Govori_seIDNaziv jezikaNaziv draveBroj stanovnika

    Umetnuti primarni kljuevi entiteta Jezik iDrava

    Drava i Jezik se ne mijenjaju

    Primarni klju nove tabliceDodatno svojstvo

    *Pocrtano neka je primarni klju. Nismo naveli sva svojstva, samo neka da se dobije orijentacija.Naglasak je na realizaciji veze, a ne na odabiru svojstava.

  • Oblikovanje modela podataka - pripazitiTablice trebaju imati znaenje

    Svaki redak bi trebao predstavljati jedno pojavljivanje entitetaJedna tablica ne bi trebala sadravati podatke o nekoliko entitetaIzbjegava se ponavljanje podatakaOlakavaju se izmjeneRazliiti stupci za podatke kojima treba neovisno pristupati.

    Ako trebate pristupati samo dijelu podataka u nekom stupcu, razdvojite stupac!Predavanje 01 - Baze podataka*

    *Svaki redak bi trebao predstavljati jedno pojavljivanje entiteta vratiti se na primjer gradovima svaki redak predstavlja tono jedan gradZa dva slajda kree primjer jedne loe tablice pa se sve navedeno moe pokazati

  • Oblikovanje modela pripaziti (2)Svaka elija sadri tono jednu vrijednost

    U prolom primjeru ne bi bilo dobro da smo u entitetu Drava imali svojstvo Jezik koje ima vrijednost talijanski, francuskiSvaka tablica treba imati primarni klju Izbjegavati nepotrebno ponavljanje podataka

    Predavanje 01 - Baze podataka*

    *

  • Loe ...U tablici imamo podatke o dva entiteta, Zaposlenik i Odjel, tablicu treba razbiti na dvije. Koja je veza izmeu Zaposlenik i Odjel?

    Predavanje 01 - Baze podataka*Vie podataka u jednoj eliji

    Razdvojiti grad od adrese

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

    *Komentirati za Broj telefona: ako zaposlenik ima tono dva telefona, mogu se staviti polja telefon1 i telefon2, ali ako ih ima vie, to postaje problem. Nadalje, ako zaposlenici imaju razliiti broj telefona tada se odreeni prostor razbacuje. Zato treba razmisliti o novoj tablici koja bi sadravala podatke o broju telefona i ifri zaposlenikaTreba primjetiti da ako izbriemo podatke o djelatnicima u nekom odjelu, gubimo i podatke o odjelu.

  • Bolje ...Mana: dosta praznog prostora u tablici Zaposlenik

    Predavanje 01 - Baze podataka*

    *

  • Jo bolje ...Predavanje 01 - Baze podataka*

    *

  • Oblikovanje modela podatakaPri oblikovanju modela podataka treba voditi rauna o slijedeem:

    Koji su entiteti potrebni za funkcioniranje bazeKoje upite elimo postavljati na baziKakva izvjea elimo imati u baziKakve su veze meu entitetimaKoja su svojstva svakog entitetaTrebaju li se neka svojstva entiteta izdvojiti u posebnu tablicu?Predavanje 01 - Baze podataka*

    *

  • Oblikovanje modela jo neka pitanjaKoji su entiteti? Postoje li veze izmeu 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 neto zaboravili???

    Predavanje 01 - Baze podataka*

    *Sve je dobro ako se nedostatak uoi u procesu dizajniranja baze. Ukoliko se nedostatak uoi kada je baza puna podataka nedostatke je teko ispraviti.

  • Primjerelimo napraviti model podataka za videoteku. Potrebno je pratiti podatke o lanovima, o filmovima te o posudbama koje lanovi rade. Zbog jednostavnosti pretpostavljamo da lanovi posuuju jedan film. Takoer, treba znati koji je djelatnik posudio film. Za film se treba znati kojeg je anra da bi filmove mogli sloiti na police, te da li je vraen ili ne. Pretpostavljamo da imamo tonu jednu kopiju filma. Napravite model!

    Predavanje 01 - Baze podataka*

    *Ja u napisati rjeenje po dijelovima, pa bi to moda tako trebalo i prezentirati. Dosada nisam imao prezentaciju pa sam sve pisao na ploi, ali ovo se i na ovaj nain moe realizirati. Nakon to se kreira baza koja zadovoljava ove zahtjeve, stavit emo dodatne zahtjeve: npr. treba se omoguiti traenje prema reiseru, prema glumcima i slino.

  • Entiteti i vezelan podaci o lanovimaFilm podaci o filmovimaPosudba podaci o posudbiDjelatnik podaci o djelatniku

    Predavanje 01 - Baze podataka*VezeEntiteti

    lan-Posudba 1 - Film-Posudba 1 - Djelatnik-Posudba 1 -

    *Prva tri entiteta e sigurno prepoznati, djelatnika im treba napomenuti. Zatim, treba spomenuti da su lan, Film i Djelatnik objekti, a Posudba je dogaaj. Dalje e trebati detektirati veze, skrenuti panju da je izmeu entiteta lan i Film veza vie-vie realizirana preko tablice posudba

  • Svojstvalanifra lana (T)Ime i prezime (T)Adresa (T)Broj telefona (T)Napomena (M)Predavanje 01 - Baze podataka*Filmifra filma (AN)Naziv filma (T)anr (T)

    Posudbaifra posudbe (AN)ifra lana (T)ifra filma (N)Id djelatnika (N)Datum (D/T)Cijena (C)Film vraen (Y/N)

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

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

    *

  • Nove eljeelimo omoguiti lanovima videoteke da mogu dobiti popis filmova u kojima nastupa njihov omiljeni glumac. Koje preinake (dodavanje novih entiteta, dodavanje novih svojstava postojeim entitetima) treba napraviti?

    Predavanje 01 - Baze podataka*

    *Ovdje ih treba polako voditi: Aha, treba uvesti novi entitet Glumac. S kim je Glumac u vezi: sa Film. Kakva je tu vrsta veze? Jedan glumac moe nastupiti u vie filmova, u jednom filmu moe biti vie glumaca, veza je vie-vie.Realizacija s novom tablicom

  • Novi modellanifra lana (T)Ime i prezime (T)Adresa (T)Broj telefona (T)Napomena (M)Predavanje 01 - Baze podataka*Filmifra filma (AN)Naziv filma (T)anr (T)

    Posudbaifra posudbe (AN)ifra lana (T)ifra filma (N)Id djelatnika (N)Datum (D/T)Cijena (C)Film vraen (Y/N)

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

    GlumacId glumca (AN)Ime i prezime (T)Godina ro. (N)Nagrade (M)

    GlumacFilmId (AN)ifra filma (N)Id glumca (N)

    *Ovdje, a i u prethodnom modelu moe malo objanjenje: za ifru lana i ifru filma mi smo mogli staviti tip N, T i AN i za svaki od ta tri tipa smo mogli nai razloge za (npr. ifra filma je oblika K-10, oznaava komediju s brojem 10). Ako nemamo neki posebni razlog da sami smiljamo primarni klju, najjednostavnije je staviti neko polje tipa Autonumber za primarni klju. To je ovdje napravljeno u tablicama GlumacFilm i Glumac.Autonumber je zgodan jer on garantira da se nee ponoviti ista vrijednost.

  • Novo proirenje...Prethodni model je napravljen uz pretpostavku da lan posuuje tono jedan film. Meutim, u praksi lanovi mogu posuditi vie filmova.Prepravite model tako da omogui i taj sluaj!

    Predavanje 01 - Baze podataka*

    *Ovdje ih treba pustiti da predlau, vjerojatno e najvei broj njih predlagati da se umetnu jo neka dodatna polja za ifre filmova koje lan posuuje. To nije dobro, skrenite panju na injenicu da e tada ta polja uglavnom zjapiti prazna, a nitko ne moe predvidjeti koliko filmova e lan posuditi. Stoga se posuivanje treba realizirati novom tablicom koja realizira vezu vie-vie izmeu tablica Posudba i Film (u jednoj posudbi moe biti vie filmova, jedan film moe biti vie puta posuen (naravno, ne istovremeno)).Nadalje, iz tablice Posudba treba izbaciti polje ifra_filma (a moemo razglabati oko polja Film vraen). Polje Cijena treba ostaviti jer cijena posudbe vie filmova moe varirati (trei film besplatno, ali ako je vikend posudba, onda posudba traje dva dana i tek je etvrti film besplatan, ovo ve zahtijeva programiranje).

  • Novi modelTablice lan, Djelatnik, Glumac, GlumacFilm ostaju iste kao u prethodnom modelu

    Predavanje 01 - Baze podataka*Filmifra filma (AN)Naziv filma (T)anr (T)

    Posudbaifra posudbe (AN)ifra lana (T)Id djelatnika (N)Datum (D/T)Cijena (C)

    StavkaId stavka (AN)ifra filma (N)ifra posudbe (N)Film vraen (Y/N)

    *Ovdje je zgodno rei da na ovaj nain realiziramo raune i kod drugih transakcija koje imaju vie stavki. O tome emo jo vie rei iduom prilikom.

  • Posljednji modellanifra lanaIme i prezimeAdresaBroj telefonaNapomenaPredavanje 01 - Baze podataka*StavkaId Stavkaifra posudbeifra filmaFilm vraen

    Filmifra filmaNaziv filmaanr

    Posudbaifra posudbeifra lanaId djelatnikaDatumCijena

    DjelatnikId djelatnikaIme i prezimeAdresaBroj telefonaNapomena

    GlumacId glumcaIme i prezimeGodina ro.Nagrade

    GlumacFilmIdifra filmaId glumca

    *Skrenuti panju da ovo nije konani model, jer je proces izgradnje modela podataka iterativan. I u ovom modelu postoje mogunosti proirenja: npr. ako imamo vie kazeta istog filma, onda bi trebali imati neku ifru koja ovisi o samom filmu i jo jednu ifru koja bi pratila kazete. Ali u to se ne bi uputao ...

    *

    *Baza podataka je npr. telefonski imenik, podaci o zaposlenicima koji se vode u obliku raznih kartoteka i slino

    Ovdje treba istaknuti mane papirnatih baza podataka (sortiranje po jednom kriteriju, glomaznost) i naglasiti prednosti elektronikih baza podataka. Primjer: telefonski imenik

    U programe za rad s bazama podataka u prvom redu ubrajamo Access (zbog toga jer je relativno jednostavno dostupan), FoxPro, Oracle, Informix, DB2 ...*Ova tri modela samo spomenuti.Moe se jo nadodati i hipertekstualni model (literatura koju sam konzultirao nije jednistvena u tome da li je rije o modelu ili nije)*

    *- U iduem slajdu se propituje razumiju li oni to je entitet, to je atribut, a to vrijednost atributa. Ovdje im se moe spomenuti da su atributi slini pojmu varijable u statistici, ali reakcija na to e (najvjerojatnije) biti uzdasi...*Moda e se ovdje buniti kako to da je Prijava ispita dogaaj, stoga treba tu biti strpljiv. Probajte im sugerirati slijedee: to prijava ispita povezuje? Studenta i Kolegij (ima toga jo, ispitni rok itd.). Moe li student prijaviti vie ispita? Moe li se na jedan ispit prijaviti vie studenata. Entitet Prijava ispita zapravo realizira vezu vie:vie izmeu entiteta Student i KolegijNaravno, i kolegiji Student i Studij su povezani, ali tu veza nije vie:vie nego jedan:vie, pa je nije potrebno realizirati posebnom tablicom.

    Jo uvijek ne spominjati veze izmeu tablica.*U ovom trenutku oni ne znaju to je primarni klju, ali oko toga se ne brinemo. Nadalje, ovo su tipovi podataka u Accessu, ali restrikcija nije bitna jer emo raditi samo s tim programom.Definicija tipa je neto relativno apstraktno, ali probajte ih podsjetiti na Excel tamo su mogli formatirati eliju tako da Excel zna nalazi li se unutra tekst, broj, datum ili neto slino. Za Text, Memo istaknuti da mogu unutra biti i dijakritiki znakoviZa Number rei da emo naknadno objasniti podeavanjaZa Autonumber moe se rei da ima dva naina rada sluajni odabir broja ili uveavanje broja, mi koristimo uveavanjeZa OLE object i Hyperlink napravit emo kasnije vjebu, ti objekti nam nisu toliko bitni. Zapravo, najefektnije je da se napravi neka tablica u koju emo staviti slike, napraviti formu na tu tablicu i onda pokazati kako se slike pojavljuju na toj formi. To u ostaviti za kraj kursa *Dati zadatak i pustiti ih da daju prijedloge. Na kraju pokazati rjeenja.Bilo bi dobro postaviti pitanje: koje vrijednosti moe poprimiti pojedini atribut! Tipovi podataka su predstavljeni skraenicom. Objasniti da su Broj indeksa, JMBAG, Broj telefona svojstva koja su tekstualnog tipa, premda se mogu sastojati samo od znamenaka. Razlog tome je to s njima nita ne moemo raunati.*Dati zadatak i pustiti ih da daju prijedloge. Na kraju pokazati rjeenja.Bilo bi dobro postaviti pitanje: koje vrijednosti moe poprimiti pojedini atribut! *Ovo je njihov domai teren, tu bi trebali spomenuti sve, moda e imati problema sa brojem rauna!Ovdje treba postaviti pitanje: to od ovih podataka je viak, odnosno ne treba spremati jer se moe iz preostalih izraunati? Ukupna cijena, PDVNa ovoj tablici treba spomenuti da se ona moe uredno voditi i u Excelu, ali istaknuti i neke mogue probleme: npr. krivo upiemo naziv kupca i ako elimo nai njegovu ukupnu potronju to ne moemo napraviti.Dalje, to ako elimo imati neke dodatne podatke o kupcu kao broj telefona. Hoemo li to pamtiti uz svaki raun? Moemo, ali to ako kupac promijeni broj telefona, a mi ga na osnovu nekog starog rauna elimo obavijestiti o neemu, novoj ponudi?Dakle treba im sugerirati da podatke o kupcu bi bilo pametno drati u jednoj posebnoj tablici i na neki nain spojiti sa tablicom rauna.*Definicija primarnog kljua koju sam ja ovdje naveo nije naravno potpuno tona, jer se tamo spominje vie polja, a ne samo jedno, ali je za nae potrebe sasvim dovoljna. Uglavnom, ideja e biti da u svakoj Access tablici koju naprave stave jedno polje id_neto, tipa Autonumber. Time rjeavaju sve probleme oko primarnog kljua. *Ovdje treba pojanjavati pojmove kao to su zapis i polje, da to to bolje razumiju.Pitati ih koje polje bi moglo biti primarni klju, ali treba im rei da misle na ovu tablicu samo kao na dio jedne velike tablice. Vjerojatno e se iskristalizirati odgovor da je polje Naziv primarni klju, ali im onda treba napomenuti da je mogue da postoje dva grada istog imena u razliitim dravama, a i u Hrvatskoj postoji vie mjesta s istim nazivom, sugerirati im uvoenje novog polja.*

    *

    *

    *

    *Glavni grad je zapravo podentitet od Grad pa tu ne moemo govoriti o nekoj veziJedna drava ima vie gradova, a jedan grad moe biti samo u jednoj draviU jednoj dravi se moe govoriti vie jezika (vicarska, Belgija), a jedan jezik se moe govoriti u vie drava*

    *Pocrtano neka je primarni klju. Nismo naveli sva svojstva, samo neka da se dobije orijentacija.Naglasak je na realizaciji veze, a ne na odabiru svojstava.*Naglasiti da se veza 1-vie u pravilu realizira umetanjem primarnog kljua.Nakon to smo opisali postupak, postaviti pitanje to se dogaa u konkretnom sluaju!Naravno, meu svojstva entiteta Grad treba uvrstiti primarni klju entiteta Drava*Pocrtano neka je primarni klju. Nismo naveli sva svojstva, samo neka da se dobije orijentacija.Naglasak je na realizaciji veze, a ne na odabiru svojstava.*Naglasiti da se veza 1-vie u pravilu realizira umetanjem primarnog kljua.Nakon to smo opisali postupak, postaviti pitanje to se dogaa u konkretnom sluaju!Naravno, meu svojstva entiteta Grad treba uvrstiti primarni klju entiteta Drava*Pocrtano neka je primarni klju. Nismo naveli sva svojstva, samo neka da se dobije orijentacija.Naglasak je na realizaciji veze, a ne na odabiru svojstava.*Svaki redak bi trebao predstavljati jedno pojavljivanje entiteta vratiti se na primjer gradovima svaki redak predstavlja tono jedan gradZa dva slajda kree primjer jedne loe tablice pa se sve navedeno moe pokazati*

    *Komentirati za Broj telefona: ako zaposlenik ima tono dva telefona, mogu se staviti polja telefon1 i telefon2, ali ako ih ima vie, to postaje problem. Nadalje, ako zaposlenici imaju razliiti broj telefona tada se odreeni prostor razbacuje. Zato treba razmisliti o novoj tablici koja bi sadravala podatke o broju telefona i ifri zaposlenikaTreba primjetiti da ako izbriemo podatke o djelatnicima u nekom odjelu, gubimo i podatke o odjelu.*

    *

    *

    *Sve je dobro ako se nedostatak uoi u procesu dizajniranja baze. Ukoliko se nedostatak uoi kada je baza puna podataka nedostatke je teko ispraviti.*Ja u napisati rjeenje po dijelovima, pa bi to moda tako trebalo i prezentirati. Dosada nisam imao prezentaciju pa sam sve pisao na ploi, ali ovo se i na ovaj nain moe realizirati. Nakon to se kreira baza koja zadovoljava ove zahtjeve, stavit emo dodatne zahtjeve: npr. treba se omoguiti traenje prema reiseru, prema glumcima i slino. *Prva tri entiteta e sigurno prepoznati, djelatnika im treba napomenuti. Zatim, treba spomenuti da su lan, Film i Djelatnik objekti, a Posudba je dogaaj. Dalje e trebati detektirati veze, skrenuti panju da je izmeu entiteta lan i Film veza vie-vie realizirana preko tablice posudba*

    *Ovdje ih treba polako voditi: Aha, treba uvesti novi entitet Glumac. S kim je Glumac u vezi: sa Film. Kakva je tu vrsta veze? Jedan glumac moe nastupiti u vie filmova, u jednom filmu moe biti vie glumaca, veza je vie-vie.Realizacija s novom tablicom

    *Ovdje, a i u prethodnom modelu moe malo objanjenje: za ifru lana i ifru filma mi smo mogli staviti tip N, T i AN i za svaki od ta tri tipa smo mogli nai razloge za (npr. ifra filma je oblika K-10, oznaava komediju s brojem 10). Ako nemamo neki posebni razlog da sami smiljamo primarni klju, najjednostavnije je staviti neko polje tipa Autonumber za primarni klju. To je ovdje napravljeno u tablicama GlumacFilm i Glumac.Autonumber je zgodan jer on garantira da se nee ponoviti ista vrijednost.*Ovdje ih treba pustiti da predlau, vjerojatno e najvei broj njih predlagati da se umetnu jo neka dodatna polja za ifre filmova koje lan posuuje. To nije dobro, skrenite panju na injenicu da e tada ta polja uglavnom zjapiti prazna, a nitko ne moe predvidjeti koliko filmova e lan posuditi. Stoga se posuivanje treba realizirati novom tablicom koja realizira vezu vie-vie izmeu tablica Posudba i Film (u jednoj posudbi moe biti vie filmova, jedan film moe biti vie puta posuen (naravno, ne istovremeno)).Nadalje, iz tablice Posudba treba izbaciti polje ifra_filma (a moemo razglabati oko polja Film vraen). Polje Cijena treba ostaviti jer cijena posudbe vie filmova moe varirati (trei film besplatno, ali ako je vikend posudba, onda posudba traje dva dana i tek je etvrti film besplatan, ovo ve zahtijeva programiranje).*Ovdje je zgodno rei da na ovaj nain realiziramo raune i kod drugih transakcija koje imaju vie stavki. O tome emo jo vie rei iduom prilikom.*Skrenuti panju da ovo nije konani model, jer je proces izgradnje modela podataka iterativan. I u ovom modelu postoje mogunosti proirenja: npr. ako imamo vie kazeta istog filma, onda bi trebali imati neku ifru koja ovisi o samom filmu i jo jednu ifru koja bi pratila kazete. Ali u to se ne bi uputao ...