Memorizzazione degli indirizzi dei donatori in un database relazionale

1

Sto costruendo un database di donatori per un'organizzazione senza scopo di lucro e un problema su cui sto riflettendo è come archiviare alcuni dati dei donatori. Ci sono alcune famiglie per le quali acquisiamo i nomi di entrambi i coniugi, quindi ogni coniuge ottiene il proprio record nel DB, e naturalmente condividono lo stesso indirizzo. Perché è probabile che nel database esista più persone di una famiglia e condivideranno lo stesso indirizzo (marito, moglie, figli), sto considerando di memorizzare gli indirizzi in una tabella separata e di avere Address_ID come una chiave esterna sul tavolo del programma. Ciò ridurrebbe la quantità di dati duplicati e, quando si trattava di affrontare le modifiche, sarebbe molto più facile da gestire per più donatori che fanno parte di una famiglia.

Table: Roster
Columns:
Roster_ID (PK)
PrimaryRoster_ID (FK, references Roster_ID of the head of the household)
Address_ID (FK)
FirstName
LastName
Phone

Table: Address
Columns:
Address_ID
Street
Apt
City
State
ZipCode

Non ho ancora costruito la GUI per inserire i dati - Sto ancora costruendo il DB e lo popolo tramite script, ma l'idea è che quando viene creato un nuovo donatore, gli viene assegnata la Primaria, e quindi qualsiasi altro donatore che fa parte della stessa famiglia avrà il Roster_ID del donatore primario popolato nella colonna PrimaryRoster_ID in modo che possa essere creato un collegamento tra i membri della famiglia.

Le persone nella stessa famiglia non devono avere lo stesso indirizzo (se non lo fanno, verrà creato un record di indirizzo separato per quel donatore), ma se ci sono 4 persone in una famiglia, tutte con DB separato i record e l'utente che immette i dati assegna a tutti loro lo stesso record di indirizzo, nella tabella Indirizzo sarà presente un solo record, con 4 record nella tabella Elenco con record di indirizzo come FK per associare ciascun individuo a tale indirizzo.

Qualcuno può pensare a un modo migliore di gestirlo, o questo design sarebbe sufficiente? La dimensione del database in questo momento è di circa 150 record nella tabella di riepilogo, con forse un massimo di 1000 record in fondo alla strada.

Modifica: leggermente modificato il design della tabella: mi sono reso conto che Address_ID doveva essere solo un FK in Roster invece di avere una tabella Roster_Address.

    
posta Ryan 29.09.2013 - 08:14
fonte

1 risposta

4

Con al massimo qualche migliaio di record, questo (parte del) database non è particolarmente grande, quindi non è necessario separare le informazioni sull'indirizzo per risparmiare spazio.

Considerando le considerazioni sullo spazio, i motivi più importanti che influiscono su come memorizzare le informazioni sull'indirizzo sono le regole aziendali. Ad esempio, se l'organizzazione non fa nulla con il fatto che due persone vivono allo stesso indirizzo, e non vi è alcuna indicazione che questo potrebbe cambiare nel prossimo futuro, allora il fatto che due righe di tabella contengano le stesse informazioni di indirizzo è puramente incidentale e non è necessario creare una tabella di indirizzi separata. Proprio come non penseresti di creare una tabella separata di nomi e cognomi solo perché potrebbero esserci più persone chiamate "John Smith".
Lo stesso vale per la relazione tra i membri della famiglia. Se ciò non interessa l'azienda, allora perché preoccuparsi di inserirlo nel database.

D'altra parte, se l'organizzazione distribuisce una rivista tra i suoi membri, e hanno la politica di inviare solo una copia per famiglia che vive in un indirizzo, allora il tuo design è certamente appropriato e sufficiente per soddisfare il requisito del business regola.

Per quanto riguarda il design della tabella di indirizzi, è necessario chiedersi se tutti gli indirizzi rilevanti possono essere rappresentati in quel formato, o se potrebbe essere necessario un layout di tabella diverso. Soprattutto l'organizzazione potrebbe avere a che fare con donatori stranieri, potrebbe essere necessario optare per un formato molto più gratuito per gli indirizzi, perché nulla può variare ampiamente tra paesi come come rappresentano gli indirizzi stradali.

    
risposta data 29.09.2013 - 11:18
fonte

Leggi altre domande sui tag