Sto costruendo un'applicazione in cui ci sono diverse "Posizioni". Ci sono negozi, bar, scuole e chiese (e così via) che sono tutti geocodificati e definiti da set di dati esistenti. Sebbene non esattamente uguali, queste entità possono probabilmente rientrare in una tabella "Posizioni". Ciò sarà utile perché gli utenti eseguiranno costantemente report e mappe su queste diverse posizioni e sarà molto più semplice eseguire una singola query su Locations piuttosto che provare a unire 4 (o più) tabelle.
Questi dati cambieranno ogni giorno man mano che i negozi falliscono o cambiano nome. Ci sarà una certa complessità in termini di aggiornamento di questi set di dati, ma possiamo tenerne traccia con un campo Location.type (type = school, o type = bar, ecc.)
Quindi è abbastanza semplice. Ma voglio anche consentire agli utenti di aggiungere le proprie posizioni personalizzate all'app. Questi saranno di tipo="personalizzato". Le posizioni degli utenti che hanno contribuito dovranno inoltre avere un ID utente associato, che le altre posizioni non avranno. C'è un problema di progettazione che consente agli utenti di fornire contenuti alla tabella Località? Sono preoccupato che i dati degli utenti vengano confusi con i dati di sistema durante gli aggiornamenti o quando gli utenti cancellano i loro dati.
Quindi dovremmo avere una seconda tabella CustomLocation quasi identica? Ma come mantenere gli ID di posizione unici tra le due tabelle? E stiamo aumentando la complessità del codice dell'applicazione.
Il percorso più semplice sembra forzare tutto in una singola tabella di posizione gigante, che semplificherà davvero l'esecuzione di report e la generazione di mappe, ma che non "sentirà" come l'approccio giusto. Sembra che un singolo tavolo gigante stia davvero usando "type" per creare più tabelle all'interno di un tavolo. Esiste un altro approccio in cui la tabella di posizione gestisce solo gli ID e dove forse ho una tabella PredefinedLocation e una tabella UserCustomLocation? Grazie per il tuo aiuto!