Baze podataka - Vježbe 2018/2019

Слични документи
Normalizacija i denormalizacija relacijske sheme baze podataka tjedan

Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo Vježba: #7 Kolegij: Ba

8 2 upiti_izvjesca.indd

Informacijski sustav organizacije

Studijski primer - Dijagrami toka podataka Softverski inženjering 1

JMBAG IME I PREZIME BROJ BODOVA 1. (ukupno 6 bodova) MJERA I INTEGRAL 1. kolokvij 4. svibnja (Knjige, bilježnice, dodatni papiri i kalkulatori n

Р273 Пројектовање база података Примери питања за колоквијум 1. Навести најважније моделе података кроз историју рачунарства до данас. 2. Објаснити ос

ALIP1_udzb_2019.indb

Principi softverskog inženjerstva O predmetu

Programiranje 1

Model podataka

Teorija skupova - blog.sake.ba

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred Bodovna vrijednost

PowerPoint Presentation

NAZIV PREDMETA OBLIKOVANJE WEB STRANICA Kod SIT132 Godina studija 3. Bodovna vrijednost Nositelj/i predmeta Haidi Božiković, predavač 6 (ECTS) Suradni

Test ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime

NAZIV PREDMETA UNUTARNJETRGOVINSKO POSLOVANJE II Kod Godina studija 2. Nositelj/i predmeta dr.sc. Ivana Plazibat, prof. Bodovna vrijednost 6 ECTS v.š.

Uvod u računarstvo 2+2

SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK Ivana Šore REKURZIVNOST REALNIH FUNKCIJA Diplomski rad Voditelj rada: doc.

OD MONOKRISTALNIH ELEKTRODA DO MODELÂ POVRŠINSKIH REAKCIJA

PowerPoint Presentation

Državna matura 2010./2011. i prijave za upis na studijske programe

Slide 1

Matrice. Algebarske operacije s matricama. - Predavanje I

NAZIV PREDMETA INFORMATIZACIJA POSLOVANJA Kod SIT124 Godina studija 2. Nositelj/i predmeta mr.sc. Ivica Ružić, viši predavač Bodovna vrijednost (ECTS)

QS3-KOVIU-DI-R3-SP Detaljni izvedbeni plan kolegija 1. OPĆE INFORMACIJE 1.1. Naziv kolegija Stručna praksa III 1.6. Semestar Nositelj k

Obveze i vrednovanje obaveza studenata

Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Fakultet organizacije i informatike I

Osnove fizike 1

NAZIV PREDMETA UNUTARNJETRGOVINSKO POSLOVANJE I Kod Godina studija 2. Nositelj/i predmeta dr.sc. Ivana Plazibat, prof. Bodovna vrijednost 6 ECTS v.š.

Microsoft Word - 2.FRANCUSKI A1 MOR

DRŽAVNO IZBORNO POVJERENSTVO REPUBLIKE HRVATSKE e-learning upute UPUTE ZA REGISTRACIJU ZA E-LEARNING TEČAJ Zagreb, 03. svibanj 2019.

REPUBLIKA HRVATSKA MEDICINSKA ŠKOLA ANTE KUZMANIĆA ZADAR Dr. Franje Tuđmana 24/G KLASA: /17-01/1 URBROJ: / Zadar,

Objektno orjentirano programiranje 2P

UAAG Osnovne algebarske strukture 5. Vektorski prostori Borka Jadrijević

Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Fakultet organizacije i informatike O

Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Hrvatski studiji Psihologija Ured za

Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Hrvatski studiji Kroatologija Ured za

Sadržaj 1 Diskretan slučajan vektor Definicija slučajnog vektora Diskretan slučajan vektor

Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Grafički fakultet Grafička tehnnologi

Vrjednovanje diplomskih studija od strane studenata koji su tijekom akademske godine 2015./2016. završili studij Fakultet kemijskog inženjerstva i teh

GDPR Uvodna razmatranja Ljubimko Šimičić, dipl.ing.el. Stariji konzultant (50+)

JMBAG IME I PREZIME BROJ BODOVA MJERA I INTEGRAL 2. kolokvij 29. lipnja (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni!) 1. (

Naziv studija Dvopredmetni diplomski sveučilišni studij filozofije Naziv kolegija Moderna logika Status kolegija Obvezni Godina Prva Semestar Prvi /zi

Baze podataka

Računalne mreže

OBAVIJEST PZZ KORISNICIMA Poštovani korisnici programskog rješenja Last2000. Za Vas smo pripremili sljedeće novosti u programu: NOVOSTI

Algoritmi SŠ P1

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

NATJEČAJ ZA UPIS UČENIKA U I. RAZRED SREDNJE ŠKOLE U ŠKOLSKOJ GODINI 2019./2020. Pazinski kolegij - klasična gimnazija Pazin s pravom javnosti Pazin,

CARNET Helpdesk - Podrška obrazovnom sustavu e-dnevnik upute za nadzor razrednih knjiga tel: fax: mail:

Microsoft Word - WP_kolokvij_2_rjesenja.doc

(Microsoft Word - S1-MTS-Primjena ra\350unala u poslovnoj praksi -Breslauer N)

(Microsoft Word - S1 -OR- Osnove ra\350unarstva)

UPIS UČENIKA U SREDNJE ŠKOLE

Uvod u statistiku

eredar Sustav upravljanja prijavama odjelu komunalnog gospodarstva 1 UPUTE ZA KORIŠTENJE SUSTAVA 1. O eredar sustavu eredar je sustav upravljanja prij

I

Naziv studija Integrirani prediplomski i diplomski učiteljski studij Naziv kolegija Odabrana poglavlja iz kognitivne psihologije Status kolegija Redov

JMBAG IME I PREZIME BROJ BODOVA MJERA I INTEGRAL završni ispit 6. srpnja (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni!) 1.

Objektno orijentirano modeliranje

У ПРВУ ГОДИНУ ШКОЛСКЕ 2010/11

Microsoft PowerPoint - 2_Prijave_NISpVU_ispiti_studiji_WEB.pptx

Slajd 1

NATJEČAJ ZA UPIS UČENIKA U I. RAZRED SREDNJE ŠKOLE U ŠKOLSKOJ GODINI 2019./2020. Prva gimnazija Varaždin, Petra Preradovića 14;

2015_k2_z12.dvi

NIAS Projekt e-građani KORISNIČKA UPUTA za aplikaciju NIAS Verzija 1.1 Zagreb, srpanj 2014.

Recuva CERT.hr-PUBDOC

NATJEČAJ ZA UPIS UČENIKA U I. RAZRED SREDNJE ŠKOLE U ŠKOLSKOJ GODINI 2019./2020. Srednja škola Čakovec, Jakova Gotovca 2; web stranica škole:

Chalkboard Template

knjiga.dvi

Microsoft Word - AIDA2kolokvijumRsmerResenja.doc

ZADACI ZA VJEŽBU 1. Dokažite da vrijedi: (a) (A \ B) (B \ A) = (A B) (A C B C ), (b) A \ (B \ C) = (A C) (A \ B), (c) (A B) \ C = (A \ C) (B \ C). 2.

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Strani jezik 2 - engleski 1.6. Semestar Nositelj kolegija Marija Miščančuk Bodovna vrijednost (E

Na temelju članka 88. Pravilnika o studiju i studiranju na Sveučilištu u Dubrovniku, a u skladu s člankom 59. stavkom 3. Zakona o znanstvenoj djelatno

У ПРВУ ГОДИНУ ШКОЛСКЕ 2010/11

kriteriji ocjenjivanja - informatika 8

ОБАВЕШТЕЊЕ ЗА УЧЕНИКЕ VIII РАЗРЕДА Пријављивање кандидата за прјемни испит (детаљније обавештење у средњим школама које спроводе пријемни испит) 12 15

Sveučilište u Rijeci

I

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

Microsoft Word - IP_Tables_programski_alat.doc

II. GIMNAZIJA OSIJEK Kamila Firingera 5 KLASA: /18-01/92 URBROJ: 2158/ Osijek, 15. lipnja Temeljem članka 40. Statuta II. gimnaz

Microsoft Word - Korisnički priručnik za liječnika.docx

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,

Praksa studenata u seoskim ambulantama Prof.dr.sc. Rudika Gmajnić Spec.obiteljske med. Ljubljana, Katedra obiteljske medicine Medicinskog fakult

NAZIV PREDMETA ISTRAŽIVANJE TRŽIŠTA Kod Godina studija 2. Nositelj/i Danijela Perkušić Malkoč Bodovna vrijednost 6 predmeta (ECTS) Suradnici Status pr

PRAVILNIK O ZAŠTITI OSOBNIH PODATAKA

Тачка 1

Smjernice za korištenje sustava online prijava Ukoliko imate pristupno korisničko ime i lozinku ili ste navedeno dobili nakon zahtjeva za otvaranje no

Poštovani,

(Microsoft Word - Upute o studiranju KONA\310NO)

На основу члана 47. Статута Техничког факултета у Бору и члана 1. став 2. Одлуке о извођењу приступног предавања на Универзитету у Београду (Гласник У

NATJEČAJ ZA UPIS UČENIKA U I. RAZRED SREDNJE ŠKOLE U ŠKOLSKOJ GODINI 2019./2020. IV. gimnazija Zagreb, Ulica Žarka Dolinara 9;

DWA2

Ministarstvo poljoprivrede Portal gospodarskog ribarstva Registracija prvih kupaca Uputa za korisnike

SVIM MEDIJIMA

Upute - JOPPD kreiranje obrasca

MEDICINSKA ŠKOLA VARAŽDIN Vinka Međerala 11, Varaždin Tel: 042/ Na temelju Odluke Ministarstva zna

Транскрипт:

Baze podataka Vježbe 2018/2019 Konceptualno i logičko oblikovanje Prirodoslovno-matematički fakultet Matematički odsjek

Sadržaj 1. Informacije o vježbama 2. Uvod 3. Faze razvoja do uključno prve faze logičkog oblikovanja 4. Primjer: baza podataka za bolnicu 5. Normalizacija 1NF 2NF 3NF BCNF 4NF 1

Informacije Vježbe ak. god. 2018/2019: Marko Horvat ime.prezime@math.hr Konzultacije: sri. 12 14 Ured A306 Luka Mikec ime.prezime@math.hr Obavijesti: www.math.hr/~lmikec Konzultacije: čet. 18 20 Ured A309 Web kolegija: http://web.studenti.math.pmf.unizg.hr/~manger/bp/ Grupe su objavljene u rasporedima Studenti fizike biraju termin Ostali: ako se želite prebaciti, javite nam nakon drugog tjedna nastave 2

Pravila polaganja Raspodjela bodova: 1. Aktivnost: 4% 2. Prvi kolokvij: 25% 3. Drugi kolokvij: 25% 4. Prva zadaća: 8% 5. Druga zadaća: 8% 6. Završni ispit: 30% (postoji popravni završni) Uvjeti za prolaz: Prisustvo na barem 50% nastave Barem 50% ukupnog broja bodova Detaljnije: http://web.studenti.math.pmf.unizg.hr/~manger/bp/ Uvjet za drugu zadaću: prva zadaća (zadaci se nadovezuju) 3

Uvod Baza podataka je strukturirana kolekcija podataka. Neke specifičnosti u odnosu na druge oblike pohrane podataka: Istovremen pristup (čitanje i pisanje) od strane više korisnika. Efikasan pristup podacima neovisan o poretku i strukturi unošenja podataka. Npr. brzo dohvaćanje popisa studenata sortiranih po prezimenima, iako su uneseni u poretku datuma upisa. Zaštita: možemo odrediti što pojedini korisnik baze smije čitati i pisati. Čuvanje integriteta: provjera smislenosti promjene ili unosa podataka. Npr. kod unošenja ocjene u ISVU: je li ocjena broj od 1 do 5; postoji li student s danim JMBAG-om? 4

Uvod Faze razvoja klasične relacijske baze podataka (pojednostavljen prikaz). Analiza zahtjeva Fizičko oblikovanje SQL kod Tekst Shema Konceptualno oblikovanje Logičko oblikovanje Dijagram + popratni tekst BP Korištenje baze (SQL upiti) 5

Analiza potreba Baze podataka najčešće se javljaju kao dio informacijskog sustava neke organizacije. Bavimo se relacijskim bazama podataka: svi će podaci na kraju biti organizirani u shemu sastavljenu od relacija (tablica). Faze razvoja (relacijske) baze podataka. 1. Analiza zahtjeva/potreba: uočavanje stanja organizacije, tokova podataka, dokumenata itd. Ovom se fazom ne bavimo detaljnije. Izlaz: neformalan tekstualan opis. Primjer izlaza faze analize potreba Studenti su identificirani JMBAG-om i tijekom studija mijenjaju godinu studija. Studenti upisuju kolegije. Neki se kolegiji mogu upisati samo na višim godinama studija. 6

Konceptualno oblikovanje 2. Konceptualno oblikovanje: o kojim predmetima (entitetima) treba pamtiti podatke? Kako su povezani? Izlaz: dijagram entiteta i veza (reducirani Chenov dijagram) te popratni tekst. Primjer izlaza faze analize potreba osnova za konceptualno oblikovanje Studenti su identificirani JMBAG-om i tijekom studija mijenjaju godinu studija. Studenti upisuju razne kolegije. Neki se kolegiji mogu upisati samo na višim godinama studija. Zanimaju nas tipovi entiteta (u tekstu obično opće imenice) o kojima treba pamtiti podatke. Uočavamo (samo) atribute relevantne za kontekst buduće baze. Zanimaju nas i veze u kojima sudjeluju entiteti različitih (ili istih) tipova entiteta (u tekstu obično glagoli). Ponekad veze imaju svoje atribute. 7

Konceptualno oblikovanje Primjer izlaza faze analize potreba osnova za konceptualno oblikovanje Studenti su identificirani JMBAG-om i tijekom studija mijenjaju godinu studija. Studenti upisuju razne kolegije. Neki se kolegiji mogu upisati samo na višim godinama studija. Uočavamo sljedeće tipove entiteta i veze. Tip entiteta STUDENT KOLEGIJ Atributi JMBAG, IME, PREZIME, GOD_STUDIJA ID_KOLEGIJA, NAZIV, MIN_GOD_STUDIJA Veza Između tipova entiteta Atributi UPISAO STUDENT, KOLEGIJ Kako bismo dovršili popratni tekst, određujemo primarne ključeve. 8

Konceptualno oblikovanje Za svaki tip entiteta T biramo primarni ključ P, tj. neki neprazan (možda jednočlan) podskup atributa sa svojstvima: 1. P jedinstveno određuje pojedini entitet tipa T. 2. Ne postoji P P koji jedinstveno određuje pojedini entitet tipa T. Za tip entiteta ZGRADA s atributima ULICA, KUĆNI_BROJ, BROJ_KATOVA; jedini je izbor za primarni ključ skup {ULICA, KUĆNI_BROJ}. Atribute tipa entiteta koji čine njegov primarni ključ podcrtavamo. Tip entiteta STUDENT KOLEGIJ Atributi JMBAG, IME, PREZIME, GOD_STUDIJA ID_KOLEGIJA, NAZIV, MIN_GOD_STUDIJA Veza Između tipova entiteta Atributi UPISAO STUDENT, KOLEGIJ 9

Konceptualno oblikovanje Drugi je dio konceptualnog oblikovanja izrada tzv. reduciranog Chenovog dijagrama, ili dijagrama entiteta i veza (eng. entity relationship diagram). Prikazujemo sve tipove entiteta i sve veze među njima, u sljedećoj notaciji. c, d a, b T 1 VEZA T 2 Par (a, b) je kardinalnost veze u smjeru od T 1 do T 2 (poredak!). Pritom je najčešće a {0, 1} te b {1, M}, ali se općenito dopušta a {0, 1, 2,... } te b {1, 2, 3,..., M}. Kardinalnost mora biti odabrana tako da vrijedi: Pojedini entitet tipa T 1 je u vezi VEZA s barem a i najviše b entiteta tipa T 2. M čitamo kao mnogo, a najviše M shvaćamo kao neograničeno mnogo. Slično treba odabrati kardinalnost (c, d) u drugom smjeru. 10

Konceptualno oblikovanje Pretpostavimo da su na temelju analize potreba odabrane kardinalnosti: 0, M 1, M STUDENT UPISAO KOLEGIJ Dakle: pojedini student upisao je jedan ili više kolegij. Pojedini kolegij upisan je od strane nula ili više studenata. Treba li dopustiti postojanje studenata bez ijednog upisanog kolegija? Ovisi o kontekstu: koja je svrha buduće baze? Ako nam je prioritet fleksibilnost u budućnosti, onda je manje restriktivna opcija dobar izbor. Ako je prioritet sigurnost, onda želimo što uže pratiti analizu potreba. Finalni je ishod konceptualnog oblikovanja ER dijagram i popratni tekst. 11

Ternarna veza: između tri tipa entiteta. Takve se veze često mogu zamijeniti 12 jednostavnijim konstrukcijama. Konceptualno oblikovanje: posebni slučajevi Podtip P tipa entiteta N je tip entiteta čiji su svi entiteti ujedno tipa N. Primjerice, STUDENT_DIPLOMSKOG_STUDIJA je podtip tipa STUDENT. 0, 1 1, 1 STUDENT_DIPLOMSKOG_STUDIJA JE STUDENT U popratnom tekstu, za podtip bilježimo atribute koje nismo već naveli za nadtip (atributi nadtipa implicitno su prisutni), osim atributa primarnog ključa koje možemo (ne moramo) eksplicitno ponoviti. Vezu JE obično ne navodimo, ali zato u tablici tipova entiteta, u retku za podtip, kao komentar zabilježimo ime nadtipa. Za primarni ključ podtipa odabiremo primarni ključ nadtipa. Involuirana veza: između istih tipova entiteta. Također crtamo strelicu.

Logičko oblikovanje: prvi dio pretvorba u relacije Izlaz je konceptualnog oblikovanja ER dijagram s popratnim tekstom. Zadatak je logičkog oblikovanja izraditi relacijsku shemu. Ideja je relacijskih baza podataka podatke o entitetima prikazati u formi relacija (tablica). Relacije gradimo iterativno: za svaki novi objekt iz dijagrama (tip entiteta ili veza) stvaramo jednu novu relaciju, i po potrebi modificiramo neke prethodne. Za tipove entiteta, relacija ima barem atribute (= stupce) koji odgovaraju atributima iz konceptualnog oblikovanja. Npr. Relacije za tipove entiteta STUDENT i KOLEGIJ (u prvom koraku) STUDENT(JMBAG, IME, PREZIME, GOD_STUDIJA) KOLEGIJ(ID_KOLEGIJA, NAZIV, MIN_GOD_STUDIJA) Za primarni ključ relacije uzimamo ranije odabran primarni ključ odgovarajućeg tipa entiteta. 13

Logičko oblikovanje: prvi dio pretvorba u relacije Ako u barem jednom smjeru imamo kardinalnost 1, 1: c, d 1, 1 T 1 VEZA T 2 Tada: Atribute primarnog ključa relacije T 2 i atribute veze (ako postoje) dodajemo u relaciju T 1. Primjerice, za vezu GLASI_NA između INDEKS i STUDENT: Primjer INDEKS(BR_INDEKSA, GOD_IZDAVANJA, JMBAG) STUDENT(JMBAG, IME, PREZIME, GOD_STUDIJA) 14

Logičko oblikovanje: napomena Prilikom razmatranja pretvorbe konceptualne u relacijsku shemu na sljedećim slideovima, radit ćemo samo s kardinalnostima oblika (a, b) gdje vrijedi a {0, 1} i b {1, M}. Ako radimo s konceptualnom shemom u koju su upisivane općenitije kardinalnosti (a, b), pratimo postupak kao da je kardinalnost zapravo (a, b ), definirana na sljedeći način: Ako a = 0, onda a = 0. Ako a > 0, a = 1. Ako b = 1, onda b = 1. Ako b > 1 (ili b = M), onda b = M. 15

Logičko oblikovanje: prvi dio pretvorba u relacije Inače, ako u barem jednom smjeru imamo kardinalnost 0, 1: c, d 0, 1 T 1 VEZA T 2 Tada imamo izbor: Postupamo kao i ranije (problem: null-vrijednosti). Stvaramo novu relaciju koja sadrži: primarni ključ relacije T 1, primarni ključ relacije T 2, atribute veze (ako postoje). Kao primarni ključ odabiremo primarni ključ relacije T 1. Primjerice, za vezu POSUĐEN između PRIMJERAK_KNJIGE i STUDENT: Primjer PRIMJERAK_KNJIGE(ISBN, ID_PRIMJERKA, NASLOV) STUDENT(JMBAG, IME, PREZIME, GOD_STUDIJA) POSUĐEN(ISBN, ID_PRIMJERKA, JMBAG) 16

Logičko oblikovanje: prvi dio pretvorba u relacije Preostaje slučaj kada ni na jednoj strani nemamo kardinalnost 0, 1, odnosno kardinalnost 1, 1. To su veze čija je funkcionalnost M:M. c, M a, M T 1 VEZA T 2 Stvaramo novu relaciju koja sadrži: primarni ključ relacije T 1, primarni ključ relacije T 2, atribute veze (ako postoje). Kao primarni ključ odabiremo uniju primarnih ključeva relacija T 1 i T 2. Upravo je ovo slučaj s relacijom UPISAO. Relacije za tipove entiteta STUDENT i KOLEGIJ (finalne) STUDENT(JMBAG, IME, PREZIME, GOD_STUDIJA) KOLEGIJ(ID_KOLEGIJA, NAZIV, MIN_GOD_STUDIJA) UPISAO(JMBAG, ID_KOLEGIJA) 17

Logičko oblikovanje: prvi dio pretvorba u relacije Za podtipove, osim primarnog ključa (koji je jednak primarnom ključu nadtipa), pišemo samo atribute sadržane u podtipu koji nisu ujedno atributi nadtipa. Primjer STUDENT(JMBAG, IME, PREZIME, GOD_STUDIJA) STUDENT_DIPLOMSKOG_STUDIJA(JMBAG, SMJER_DIPL_STUDIJA) Za involuirane veze postupamo analogno kao ranije. Po potrebi preimenujemo atribute kako ne bi bilo istoimenih atributa u relacijama. 18

Primjer: bolnica Pacijenti koji zauzimaju sobe. Pacijent se obično smješta u bolničku sobu prilikom dolaska u bolnicu. Svaka soba može primiti mnogo pacijenata. Konzultanti (stariji kirurzi) bolnice smiju imati i svoje privatne pacijente, koji su smješteni u jednokrevetnim privatnim sobama. Informacije koje treba pamtiti o pacijentu uključuju osobni identifikacijski broj (OIB), prezime, ime, adresu i tako dalje. Medicinske sestre zadužene za sobe. Sestra može ili ne mora biti zadužena za sobu (bolničku). Pritom jedna sestra može biti zadužena najviše za jednu sobu, no za istu sobu može biti zaduženo više sestara. Sestra je jednoznačno određena svojim OIB-om. Kirurške operacije koje se obavljaju nad pacijentima. Nad istim pacijentom može se obaviti više kirurških operacija. Neke informacije o jednoj operaciji su: tip operacije, datum i vrijeme. Kirurzi koji obavljaju operacije. Jednu operaciju obavlja samo jedan kirurg, a za ostale prisutne kirurge se smatra da oni asistiraju pri operaciji. Kirurge nadgledaju stariji kirurzi, tj. konzultanti, koji također mogu obavljati operacije ili asistirati. Informacije o jednom kirurgu su: OIB, prezime i ime, adresa, broj telefona, i tako dalje. Svaki konzultant ima svoju specijalnost. Operacijske sale u kojima se odvijaju operacije. Jedna se operacija odvija samo u jednoj sali, no ista sala može biti poprište mnogih operacija. Svaka sala ima svoju identifikacijsku oznaku. Neke sale su specijalno opremljene za neke vrste operacija. Medicinske sestre zadužene za sale. Sestra može ili ne mora biti zadužena za salu, no ne može biti zadužena za više od jedne sale. Za jednu salu može biti zaduženo više sestara. 19

Primjer: bolnica tipovi entiteta i njihovi atributi Pacijenti koji zauzimaju sobe. Pacijent se obično smješta u bolničku sobu prilikom dolaska u bolnicu. Svaka soba može primiti mnogo pacijenata. Konzultanti (stariji kirurzi) bolnice smiju imati i svoje privatne pacijente, koji su smješteni u jednokrevetnim privatnim sobama. Informacije koje treba pamtiti o pacijentu uključuju osobni identifikacijski broj (OIB), prezime, ime, adresu i tako dalje. Medicinske sestre zadužene za sobe. Sestra može ili ne mora biti zadužena za sobu (bolničku). Pritom jedna sestra može biti zadužena najviše za jednu sobu, no za istu sobu može biti zaduženo više sestara. Sestra je jednoznačno određena svojim OIB-om. Kirurške operacije koje se obavljaju nad pacijentima. Nad istim pacijentom može se obaviti više kirurških operacija. Neke informacije o jednoj operaciji su: tip operacije, datum i vrijeme. Kirurzi koji obavljaju operacije. Jednu operaciju obavlja samo jedan kirurg, a za ostale prisutne kirurge se smatra da oni asistiraju pri operaciji. Kirurge nadgledaju stariji kirurzi, tj. konzultanti, koji također mogu obavljati operacije ili asistirati. Informacije o jednom kirurgu su: OIB, prezime i ime, adresa, broj telefona, i tako dalje. Svaki konzultant ima svoju specijalnost. Operacijske sale u kojima se odvijaju operacije. Jedna se operacija odvija samo u jednoj sali, no ista sala može biti poprište mnogih operacija. Svaka sala ima svoju identifikacijsku oznaku. Neke sale su specijalno opremljene za neke vrste operacija. Medicinske sestre zadužene za sale. Sestra može ili ne mora biti zadužena za salu, no ne može biti zadužena za više od jedne sale. Za jednu salu može biti zaduženo više sestara. 20

Primjer: bolnica tipovi entiteta i njihovi atributi Tip entiteta KIRURG KONZULTANT PACIJENT PRIVATNI_PACIJENT SESTRA BOLNIČKA_SOBA SALA OPERACIJA Atributi OIB, IME, PREZIME, ADRESA, BR_TELEFONA OIB, SPECIJALNOST (podtip tipa KIRURG) OIB, IME, PREZIME, ADRESA, DATUM_ROĐENJA OIB, ID_PRIVATNE_SOBE (podtip tipa PACIJENT) OIB, IME, PREZIME ID_SOBE, BROJ_KREVETA ID_SALE, OPREMLJENOST ID_OPERACIJE, TIP_OPERACIJE, DATUM, VRIJEME Dodali smo i neke korisne atribute koji nisu eksplicitno spomenuti. 21

Primjer: bolnica uočavamo veze Pacijenti koji zauzimaju sobe. Pacijent se obično smješta u bolničku sobu prilikom dolaska u bolnicu. Svaka soba može primiti mnogo pacijenata. Konzultanti (stariji kirurzi) bolnice smiju imati i svoje privatne pacijente, koji su smješteni u jednokrevetnim privatnim sobama. Informacije koje treba pamtiti o pacijentu uključuju osobni identifikacijski broj (OIB), prezime, ime, adresu i tako dalje. Medicinske sestre zadužene za sobe. Sestra može ili ne mora biti zadužena za sobu (bolničku). Pritom jedna sestra može biti zadužena najviše za jednu sobu, no za istu sobu može biti zaduženo više sestara. Sestra je jednoznačno određena svojim OIB-om. Kirurške operacije koje se obavljaju nad pacijentima. Nad istim pacijentom može se obaviti više kirurških operacija. Neke informacije o jednoj operaciji su: tip operacije, datum i vrijeme. Kirurzi koji obavljaju operacije. Jednu operaciju obavlja samo jedan kirurg, a za ostale prisutne kirurge se smatra da oni asistiraju pri operaciji. Kirurge nadgledaju stariji kirurzi, tj. konzultanti, koji također mogu obavljati operacije ili asistirati. Informacije o jednom kirurgu su: OIB, prezime i ime, adresa, broj telefona, i tako dalje. Svaki konzultant ima svoju specijalnost. Operacijske sale u kojima se odvijaju operacije. Jedna se operacija odvija samo u jednoj sali, no ista sala može biti poprište mnogih operacija. Svaka sala ima svoju identifikacijsku oznaku. Neke sale su specijalno opremljene za neke vrste operacija. Medicinske sestre zadužene za sale. Sestra može ili ne mora biti zadužena za salu, no ne može biti zadužena za više od jedne sale. Za jednu salu može biti zaduženo više sestara. 22

Primjer: bolnica uočavamo veze Veza Između tipova entiteta Atributi OBAVLJA KIRURG, OPERACIJA ASISTIRA KIRURG, OPERACIJA NADGLEDA KONZULTANT, KIRURG LIJEČI KONZULTANT, PRIVATNI_PACIJENT PODVRGAVA_SE PACIJENT, OPERACIJA ZAUZIMA BOLNIČKA_SOBA, PACIJENT ODVIJA_SE SALA, OPERACIJA ZADUŽENA_ZA_SOBU SESTRA, BOLNIČKA_SOBA DATUM_ZADUŽIVANJA ZADUŽENA_ZA_SALU SESTRA, SALA DATUM_ZADUŽIVANJA Dodali smo i neke korisne atribute koji nisu eksplicitno spomenuti. 23

Primjer: bolnica izrada dijagrama 0, 1 0, M BOLNIČKA_SOBA ZAUZIMA PACIJENT 1, 1 0, M KONZULTANT LIJEČI PRIVATNI_PACIJENT 1, M 0, 1 SESTRA ZADUŽENA... BOLNIČKA_SOBA 1, M 0, 1 SESTRA ZADUŽENA... SALA 24

Primjer: bolnica izrada dijagrama 1, 1 0, M PACIJENT PODVRGAVA_SE OPERACIJA 1, 1 0, M KIRURG OBAVLJA OPERACIJA 0, M 0, M KIRURG ASISTIRA OPERACIJA 25

Primjer: bolnica izrada dijagrama 0, 1 0, M KONZULTANT NADGLEDA KIRURG 1, 1 0, M SALA ODVIJA_SE OPERACIJA (Na slici na sljedećoj stranici piše samo SOBA umjesto BOLNIČKA_SOBA ) 26

KONZULTANT 0,1 1,1 0,1 LIJEČI NADGLEDA JE 0,M 0,M 1,1 PRIVATNI PACIJENT KIRURG 0,1 1,1 0,M JE OBAVLJA ASISTIRA 1,1 0,M 0,M PACIJENT 1,1 PODVRGAVA SE 0,M OPERACIJA 0,M 0,M ZAUZIMA ODVIJA SE 0,1 1,1 SOBA SALA 0,1 0,1 ZADUŽENA ZA SOBU 1,M 1,M ZADUŽENA ZA SALU SESTRA

Primjer: bolnica logičko oblikovanje Za veze koje imaju kardinalnost 0, 1 u nekom smjeru možemo birati što napraviti, ovisno o tome koliko će nam smetati null-vrijednosti. Samo za vezu ZAUZIMA odlučili smo se ne raditi novu relaciju:... pacijent se obično smješta u bolničku sobu... Relacijska shema početak KIRURG(OIB, IME, PREZIME, ADRESA, BR_TELEFONA) KONZULTANT(OIB, SPECIJALNOST) PACIJENT(OIB, IME, PREZIME, ADRESA, DATUM_ROĐENJA, ID_SOBE) PRIVATNI_PACIJENT(OIB, ID_PRIVATNE_SOBE, OIB_KONZULTANTA) SESTRA(OIB, IME, PREZIME) BOLNIČKA_SOBA(ID_SOBE, BROJ_KREVETA) SALA(ID_SALE, OPREMLJENOST) OPERACIJA(ID_OPERACIJE, TIP_OPERACIJE, DATUM, VRIJEME, OIB_KIRURGA, OIB_PACIJENTA, ID_SALE) 28

Primjer: bolnica logičko oblikovanje Relacijska shema za bolnicu nastavak NADGLEDA(OIB_NADGLEDANOG, OIB_NADGLEDAJUĆEG) ZADUŽENA_ZA_SOBU(OIB_SESTRE, ID_SOBE, DATUM_ZADUŽIVANJA) ZADUŽENA_ZA_SALU(OIB_SESTRE, ID_SALE, DATUM_ZADUŽIVANJA) ASISTIRA(OIB_KIRURGA, ID_OPERACIJE) Sljedeći je korak drugi dio logičkog oblikovanja: normalizacija. Nakon toga slijedi fizičko oblikovanje (SQL kod za stvaranje baze), te samo korištenje baze. 29

Normalizacija (2. faza logičkog oblikovanja) Relacije dobivene u prvoj fazi logičkog oblikovanja mogu imati nepoželjna svojstva. Osnovno nepoželjno svojstvo je pamćenje istih podataka na više mjesta nego što je potrebno. To svojstvo otežava unos, promjenu i brisanje tih podataka. Normalizacija je proces transformiranja relacija u oblik koji zadovoljava normalne forme. Obradit ćemo 1NF, 2NF, 3NF, BCNF i 4NF. Ako se relacijska shema temelji na konceptualnom i logičkom oblikovanju, njene relacije vjerojatno već jesu u navedenim normalnim formama. No, često je potrebno normalizirati drugačije dobivene sheme (npr. shema Excel tablica koje želimo zamijeniti relacijskom bazom podataka). 30

Normalizacija: 1NF 1NF se odnosi na malo općenitiji pojam shema kod pohrane podataka ne nužno relacijske sheme. U kontekstu pohrane podataka, zapis (eng. record) je bilo kakva struktura u koju se spremaju informacije o pojedinom objektu. To može biti redak u tablici relacijske baze podataka, ali i redak u proračunskoj tablici, član nekog binarno zapisanog niza struktura itd. Primjer tablice zapisa (možda iz neke Excel datoteke) koja pamti informacije o ispitnim rokovima. ISPITNI_ROK JMBAG OCJENA DATUM DAN MJESEC GODINA BP ljeto 17/18 1. rok 0124 2 1 srpanj 2018 BP ljeto 17/18 1. rok 0931 3 1 srpanj 2018 MA1 zima 18/19 1. rok 0124 4 15 veljača 2019 31

Normalizacija: 1NF ISPITNI_ROK JMBAG OCJENA DATUM DAN MJESEC GODINA BP ljeto 17/18 1. rok 0124 2 1 srpanj 2018 BP ljeto 17/18 1. rok 0931 3 1 srpanj 2018 MA1 zima 18/19 1. rok 0124 4 15 veljača 2019 Uočite: Primarni ključ ne određuje jedinstveno ostale atribute: za isti rok postoji više vrijednosti atributa {JMBAG, OCJENA} (ponavljajuća skupina) Postoje atributi u atributu (DAN, MJESEC i GODINA u atributu DATUM) (podzapis) 32

Normalizacija: 1NF Normalizacijom (1NF) uklanjamo podzapise (atribute sastavljene od drugih atributa) i ponavljajuće skupine. Za podzapise: Ako imamo potrebu pristupati sastavnim atributima podzapisa, podzapis zamijenimo njegovim sastavnim atributima. Primjerice, umjesto DATUM uvedemo samostalne atribute DAN, MJESEC i GODINA. Inače, spojimo sastavne atribute podzapisa u jedan (nedjeljiv) atribut, najčešće niz znakova. Drugim riječima, na razini sheme više ne razlikujemo dijelove podzapisa. Za svaku ponavljajuću skupinu S u relaciji R s primarnim ključem P: Uklanjamo S iz početne tablice. Odredimo S S takav da P S jedinstveno određuje pojedinu S -torku ponavljajuće skupine. Definiramo novu relaciju s atributima P S, s primarnim ključem P S. 33

Normalizacija: 1NF U primjeru završavamo s dvije tablice. Jedna koja odgovara početnoj, druga izrađena za (jedinu) ponavljajuću skupinu {JMBAG, OCJENA}. Za prvu imamo dvije mogućnosti. Prva mogućnost za prvu tablicu: ISPITNI_ROK DAN MJESEC GODINA BP ljeto 17/18 1. rok 1 srpanj 2018 MA1 zima 18/19 1. rok 15 veljača 2019 Druga mogućnost za prvu tablicu: ISPITNI_ROK DATUM BP ljeto 17/18 1. rok 1. srpnja 2018. MA1 zima 18/19 1. rok 15. veljače 2019. 34

Normalizacija: 1NF Za drugu tablicu imamo samo jednu mogućnost. Uočite primarni ključ. ISPITNI_ROK JMBAG OCJENA BP ljeto 17/18 1. rok 0124 2 BP ljeto 17/18 1. rok 0931 3 MA1 zima 18/19 1. rok 0124 4 Ako postoje ponavljajuće skupine unutar drugih ponavljajućih skupina, cijeli proces iteriramo krećući od većih (vanjskih) ponavljajućih skupina. 35

Normalizacija: 1NF, primjer: podaci o zaposlenicima Zadatak. Zadan je niz zapisa sljedećeg oblika. Preoblikujte u relaciju u 1NF. OIB_ZAP IME_I_PREZIME GOD_ROĐENJA IME_DJETETA GOD_ROĐENJA_DJETETA Rješenje 36

Normalizacija: 1NF, primjer: podaci o zaposlenicima Zadatak. Zadan je niz zapisa sljedećeg oblika. Preoblikujte u relaciju u 1NF. OIB_ZAP IME_I_PREZIME GOD_ROĐENJA IME_DJETETA GOD_ROĐENJA_DJETETA Rješenje ZAPOSLENIK(OIB_ZAP, IME_I_PREZIME, GOD_ROĐENJA) DIJETE(OIB_ZAP, IME_DJETETA, GOD_ROĐENJA_DJETETA) 36

Normalizacija: 2NF Za (neprazne) skupove atributa A i B kažemo: B je funkcionalno ovisan o A ako vrijednosti od A jedinstveno određuju vrijednosti od B; pišemo A B. B je potpuno funkcionalno ovisan o A ako A B, i ne postoji A A t.d. A B. B je parcijalno funkcionalno ovisan o A ako A B, ali postoji A A t.d. A B. Ako je U skup svih atributa relacije, primarni ključ možemo definirati i u terminima funkcionalne ovisnosti: primarni ključ je izbor nekog P U takvog da je U potpuno funkcionalno ovisan o P. 37

Normalizacija: 2NF Za atribut kažemo da je primaran ako je element primarnog ključa, a inače, da je neprimaran. Za relaciju R kažemo da je u 2NF ako je u 1NF i svaki je neprimarni atribut potpuno funkcionalno ovisan o primarnom ključu. Napomena (!) Različiti autori koriste različite definicije. Primjerice, primaran atribut se često definira kao element bilo kojeg ključa. Štoviše, u različitoj literaturi su različite i definicije samih normalnih formi. Primjerice, relacija (pretp. da jedan kolegij predaje jedan nastavnik) UPISAO(JMBAG, ID_KOLEGIJA, IME_STUDENTA, PREZ_STUDENTA, PREZ_NASTAVNIKA, OCJENA) nije u 2NF jer neprimarni atributi IME_STUDENTA, PREZ_STUDENTA i PREZ_NASTAVNIKA parcijalno ovise o primarnom ključu. 38

Normalizacija: 2NF Transformacija relacije R s primarnim ključem P u 2NF. Ponavljamo sljedeće korake za svaki neprazan skup atributa P P: 1. Ako postoji barem jedan neprimarni atribut koji potpuno funkcionalno ovisi o P, definiramo novu relaciju R. 2. Relacija R sadrži atribute P, te sve neprimarne atribute iz R koji potpuno funkcionalno ovise o P. Primarni je ključ P. 3. Iz relacije R uklonimo sve neprimarne atribute iz R. 39

Normalizacija: 2NF Primjerice, relacija UPISAO(JMBAG, ID_KOLEGIJA, IME_STUDENTA, PREZ_STUDENTA, PREZ_NASTAVNIKA, OCJENA) je rastavljena na sljedeće relacije: Rješenje 40

Normalizacija: 2NF Primjerice, relacija UPISAO(JMBAG, ID_KOLEGIJA, IME_STUDENTA, PREZ_STUDENTA, PREZ_NASTAVNIKA, OCJENA) je rastavljena na sljedeće relacije: Rješenje UPISAO(JMBAG, ID_KOLEGIJA, OCJENA) STUDENT(JMBAG, IME_STUDENTA, PREZ_STUDENTA) KOLEGIJ(ID_KOLEGIJA, PREZ_NASTAVNIKA) U nekim situacijama možemo završiti s različitim rješenjima, ovisno o poretku kojim razmatramo skupove P u postupku transformacije. 40

Normalizacija: 2NF, primjer: tvornica i dobavljači Zadatak. Tvornica sklapa proizvode od dijelova, a dijelove kupuje od raznih dobavljača. Isti se dio može dobaviti od raznih dobavljača po raznim cijenama, a jedan dobavljač nudi razne dijelove. Preoblikujte u 2NF. CJENIK(ID_DIJELA, ID_DOBAVLJAČA, IME_DOBAVLJAČA, ADRESA_DOBAVLJAČA, CIJENA) Rješenje 41

Normalizacija: 2NF, primjer: tvornica i dobavljači Zadatak. Tvornica sklapa proizvode od dijelova, a dijelove kupuje od raznih dobavljača. Isti se dio može dobaviti od raznih dobavljača po raznim cijenama, a jedan dobavljač nudi razne dijelove. Preoblikujte u 2NF. CJENIK(ID_DIJELA, ID_DOBAVLJAČA, IME_DOBAVLJAČA, ADRESA_DOBAVLJAČA, CIJENA) Rješenje CJENIK(ID_DIJELA, ID_DOBAVLJAČA, CIJENA) DOBAVLJAČ(ID_DOBAVLJAČA, IME_DOBAVLJAČA, ADRESA_DOBAVLJAČA) 41

Normalizacija: 2NF, primjer: rent-a-car Zadatak. Baza dostupnosti rent-a-car automobila. Cijena ovisi samo o proizvođaču i zapremnini motora. Preoblikujte u 2NF. KATALOG(PROIZVOĐAČ, MODEL, ZAPREMNINA, SLOBODNIH_KOMADA, CIJENA) Rješenje 42

Normalizacija: 2NF, primjer: rent-a-car Zadatak. Baza dostupnosti rent-a-car automobila. Cijena ovisi samo o proizvođaču i zapremnini motora. Preoblikujte u 2NF. KATALOG(PROIZVOĐAČ, MODEL, ZAPREMNINA, SLOBODNIH_KOMADA, CIJENA) Rješenje KATALOG(PROIZVOĐAČ, MODEL, ZAPREMNINA, SLOBODNIH_KOMADA) CIJENE(PROIZVOĐAČ, ZAPREMNINA, CIJENA) 42

Normalizacija: 3NF Osnovna je intuicija za 3NF da želimo izbjeći tranzitivne ovisnosti. Primjerice, relacija STUDENT(JMBAG, OIB_MENTORA, PREZIME_MENTORA) sadrži tranzitivnu ovisnost JMBAG OIB_MENTORA PREZIME_MENTORA, što rješavamo uz sljedeću shemu: Shema u 3NF STUDENT(JMBAG, OIB_MENTORA) MENTOR(OIB_MENTORA, PREZIME_MENTORA) 3NF se definira složenije jer ipak nisu sve tranzitivne ovisnosti nepoželjne. Primjerice, JMBAG JMBAG JMBAG je dobar (i neizbježan) slijed ovisnosti. 43

Normalizacija: 3NF Kad god među skupovima atributa Y, X i A relacije R s primarnim ključem P imamo slijed ovisnosti Y X A, onda imamo i tranzitivan slijed ovisnosti P X A, pa posebno i tranzitivan slijed ovisnosti (za bilo koji atribut a A) P X a. Stoga se dovoljno fokusirati na ovisnosti oblika X a. Koje? Ako je X nadskup primarnog ključa, ili nekog drugog kandidata za ključ, to je prihvatljiva (i neizbježna) ovisnost. Ako je a X, i to je prihvatljiva (i neizbježna) ovisnost. Ako je a P, i to se smatra prihvatljivim za 3NF. 44

Normalizacija: 3NF Za relaciju R s primarnim ključem P kažemo da je u 3NF ako (je u 2NF i) svaka ovisnost X a povlači barem jedno od: K X, gdje je K neki kandidat za ključ, ili a X, ili a P (donja transformacija bi inače uklonila dio od P iz R!) Transformacija relacije R u 3NF. Ponavljamo sljedeće korake za svaku potpunu funkcionalnu ovisnost X a koja ne ispunjava nijedan uvjet iz definicije. 1. Ako ne postoji relacija R s primarnim ključem X, stvaramo takvu relaciju R. 2. U relaciju R dodajemo atribut a. 3. Iz relacije R uklonimo atribut a. 45

Normalizacija: 3NF, primjer: suradnici na projektima Zadatak. Suradnici neke tvrtke rade na projektima. Pritom jedan suradnik radi na točno jednom projektu. Preoblikujte u 3NF. SURADNIK(OIB, IME_I_PREZIME, PLAĆA, ID_PROJEKTA, ROK_ZAVRŠETKA_PROJEKTA) Rješenje 46

Normalizacija: 3NF, primjer: suradnici na projektima Zadatak. Suradnici neke tvrtke rade na projektima. Pritom jedan suradnik radi na točno jednom projektu. Preoblikujte u 3NF. SURADNIK(OIB, IME_I_PREZIME, PLAĆA, ID_PROJEKTA, ROK_ZAVRŠETKA_PROJEKTA) Rješenje SURADNIK(OIB, IME_I_PREZIME, PLAĆA, ID_PROJEKTA) PROJEKT(ID_PROJEKTA, ROK_ZAVRŠETKA_PROJEKTA) 46

Normalizacija: 3NF, primjer: knjižnica Zadatak. Knjižnica u bazi čuva popis knjiga. Pretpostavimo da jedan izdavač ima točno jedno mjesto izdavanja. Preoblikujte u 3NF. KNJIGE(ISBN, NASLOV, PRVI_AUTOR, OIB_IZDAVAČA, MJESTO_IZDAVANJA). Rješenje 47

Normalizacija: 3NF, primjer: knjižnica Zadatak. Knjižnica u bazi čuva popis knjiga. Pretpostavimo da jedan izdavač ima točno jedno mjesto izdavanja. Preoblikujte u 3NF. KNJIGE(ISBN, NASLOV, PRVI_AUTOR, OIB_IZDAVAČA, MJESTO_IZDAVANJA). Rješenje KNJIGE(ISBN, NASLOV, PRVI_AUTOR, OIB_IZDAVAČA) IZDAVAČ(OIB_IZDAVAČA, MJESTO_IZDAVANJA) 47

Normalizacija: 3NF, primjer: isporuka proizvoda Zadatak. Jedna isporuka šalje se jednom kupcu i može sadržavati više komada istog ili različitih proizvoda. Preoblikujte u relacije u 3NF. ID_ISPORUKE ID_KUPCA IME_KUPCA ID_PROIZVODA IME_PROIZVODA KOMADA Rješenje 48

Normalizacija: 3NF, primjer: isporuka proizvoda Zadatak. Jedna isporuka šalje se jednom kupcu i može sadržavati više komada istog ili različitih proizvoda. Preoblikujte u relacije u 3NF. ID_ISPORUKE ID_KUPCA IME_KUPCA ID_PROIZVODA IME_PROIZVODA KOMADA Rješenje (1NF) ISPORUKA(ID_ISPORUKE, ID_KUPCA, IME_KUPCA) DETALJ_ISPORUKE(ID_ISPORUKE, ID_PROIZVODA, IME_PROIZVODA, KOMADA) 48

Normalizacija: 3NF, primjer: isporuka proizvoda Zadatak. Jedna isporuka šalje se jednom kupcu i može sadržavati više komada istog ili različitih proizvoda. Preoblikujte u relacije u 3NF. ID_ISPORUKE ID_KUPCA IME_KUPCA ID_PROIZVODA IME_PROIZVODA KOMADA Rješenje (1NF) ISPORUKA(ID_ISPORUKE, ID_KUPCA, IME_KUPCA) DETALJ_ISPORUKE(ID_ISPORUKE, ID_PROIZVODA, IME_PROIZVODA, KOMADA) (2NF) ISPORUKA(ID_ISPORUKE, ID_KUPCA, IME_KUPCA) DETALJ_ISPORUKE(ID_ISPORUKE, ID_PROIZVODA, KOMADA) PROIZVOD(ID_PROIZVODA, IME_PROIZVODA) 48

Normalizacija: 3NF, primjer: isporuka proizvoda Zadatak. Jedna isporuka šalje se jednom kupcu i može sadržavati više komada istog ili različitih proizvoda. Preoblikujte u relacije u 3NF. ID_ISPORUKE ID_KUPCA IME_KUPCA ID_PROIZVODA IME_PROIZVODA KOMADA Rješenje (1NF) ISPORUKA(ID_ISPORUKE, ID_KUPCA, IME_KUPCA) DETALJ_ISPORUKE(ID_ISPORUKE, ID_PROIZVODA, IME_PROIZVODA, KOMADA) (2NF) ISPORUKA(ID_ISPORUKE, ID_KUPCA, IME_KUPCA) DETALJ_ISPORUKE(ID_ISPORUKE, ID_PROIZVODA, KOMADA) PROIZVOD(ID_PROIZVODA, IME_PROIZVODA) (3NF) ISPORUKA(ID_ISPORUKE, ID_KUPCA) KUPAC(ID_KUPCA, IME_KUPCA) DETALJ_ISPORUKE(ID_ISPORUKE, ID_PROIZVODA, KOMADA) PROIZVOD(ID_PROIZVODA, IME_PROIZVODA) 48

Normalizacija: BCNF Za neki podskup X atributa kažemo da je determinanta ako postoji barem jedan atribut a / X i potpuna funkcionalna ovisnost X a. Za relaciju R kažemo da je u BCNF ako je svaka njezina determinanta X ujedno i kandidat za ključ. BCNF povlači 3NF (kontrapozicija) Pretpostavimo da relacija nije u 3NF. Tada postoji potpuna funkcionalna ovisnost X a, a / X, a / P, i za svaki kandidat za ključ K vrijedi K X. Dakle, X je determinanta. Ali, X nije nadskup nijednog kandidata za ključ, pa X nije kandidat za ključ. 49

Normalizacija: BCNF BCNF možemo definirati vrlo slično kao 3NF: Za relaciju R kažemo da je u BCNF ako svaka ovisnost X a povlači barem jedno od: K X, gdje je K neki kandidat za ključ, ili a X. Slijedi da je jedina situacija kada je relacija u 3NF, a nije u BCNF, ona u kojoj tranzitivna ovisnost završava u nekom primarnom atributu. U takvim situacijama postupamo slično kao u 3NF: iz početne relacije R premještamo a iz R u novu relaciju. No, sada je taj uklonjeni dio potrebno nekako nadomjestiti (inače više nemamo primarni ključ), npr. s X. 50

Normalizacija: BCNF U donjem primjeru pretpostavimo da student može upisati više fakulteta i na svakom ima jednog mentora, a svaki mentor radi na samo jednom fakultetu (s možda mnogo studenata). UPISAO(STUDENT, FAKULTET, OIB_MENTORA) Imamo {STUDENT, FAKULTET} OIB_MENTORA FAKULTET. Rješenje 51

Normalizacija: BCNF U donjem primjeru pretpostavimo da student može upisati više fakulteta i na svakom ima jednog mentora, a svaki mentor radi na samo jednom fakultetu (s možda mnogo studenata). UPISAO(STUDENT, FAKULTET, OIB_MENTORA) Imamo {STUDENT, FAKULTET} OIB_MENTORA FAKULTET. Rješenje MENTORIRANJE(STUDENT, OIB_MENTORA) MENTOR(OIB_MENTORA, FAKULTET) Dakle, postupak je nalik postupku za 3NF, razlika je dodavanje srednjeg atributa (OIB_MENTORA) u primarni ključ početne relacije. 51

Normalizacija: BCNF, primjer: zauzeće predavaonica i termina Zadatak. Jedan kolegij održava se uvijek u istoj predavaonici, no u nekoliko vremenskih termina tjedno. Preoblikujte u BCNF. RASPORED(ID_PREDAVAONICE, VREMENSKI_TERMIN, ID_KOLEGIJA). Rješenje 52

Normalizacija: BCNF, primjer: zauzeće predavaonica i termina Zadatak. Jedan kolegij održava se uvijek u istoj predavaonici, no u nekoliko vremenskih termina tjedno. Preoblikujte u BCNF. RASPORED(ID_PREDAVAONICE, VREMENSKI_TERMIN, ID_KOLEGIJA). Rješenje ZAUZECE_TERMINA(VREMENSKI_TERMIN, ID_KOLEGIJA) MJESTO_NASTAVE(ID_KOLEGIJA, ID_PREDAVAONICE) 52

Normalizacija: 4NF Pogledajmo odmah primjer relacije koja nije u 4NF: OIB ZAVRŠEN_STUDIJ RADNO_ISKUSTVO 0124 PREDDIP. MATEMATIKA PROGRAMER 0124 PREDDIP. MATEMATIKA ANALITIČAR 0124 DIPL. MATEMATIKA PROGRAMER 0124 DIPL. MATEMATIKA ANALITIČAR 0931 PREDDIP. MATEMATIKA ASISTENT 0931 DIPL. MATEMATIKA ASISTENT 0931 DOKT. MATEMATIKA ASISTENT Pamtimo završene studije i radna iskustva osoba. No završeni studiji i radna iskustva ne ovise jedno o drugome. Rješenje DIPLOME(OIB, ZAVRŠEN_STUDIJ) RAD(OIB, RADNO_ISKUSTVO) 53

Normalizacija: 4NF Grupirajmo atribute relacije R u disjunktne neprazne skupove A, B i C. Kažemo da postoji višeznačna ovisnost od A do B, pišemo A B, ako za sve vrijednosti a atributa A, b atributa B i c atributa C vrijedi sljedeće: ako postoje reci (a, b, _) i (a, _, c), onda postoji i redak (a, b, c). Drugim riječima, pojedina vrijednost a atributa A određuje vrijednosti atributa B: ali za razliku od funkcionalne ovisnosti, gdje a određuje jednu vrijednost b atributa B, ovdje a određuje neki skup B-vrijednosti. Još jedna formulacija: za svaku A-vrijednost a postoji neki skup B-vrijednosti B i C-vrijednosti C tako da vrijedi: {a} B C je skup svih redaka kojima je A-vrijednost jednaka a. 54

Normalizacija: 4NF Relacija je u 4NF ako A B povlači da A funkcionalno određuje čitavu relaciju. Dakle, ako višeznačne ovisnosti ne generiraju nepotrebna ponavljanja podataka. Ekvivalentan zahtjev (zašto?): A B povlači A B. Kako eliminirati višeznačnu ovisnost A B koja nije funkcionalna? Kao u primjeru, definiramo relacije R 1 (A, B) i R 2 (A, C). 55

Normalizacija: 4NF, primjer: izborni kolegiji Zadatak. Studenti upisuju izborne kolegije iz matematike i izborne kolegije iz računarstva. Ne postavljaju se nikakvi uvjeti na izbor jednih u odnosu na druge. Preoblikujte u 4NF. IZBOR(JMBAG, MAT_KOLEGIJ, RAČ_KOLEGIJ). Rješenje 56

Normalizacija: 4NF, primjer: izborni kolegiji Zadatak. Studenti upisuju izborne kolegije iz matematike i izborne kolegije iz računarstva. Ne postavljaju se nikakvi uvjeti na izbor jednih u odnosu na druge. Preoblikujte u 4NF. IZBOR(JMBAG, MAT_KOLEGIJ, RAČ_KOLEGIJ). Rješenje IZBOR_MAT(JMBAG, MAT_KOLEGIJ) IZBOR_RAČ(JMBAG, RAČ_KOLEGIJ) 56