Citat:
Meni nije jasno kako UNIQUE sprecava da za Peru bude vise od dve godine.
Osim toga, ne moze UNIQUE u tom obliku, jer mozda ima jos neki pera koji je
maturirao iste godine. Fora je da Pera moze imati jednu ili dve godine
(znaci moze NULL) ali ne i vise od dve. Isto tako mogu imati x Pera, koji
se razlikuju samo po ID-jevima.
Dogadjaj
------------
'Mala Matura',
'Velika Matura'
I ako imas FK na tabelu u kojoj je Pera, na polje Dogadjaj, ni jedan Pera nece moci da ima niste drugo u koloni Dogadjaj osim sta je dato u tblListaMogucihDogadjaja.
Rekao sam ti i ovo:
Citat:
Onda stavis UNIQUE INDEX na polja (Ime,Dogadjaj) Ovo ce spreciti Peru da ima vise od jedne Male Mature na primer.
bez problema ces da uneses:
Ime Dogadjaj Godina
---------------------------
Pera, 'Velika Matura', 1985
Pera, 'Mala matura', 1985
Za Peru vise ne mozes da uneses ni jedan rekord jer ces uneti duplikat po indeksu (Ime, Dogadjaj). Ne mozes da uneses ni neki novi dogadjaj, jer te sprecava tabela tblListaMogucihDogadjaja. Znaci, postigli smo cilj, ne vise od dva rekorda za Peru
Pa sam ti rekao:
Citat:
Kako spreciti da velika i mala matura imaju istu godinu? Pa, jos jedan index, ovoga puta po poljima (Ime,Godina).
Kako da obezbedis da mala matura bude pre velike mature? Triger i funkcija.
Ako se dozvoljava vise od jednog Pere, onda sam Pera nije dovoljan da bude deo unique indeksa. Mora bti nesto u tabeli da ti kaze kako da razlikujes Peru od drugog Pere. Lepo to dodas u one indekse, i zavrsio si posao.
Ako struktura tabela ne sme da se menja, a treba da postavis logicko ogranicenje, onda je najbolje to uraditi kroz triger, koji ce mozda da poziva neku funkciju. Na primer, na svaki insert proveri koliko taj Pera vec ima godina, pa ako vec ima dovoljno, odbaci transakciju. To ti je neko lepo gore predlozio. Ponovo je problem kako znas koji Pera je koji? Ako ti funkcija pomaze da odredis sta je sta, onda OK, ti si resio problem.