Sto lavorando alla creazione di una soluzione modello di importazione / esportazione per un'applicazione web. L'applicazione web ha "Dipartimenti" (memorizzati come tabella MySQL departments
) e ogni "Reparto" ha un insieme di "Funzione" (memorizzato come tabella MySQL funtionXYZ
) e ogni "Funzione" ha "Record" in esso (righe nella tabella MySQL).
Un esempio di vita reale - il reparto "Contabilità" ha "Vendite", "Fattura", ecc. come "Funzione" e ognuno avrà i propri dati di esempio.
Quindi per l'esempio sopra, ci sarà una riga in departments
tabella per "Contabilità" e ci sarà una tabella separata functionSALES
, functionINVOICE
che memorizza i record corrispondenti.
Ora voglio creare funzionalità di importazione / esportazione in modo tale che l'esportazione significhi memorizzare la struttura di un "Dipartimento" con tutte le sue "Funzioni" e i corrispondenti dati di esempio.
La mia idea originale è di memorizzare i meta-dati di "Reparto" (come nome, numero di funzioni, elenco funzioni, ecc.) in una tabella MySQL e creare un file JSON di tutte le "Funzioni" e dei suoi "Record" e memorizzarlo come un file flat o nella colonna del database per "Department" corrispondente.
Quando un utente vuole dire importare il modello di reparto "Accounting", il codice back-end analizza i dati JSON per il dipartimento "Accounting" e crea le tabelle attuali e le popola con dati di esempio.
È un buon approccio? Inoltre, la memorizzazione in questo modo come JSON è una buona idea: i dati JSON possono diventare enormi a seconda del numero di funzioni definite per un "Dipartimento".
Ogni reparto sarà personalizzabile da un'organizzazione secondo le proprie esigenze. E se vogliono abilitare / pubblicare la loro soluzione progettata (raccolta di app e relativi record), vogliamo che siano disponibili per altri clienti, e quindi questo design. Qualche idea migliore - benvenuta.
L'Org A crea un dipartimento "Contabilità", l'Org B crea il reparto "Risorse umane", quindi creiamo modelli per entrambi e lo rendiamo disponibile per altri clienti. Quando arriva l'Org C e vuole creare il dipartimento "Contabilità", possono creare direttamente lo scheletro (tabelle e dati di esempio) usando i modelli come discusso sopra.
P.S. Leggendo altre domande / risposte qui su domande simili, posso confermare che non devo interrogare alcun dato che faccia parte del JSON.