2010-10-13 19 views
6

Ho un modello con 3 indirizzi: ritiro, dropoff e fatturazione. Immagino che l'indirizzo di fatturazione di solito sia l'indirizzo di ritiro o di consegna, quindi dal punto di vista dell'interfaccia utente, dovrei avere un'opzione "uguale a". Ma da una prospettiva DB, dovrei salvare il campo "uguale a", o dovrei duplicare i dati?Come memorizzare "uguale a" dati?

risposta

4

Si dovrebbe avere lo stesso Id di una riga da una tabella Indirizzo in due colonne diverse, PickUp e DropOff. In questo modo, non duplichi l'indirizzo, non usi un indirizzo sentinella e puoi facilmente interrogare per vedere se l'indirizzo PickUp è lo stesso di DropOff. Se una di queste modifiche si verifica in futuro, è sempre possibile modificare il valore Id memorizzato nella rispettiva colonna in un nuovo indirizzo.

+0

Giusto ... la soluzione ovvia. Penso che mi stia confondendo i problemi quando ho pensato a questo (c'è anche un "save as default" ...) – mpen

2

È possibile creare una tabella denominata "Indirizzo" ed eseguire Pickup, Dropoff, FK di fatturazione in quella tabella Indirizzo.

2

Solo perché un indirizzo è lo stesso indirizzo fisico non significa che sia lo stesso indirizzo concettuale. In realtà, l'indirizzo di John Doe potrebbe essere "123 Elm St.", ma concettualmente il suo indirizzo è "l'indirizzo postale di John Doe".

In particolare, per gli indirizzi direi può e dovrebbe essere duplicati all'interno di un database a causa di questo semplice caso: considerare due persone che vivono allo stesso indirizzo. Ora uno di loro si muove. Se hai memorizzato l'indirizzo solo una volta, l'aggiornamento dell'indirizzo del "mover" aggiornerebbe anche l'indirizzo del compagno di stanza originale.

Ma in generale, considerare come i dati sono legati ad altri dati. Se più cose possono riguardare ad esso, assicurarsi che un cambiamento per uno dovrebbe avere un impatto su tutti.

+0

Un buon punto, dipende comunque dallo scenario. – mpen

1

+0

Haha ... carino! Non hai dovuto disegnarmi un diagramma, ma grazie :) – mpen