Mantenere l'enumerazione nel DB quando i dati ad esso associati non sono memorizzabili nel DB

1

Ho visto diverse domande su questo sito web che spiegano che le enumerazioni dovrebbero essere mantenute nel database quando ce n'è uno ( questo per esempio). Tuttavia, ritengo che il mio caso sia diverso e che ci siano ulteriori elementi da prendere in considerazione.

L'applicazione su cui sto lavorando fornisce un'interfaccia utente per personalizzare le "schermate" (che sono fondamentalmente pagine web) basate su un insieme piuttosto limitato di "moduli". Vogliamo dare una cornice agli utenti finali, quindi per ogni modulo ci sarà una personalizzazione limitata. Il modulo verrà creato a mano, quindi il modulo più i valori immessi dall'utente verranno analizzati per creare le pagine web. Il nostro ambiente è molto specifico, quindi non sarà necessariamente HTML direttamente, ma possiamo considerarlo HTML.

Ritengo che non possiamo archiviare gli interi moduli nel database, specialmente le funzioni utilizzate per analizzare l'input dell'utente per generare l'output. Tuttavia, altre righe nel DB dovranno fare riferimento a quel modulo. In tal caso, quale sarebbe il modo migliore per andare? Dovrei fare una semplice tabella "enum" e usare chiavi esterne nel DB, e nell'app collegare i valori dell'enum con le procedure associate, o dovrei semplicemente scrivere una stringa "ID" della classe nelle colonne che si suppone possano fare riferimento quei moduli, riducendo al minimo la complessità del DB e mantenendo i moduli più "centralizzati" nell'app?

Non esiste alcuna condivisione delle tabelle DB e non è prevista alcuna condivisione delle tabelle DB.

    
posta ZamenWolk 04.07.2018 - 08:49
fonte

1 risposta

2

La domanda a cui ti colleghi sta dicendo di mettere enumerazioni nel database quando i dati che usano queste enumerazioni sono memorizzati nel database. Questo per trarre vantaggio dai vincoli e dalle relazioni con le chiavi esterne quando si esegue una query sul database.

Se i dati che utilizzano i valori enum non sono nel database, non vi è alcun vantaggio nell'aggiungere un'altra query al database quando non si otterrà il vincolo o il comportamento di una chiave esterna.

Quindi, nel tuo caso, mantieni l'enum e la logica dei vincoli insieme al tuo modello di dati.

    
risposta data 04.07.2018 - 13:12
fonte

Leggi altre domande sui tag