1. 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
2. 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
3. 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
4. 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
5. 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 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). 5
Predavanje 01 - Baze podataka
6. Za slijedeće entitete odredite vrstu
(objekt/događaj)
Učenik
Prijava ispita
Predmet
Profesor
Škola
Predavanje 01 - Baze podataka 6
7. 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.
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
8. U prethodnom zadatku je spomenut
entitet Učenik. Navedite neka svojstva tog
entiteta i odredite im tip podataka!
• Naziv učenika (T) • Ime roditelja (T)
• Datum rođenja (D/T) • Adresa (T)
• Matični broj(T) • Broj telefona (T)
• JMBG (T) • Koju školu pohađa
• OIB (T) (T)
Predavanje 01 - Baze podataka 8
9. Ž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
10. Ž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) • PDV (C)
• Naziv kupca (T) • Broj računa (T ili N)
• Količina (N) • Datum izdavanja računa (D/T)
• Jedinična cijena (C) • Tko izdaje račun (osoba) (T)
• Ukupna cijena (C) • Način plaćanja (T)
• Račun plaćen (Y/N)
Predavanje 01 - Baze podataka 10
11. 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
12. 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
13. Izmeđ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
14. kreirati entitete grad i adresa i povezati ih!
15. 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
16. 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
17. Zadani su entiteti
Država – države u Europi
Grad – svi gradovi sa više od 100000 stanovnika u
Europi
Glavni grad – glavni gradovi europskih država
Jezik – svi službeni jezici u europskim državama
Odredite veze među entitetima.
Predavanje 01 - Baze podataka 17
18. 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
19. 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
20. Država Država
Naziv države – Naziv države
Stanovnika
– Stanovnika
Veličina
– Veličina
Uređenje
– Uređenje
– Naziv grada
Glavni grad – Broj stanovnika
– Naziv grada
– Broj stanovnika Realizacija veze uklapanjem Glavnog
grada u Državu (može i obrnuto)
Predavanje 01 - Baze podataka 20
21. 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
22. Država Entitet Država se ne mijenja
Naziv države
Stanovnika
Veličina Grad
Uređenje – Naziv grada
– Broj stanovnika
– Naziv države
Grad
– Naziv grada Umetnuti primarni ključ entiteta
– Broj stanovnika Država
Predavanje 01 - Baze podataka 22
23. 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
24. Država Država i Jezik se ne mijenjaju
– Naziv
države Primarni ključ nove tablice
– Stanovnika Umetnuti
Govori_se
– Veličina primarni
– ID ključevi
– Uređenje
– Naziv jezika entiteta
Jezik i
– Naziv države
Jezik Država
– Broj stanovnika
– Naziv jezika
– Pismo Dodatno svojstvo
Predavanje 01 - Baze podataka 24
25. 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
26. 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
27. 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
28. Mana: dosta praznog prostora u tablici
Zaposlenik
Predavanje 01 - Baze podataka 28
30. 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
31. 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
32. Ž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
33. 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
34. Član Posudba Film
Šifra člana (T) Šifra posudbe (AN) Šifra filma (AN)
Ime i prezime
(T)
Šifra člana (T) Naziv filma (T)
Adresa (T) Šifra filma (N) Žanr (T)
Broj telefona Id djelatnika (N)
(T) Datum (D/T)
Napomena (M) Cijena (C)
Djelatnik
Film vraćen (Y/N)
Id djelatnika (AN)
Ime i prezime (T)
U raznim tablicama povezujemo polja koja imaju Adresa (T)
isto značenje. Broj telefona (T)
Ta polja trebaju biti istog tipa. Napomena (M)
Izuzetak je polje tipa Autonumber koji se
povezuje s poljem tipa Number u drugoj tablici!
Predavanje 01 - Baze podataka 34
35. Ž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
36. Član Djelatnik
Id djelatnika (AN)
Šifra člana (T) Posudba
Ime i prezime Ime i prezime (T)
Šifra posudbe (AN)
(T) Adresa (T)
Šifra člana (T)
Adresa (T) Broj telefona (T)
Šifra filma (N)
Broj telefona Napomena (M)
(T) Id djelatnika (N)
Napomena (M) Datum (D/T)
Cijena (C)
Film vraćen (Y/N)
Glumac
Film Id glumca (AN)
Šifra filma (AN) GlumacFilm Ime i prezime (T)
Naziv filma (T) Id (AN)
Godina rođ. (N)
Žanr (T) Šifra filma (N)
Nagrade (M)
Id glumca (N)
Predavanje 01 - Baze podataka 36
37. 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
38. Tablice Član, Djelatnik, Glumac, GlumacFilm
ostaju iste kao u prethodnom modelu
Stavka Posudba
Film Šifra posudbe (AN)
Id stavka (AN)
Šifra filma (AN) Šifra člana (T)
Šifra filma (N)
Naziv filma (T) Id djelatnika (N)
Šifra posudbe (N)
Žanr (T) Datum (D/T)
Film vraćen (Y/N)
Cijena (C)
Predavanje 01 - Baze podataka 38
39. Član Djelatnik
Šifra člana Posudba Id djelatnika
Ime i prezime Šifra posudbe Ime i prezime
Adresa Šifra člana Adresa
Broj telefona Id djelatnika Broj telefona
Napomena Datum Napomena
Cijena
Glumac
Stavka
Id glumca Film
Id Stavka
Ime i prezime Šifra filma
Šifra posudbe
Godina rođ. Naziv filma
Šifra filma
Nagrade Žanr
Film vraćen
GlumacFilm
Id
Šifra filma
Id glumca
Predavanje 01 - Baze podataka 39
Notes de l'éditeur
Baza podataka je npr. telefonski imenik, podaci o zaposlenicima koji se vode u obliku raznih kartoteka i slično Ovdje treba istaknuti mane papirnatih baza podataka (sortiranje po jednom kriteriju, glomaznost) i naglasiti prednosti elektroničkih 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.Može se još nadodati i hipertekstualni model (literatura koju sam konzultirao nije jednistvena u tome da li je riječ o modelu ili nije)
- U idućem slajdu se propituje razumiju li oni što je entitet, što je atribut, a što vrijednost atributa. Ovdje im se može spomenuti da su atributi slični pojmu varijable u statistici, ali reakcija na to će (najvjerojatnije) biti uzdasi...
Možda će se ovdje buniti kako to da je Prijava ispita događaj, stoga treba tu biti strpljiv. Probajte im sugerirati slijedeće: Što prijava ispita povezuje? Studenta i Kolegij (ima toga još, ispitni rok itd.). Može li student prijaviti više ispita? Može li se na jedan ispit prijaviti više studenata. Entitet Prijava ispita zapravo realizira vezu više:više između entiteta Student i Kolegij Naravno, i kolegiji Student i Studij su povezani, ali tu veza nije više:više nego jedan:više, pa je nije potrebno realizirati posebnom tablicom. Još uvijek ne spominjati veze između 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 nešto 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 nešto slično. Za Text, Memo – istaknuti da mogu unutra biti i dijakritički znakovi Za Number reći da ćemo naknadno objasniti podešavanja Za Autonumber može se reći da ima dva načina rada – slučajni odabir broja ili uvećavanje broja, mi koristimo uvećavanje Za OLE object i Hyperlink napravit ćemo kasnije vježbu, 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 rješenja. Bilo bi dobro postaviti pitanje: koje vrijednosti može poprimiti pojedini atribut! Tipovi podataka su predstavljeni skraćenicom. 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 ništa ne možemo računati.
Dati zadatak i pustiti ih da daju prijedloge. Na kraju pokazati rješenja. Bilo bi dobro postaviti pitanje: koje vrijednosti može poprimiti pojedini atribut!
Ovo je njihov domaći teren, tu bi trebali spomenuti sve, možda će imati problema sa brojem računa! Ovdje treba postaviti pitanje: što od ovih podataka je višak, odnosno ne treba spremati jer se može iz preostalih izračunati? Ukupna cijena, PDV Na ovoj tablici treba spomenuti da se ona može uredno voditi i u Excelu, ali istaknuti i neke moguće probleme: npr. krivo upišemo naziv kupca i ako želimo naći njegovu ukupnu potrošnju to ne možemo napraviti. Dalje, što ako želimo imati neke dodatne podatke o kupcu kao broj telefona. Hoćemo li to pamtiti uz svaki račun? Možemo, ali što ako kupac promijeni broj telefona, a mi ga na osnovu nekog starog računa želimo obavijestiti o nečemu, novoj ponudi? Dakle treba im sugerirati da podatke o kupcu bi bilo pametno držati u jednoj posebnoj tablici i na neki način spojiti sa tablicom računa.
Definicija primarnog ključa koju sam ja ovdje naveo nije naravno potpuno točna, jer se tamo spominje “više polja”, a ne samo jedno, ali je za naše potrebe sasvim dovoljna. Uglavnom, ideja će biti da u svakoj Access tablici koju naprave stave jedno polje id_nešto, tipa Autonumber. Time rješavaju sve probleme oko primarnog ključa.
Ovdje treba pojašnjavati pojmove kao što su zapis i polje, da to što bolje razumiju. Pitati ih koje polje bi moglo biti primarni ključ, ali treba im reći 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 moguće da postoje dva grada istog imena u različitim državama, a i u Hrvatskoj postoji više mjesta s istim nazivom, sugerirati im uvođenje novog polja.
Glavni grad je zapravo podentitet od Grad pa tu ne možemo govoriti o nekoj vezi Jedna država ima više gradova, a jedan grad može biti samo u jednoj državi U jednoj državi se može govoriti više jezika (Švicarska, Belgija), a jedan jezik se može govoriti u više država
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-više u pravilu realizira umetanjem primarnog ključa. Nakon što smo opisali postupak, postaviti pitanje što se događa u konkretnom slučaju! Naravno, među svojstva entiteta Grad treba uvrstiti primarni ključ entiteta Država
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-više u pravilu realizira umetanjem primarnog ključa. Nakon što smo opisali postupak, postaviti pitanje što se događa u konkretnom slučaju! Naravno, među svojstva entiteta Grad treba uvrstiti primarni ključ entiteta Država
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 točno jedan grad Za dva slajda kreće primjer jedne loše tablice pa se sve navedeno može pokazati
Komentirati za Broj telefona: ako zaposlenik ima točno dva telefona, mogu se staviti polja telefon1 i telefon2, ali ako ih ima više, to postaje problem. Nadalje, ako zaposlenici imaju različiti broj telefona tada se određeni prostor razbacuje. Zato treba razmisliti o novoj tablici koja bi sadržavala podatke o broju telefona i šifri zaposlenika Treba primjetiti da ako izbrišemo podatke o djelatnicima u nekom odjelu, gubimo i podatke o odjelu.
Sve je dobro ako se nedostatak uoči u procesu dizajniranja baze. Ukoliko se nedostatak uoči kada je baza puna podataka nedostatke je teško ispraviti.
Ja ću napisati rješenje po dijelovima, pa bi to možda tako trebalo i prezentirati. Dosada nisam imao prezentaciju pa sam sve pisao na ploči, ali ovo se i na ovaj način može realizirati. Nakon što se kreira baza koja zadovoljava ove zahtjeve, stavit ćemo dodatne zahtjeve: npr. treba se omogućiti traženje prema režiseru, prema glumcima i slično.
Prva tri entiteta će sigurno prepoznati, djelatnika im treba napomenuti. Zatim, treba spomenuti da su Član, Film i Djelatnik objekti, a Posudba je događaj. Dalje će trebati detektirati veze, skrenuti pažnju da je između entiteta Član i Film veza više-više 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 može nastupiti u više filmova, u jednom filmu može biti više glumaca, veza je više-više. Realizacija s novom tablicom
Ovdje, a i u prethodnom modelu može malo objašnjenje: za Šifru člana i Šifru filma mi smo mogli staviti tip N, T i AN i za svaki od ta tri tipa smo mogli naći razloge za (npr. šifra filma je oblika K-10, označava komediju s brojem 10). Ako nemamo neki posebni razlog da sami smišljamo 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 neće ponoviti ista vrijednost.
Ovdje ih treba pustiti da predlažu, vjerojatno će najveći broj njih predlagati da se umetnu još neka dodatna polja za šifre filmova koje član posuđuje. To nije dobro, skrenite pažnju na činjenicu da će tada ta polja uglavnom zjapiti prazna, a nitko ne može predvidjeti koliko filmova će član posuditi. Stoga se posuđivanje treba realizirati novom tablicom koja realizira vezu više-više između tablica Posudba i Film (u jednoj posudbi može biti više filmova, jedan film može biti više puta posuđen (naravno, ne istovremeno)). Nadalje, iz tablice Posudba treba izbaciti polje Šifra_filma (a možemo razglabati oko polja Film vraćen). Polje Cijena treba ostaviti jer cijena posudbe više filmova može varirati (treći 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 reći da na ovaj način realiziramo račune i kod drugih transakcija koje imaju više stavki. O tome ćemo još više reći idućom prilikom.
Skrenuti pažnju da ovo nije konačni model, jer je proces izgradnje modela podataka iterativan. I u ovom modelu postoje mogućnosti proširenja: npr. ako imamo više 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 upuštao ...