Mislim da je zadatak pretezak za seminarski rad druge godine programiranja. Strasno je sto je uopste postavljen takav zadatak, a jos strasnije sto profesor to ne vidi. Evo sta sam sve uspoeo da uradim tabeli Clanovi:
1. Usao sam u tabelu Clanovi i svim postojecim rekordima u koloni SrodstvoID dodelio vrednost 'Supruga' Znaci, ima 6 rekorda i svi su supruge i sto je najgore, svako je svakom zena!
2. Onda sam isto uradio za kolonu Nosioc. Sve sam proglasio za nosioce.
3. Osobu iz rekorda ClanoviID = 7, sa JMBG = '9888777777777' sam dodelio domacinstvu 1 kao muza i nosioca naravno, jer svi su nosioci.
Znaci, jedna ista osoba moze se pojaviti u vise domacinstava odjednom, u istom momentu. Za Boziji zakon ne znam, ali gradjanski zakon sigurno to ne dozvoljava. Niti je dobro da svako svakom bude supruga. A moglo bi biti ponegde i supruga sa muskim imenom, ili muz sa zenskim imenom. Mislim da katolicka crkva jos uvek to ne dozvoljava, da muz i zena budu isog spola. Ali tvoja baza to dozvoljava. Ni profesor ni crkva nece biti srecni, pazi sta radis
Baza podataka za tvoj slucaj, mora da obezbedi sledece uslove:
1. Svaka osoba sme pripadati samo jednoj porodici.
2. Svaka porodica mora imati tacno jednog nosioca. Nosioc moze biti ili muz ili zena.
3. Muz i zena moraju biti odgovarajuceg pola.
4. Najvise jedan clan porodice moze biti proglasen za muza ili zenu
5. Broj dece i ostalih clanova nije ogranicen.
6. Maticni broj gradjana mora biti jedinstven, ukoliko ga imamo.
Problem je sto se to ne moze lako obezbediti, barem ne u Accessu. Moraces mnogo da programiras. Ponesto moze i bez programiranja, evo ti liste:
1. Uvedi kolonu 'Spol',
2. 'BracniDrug', neka budu tipa number, integer i dozvoli samo dve vrednosti (NULL,1). Napravi unique index (Nosilac,BracniDrug) => bice najvise jedna bracni drug za svakog nozioca
3. Kolonu 'Nosilac' promeni da bude tipa number,integer i dozvoli samo dve vrednosti (NULL,1). Napravi unique index (DomacinstvoID,Nosilac) => imaces najvise jednog nosioca po domacinstvu
4. Sada ostaje da Nosilac i Barcni drug ne mogu biti istog pola. To moras programiranjem, na Before_Update eventu za formu kroz koju se unose clanovi.
5. Prvi clan svakog domacinstva koji se unese, mor abiti i nosilac. I to moras da programiras, na BeforeUpdate
6. Dodaj kolonu 'MojNosilac' koja ce za svakog clana sadrzaiti ClanID onoga ko je noislac njihove porodice. Za samog nosioca, stavis da je MojNosilac = ClaID - nosilac je nosilac sam sebi. I ovo mora da se programira, na isi onaj BeforeUpdate.
7. stavi UNIQUE index na JMBG, i dozvoli da JMBG bude prazan.
8. Stavi unique index po Br-Cl_knjizice, uz dozvolu da clanska knjizica ne postoji
Potpuno je OK da sa ovom listom odes do profesora i kazes "Ovo su uslovi koaj ovakva baza mora da zadovolji. Kako da ja to isprogramiram i postignem?" Imas potpuno pravo da pitas ovakvo pitanje, jer tehnike kojim se ovo postize gotovo sigurno nisu bile na predavanjiuma. Da jesu, ne bi bilo ovakvih zadatka.
Zakacicu ti primer koji pokazuje da dosta moze da se uradi i bez koda, ali ne pokusavaj da ga poturis kao svoj. Ne zato sto ja cuvam autorska prava, nego zato sto ce te profesor pitati kako si to napravio pa neces znati da odgovoris i onda si u problemu.
Zakaceni primer radi skoro sve sto je navedeno u listi. Zajaceni primer ne garantuje da ce nosilac i brcni drug biti razlicitog pola. Teorijski ovo deluje privlacno, ali je zato jako tesko napraviti dobar korisnicki interfejs - na primer, za kolone Nosilac, Bracni Drug ne mozete koristiti Check box.....