OsvaldoLaviosa ha scritto:
Per dvaosta: Se non ti piace la gerarchia Nazioni--->Regioni--->Province--->Comuni, prova a dare un'occhiata al database di @Alex dove parla delle "caselle combinata a cascata". Lui mette tutto in un'unica tabella Comuni, il risultato finale è equivalente, ma resta il fatto di DOVER tracciare UNIVOCAMENTE ogni Comune con il suo IDComune (si può usare anche il CodiceFiscaleComune se si riesce a reperirlo facilmente). Ci sono:
- Comuni omonimi in diverse Nazioni
- Comuni omonimi in diverse Regioni
- Comuni omonimi in diverse Province
Non importa com'è fatto il db di @Alex. Le specifiche sulle quali dobbiamo basarci sono quelle all'inizio di questo topic, e lì non si parla di province e regioni (tra l'altro, non tutte le nazioni sono organizzate in province e regioni, ma questo è un altro discorso).
So bene che nella realtà potrebbero esserci comuni omonimi nella stessa provincia, e infatti già sopra ho detto che il tuo modello gestirebbe anche questa evenienza; però le specifiche, parlando solo di nazioni, non contemplano l'esistenza di regioni e province.
Per rafforzare questo concetto, ti faccio l'esempio di un esercizio (preso da un tema d'esame) che ho fatto proprio stamattina e in cui ho commesso un errore simile.
In pratica si trattava di modellizzare una videoteca, in cui tra le altre cose c'era un'entità CONTRATTO DI NOLEGGIO che conteneva tutti i noleggi, sia correnti che passati, di tutti i clienti, ed ogni noleggio poteva essere relativo a più videocassette, per cui oltre alla relazione con l'entità cliente ce n'erano 2 con l'entità VIDEOCASSETTA: una per le videocassette attualmente fuori dal negozio e una per le cassette già restituite.
Ora, le specifiche dicevano testualmente "un cliente può restituire in date diverse le videocassette noleggiate con un unico contratto".
Da ciò io ho pensato che alla seconda relazione tra contratto e videocassetta bisognasse aggiungere l'attributo data_restituzione; ebbene, nella correzione l'attributo non era presente, e ciò perché, nonostante le specifiche dicessero che le cassette potevano essere restituite in giorni diversi, non dicevano di mantenera la data di restituzione, per cui non andava fatto.
In conclusione, è molto importante non aggiungere entità o attributi oltre a quelli esplicitamente richiesti dalle specifiche. Al limite si possono aggiungere degli identificatori (tipo degli ID), ma sarebbe comunque preferibile farlo in fase di ristrutturazione.