Temu sam ispratio pazljivo i upravo zato se i ukljucujem u celu pricu.
Postoji samo mogucnost da neko od nas dvojce nije nesto dobro razumeo.
Pa da rezimiramo jos jednom:
ISBN izdanja je jedinstveni internacionalni broj izdanja jednog dela ili ti knjige?
ISBN izdavača je jedinstveni internacionalni broj izdavača?
Jedno izdanje ne može imati više od ova dva navedena ISBN-a?
Da li je ovo dobro shvaceno?
Po mom shvatanju oba ISBN-a su atributi jednog izdanja neke knjige.
Odnosno mi i nemamo dva ISBN-a nego:
1. ISBN - Internatioaal Standard Book Number
2. ISPN - International Standard Publisher Number :-)
Čak da ih i priznamo da su entiteti, to bi onda bila dva različita entiteta i onda
po meni ovakva postavka modela nije dobra, jer nisi u stanju da prepoznaš
koji je koji entitet.
Vidim da si u stvari zabrinut oko toga što se (pretpostavljam) ISBN izdavača
(ISPN po meni) retko može naći na izdanjima i da bi ti u tom slučaju taj atribut često bio null.
Ne bi to trebalo da te brine, ako ga nema, onda ga nema, šta da se radi i bar
znamo da ga nema. U tvojoj postavci čak i ne znamo koji od ova dva nedostaje.
Nije nužno da ako je neki atribut često null da sa njim "nešto nije u redu".
Što se tiče dužine primarnog ključa, ne vidim problem ako je on nejednake
dužine, mislim da je dovoljno da znamo najveću moguću dužinu i da je
jedinstven. Ispravite me ako grešim?
Onda sam malo njuškao oko ISBN (
http://www.isbn-international.org)
i našao dosta interesantnih detalja koje ne bi bilo loše da se prouče,
obzirom na temu kojom se bavimo.
Evo par stvari koje sam tamo našao, a zapale su mi za oko:
Od 2007. god. ISBN je prešao sa 10 na 13 cifarski kod.
Postoji pravilo za konverziju starih ISBN u nove.
Sam ISBN u sebi sadrži podatke o izdavaču, izdanju... (nisam čitao do kraja)
Zadnja cifra ISBN-a je kontrolna.
Što će nam reći:
ISBN je ipak fiksne dužine, znači može kao primary key.
ISBN ima u sebi ugrađen mehanizam za kontrolu unosa.
ISBN u sebi sadrži podatak o izdavaču, što postavlja pitanje postojanja drugog
ISBN-a (ISPN-a) , koji si ti u praksi sretao. Nemam iskustvo iz prakse, ali mislim da
je po ovom pitanju neophodno izaći na čistac, šta je u stvari taj drugi broj koji
se može naći na izdanjima.
U prilog tome ide i to što je ISBN
jedinstven za svako pojedinačno izdanje i
po toj definiciji mi po jednom izdanju možemo imati samo jedan ISBN.
Ako ima još nešto, onda to nešto nije ISBN, možda nisam u pravu,
ali mi ovako izgleda logično.
Mogao bih da se kladim je je upravo ISBN primarni ključ svih primarnih ključeva u
centralnoj bazi ISBN registra. :-)
Ja bi ISBN bez rezerve uzeo za primarni ključ entiteta izdanja osim
ako se u biblioteci mogu naći izdanja na kojima ISBN ne postoji.
U tom slučaju bi ga zadržao da bude "jak" atribut entiteta izdanja,
nažalost zbog mogućih null vrednosti bez Unique Constraint.
U svakom slučaju na neki način bi implementirao kontrolu jedinstvenosti
unosa, tako da nema šanse da se otvore dve stavke sa istim ISBN.
Možda se čudiš što sam se uhvatio ISBN-a "ko' pijan plota", ali mislim
da je on u celoj ovoj priči veoma bitan iz prostog razloga što ga
praktično ceo svet koristi i da ako želiš da tvoja buduća aplikacija
jednog dana komunicira sa spoljnim svetom, nije loše da joj se odmah
udare dobri temelji.
Da li smo se razumeli, ako ne, idemo dalje, očekujem tvoje dalje komentare
i spreman sam da i dalje diskutujemo oko ovoga, a i oko ostatka aplikacije
kad objaviš zadnju verziju projekta. Mislim da iz ovakvih diskusija ljudi mogu
dosta da nauče.
Nadam se da nisam udavio.
Pozdrav,
Bojan
PS: U prilogu ISBN user manual