Struttura
Ho un'applicazione che carica i dati da un database. Non sto parlando dei dati dei clienti qui, però, sto parlando della configurazione dell'applicazione. Il database verrà quindi fornito con alcune impostazioni predefinite, che voglio rimanere invariato in modo che i futuri aggiornamenti possano essere importati e sovrascrivere quella configurazione.
Vorrei che il client fosse in grado di sovrascrivere alcune parti di tale configurazione e / o aggiungervi e / o rimuoverlo (che probabilmente non verrà effettivamente rimosso, solo contrassegnato come cancellato / disabilitato). Ma mi piacerebbe che anche un reparto e un utente fossero in grado di farlo e mi piacerebbe anche che le modifiche più rilevanti fossero caricate dal database.
Requisiti essenziali
- Il database contiene l'installazione dell'applicazione standard che non può (o non verrà modificata).
- Il database memorizza le modifiche in base a società, reparto o utente che forniscono modifiche all'impostazione standard. Queste potrebbero essere aggiunte alla configurazione, o modifiche alla configurazione esistente o alla disabilitazione della configurazione standard.
Il mio miglior sforzo
Una tabella con una chiave primaria combinata da due colonne: [Id] e [Ambito]. [Scope] determina se si tratta o meno dell'impostazione predefinita, di un record aziendale, di un codice reparto o di un codice utente. L '[Id] può quindi essere lo stesso per ciascuno, consentendo a ciascun livello del client di avere la propria configurazione dello stesso record. Ad esempio:
Id | Scope | Name | Other columns...
==============================
1 | -1 | MyApp | ... <- Default record
1 | 0 | Company Name | ... <- Company record
1 | 1 | Department X | ... <- Department record
1 | 101 | User X | ... <- User record
Non mi piace molto questo approccio, devo creare una vista che raggruppa tutti gli stessi ID e quindi seleziona il record più pertinente in base al tipo (cioè se non vi è alcun record utente, quindi usa il record del dipartimento, se nessun reparto utilizza la società e se nessuna azienda utilizza l'impostazione predefinita).
Molte informazioni non cambiano davvero all'interno del record, forse una o due colonne (a volte anche di più) e sembra inutile memorizzare gli stessi dati più e più volte.
Richiesta
Sto davvero cercando idee da persone su come memorizzare e organizzare meglio questo tipo di installazione, per favore?