Imam jednu dilemu vezanu za projektovanje baze:
* Pretpostavimo da je geografska odredjenost (država i grad) nečega u nekoj
bazi jako bitna u samoj obradi, pa se ne sme dopustiti da bude "običan" opisni
atribut nekog entiteta podlozan greskama operatera.
* Pretpostavimo da je zbog gore navedenog geografsku odredjnost potrebno
definisati kao zaseban entitet (tabelu/tabele) ka kojima će se ostvarivati spoljne
ID veze.
* Pretpotavimo da geografsku odredjenost jednoznačno definiše Država + Grad.
* Pretpostavimo da više Gradova može imati isto ime, ali samo u nekoj drugoj
zemlji, na primer (ovo je OK):
Great Britain + London
Canada + London
* Pretpostavimo da tabela Država *mora* biti zasebna zbog nekih posebnih razloga.
Kako je po vama najbolje projektovati entitet/entitete geografske određenosti (po
teoriji baza podataka, normalnih formi i same kasnije upotrebljivosti), da bi se kasnije
po potrebi uspostavljale veze ka toj geografskoj odredjenosti, kako ka samoj
drzavi, tako i ka konkretnom gradu u drzavi?
Na primer, moze li ovako (karikirano):
--- entiteti uvedeni zbog geografske odredjenosti ---
Tabela: Države
1. ID
2. ime_drzave
(ID auto-increment, ime_drzave bez duplikata, ID+ime_drzave=P.KEY.
Ovde je ocigledno da ne treba ni ID, ali ipak bih ga zadrzao)
Tabela: Gradovi
1. drzava_ID (veza sa Drzave.ID)
2. grad
(drzava_ID+grad=P.KEY)
--- sa stanovista koriscenja ---
Tabela: Ličnosti
1. ID
2. ime_prezime
3. drzava_ID (veza sa Drzave.ID)
4. grad_ID (veza sa Gradovi.grad)
Da li je ovo gore ispravno, uobičajeno, itd...?
U ovom trenutku imam dilemu. S obzirom da je u tabeli Gradovi sadržano
sve što je potrebno za jednoznačno definisanje geografske lokacije (jer
ima i atribut država), da li je ovakva modifikacija sistema moguća (i validna):
* Da se Tabela Gradovi preimenuje u Tabelu MESTO (zbog jasnoće):
Tabela: MESTO (bivša Gradovi)
1. ID
2. drzava_ID (veza sa Drzave.ID)
3. grad
(drzava_ID+grad=P.KEY, ID da bude običan auto-increment
bez duplikata, jer kad bih i njega uzeo u obzir za primarni ključ, izgubio bih
jedinstvenost atributa: drzava_ID+grad)
* Da se Tabela Ličnosti modifikuje tako da se atributi drzava_id i grad_id
zamene jednim atributom - mesto_ID:
Tabela: Ličnosti
1. ID
2. ime_prezime
3. mesto_ID (veza sa MESTO.ID)
E sad, ne znam koliko je uobičajeno da se spoljni ključ (Ličnosti.mesto_ID) vezuje
za atribut koji NIJE KLJUČ ILI DEO PRIMARNOG KLJUČA:MESTO.ID ?
(Čak mislim da standard "iso/iec 2382-17:1996" sam naziv spoljni ključ jasno vezuje
za pojam primarnog ključa nekog drugog etiteta)
Kako biste vi to rešili?