Ho inserito tra i preferiti il post sul blog di Phil Factor Normalization e 'Anima notitia copia' oggi che riassume accuratamente il caso a favore e contro la normalizzazione di alcuni tipi di dati. Esegui la seguente query su un'istanza SQL e verifica se sei d'accordo.
SELECT * FROM sys.syslanguages
SQL consente di creare database relazionali. Tuttavia, anche se ha un cattivo odore, non è un crimine fare cose orribilmente non relazionali con un database SQL fintanto che è necessario e si può dire la differenza; non solo, ma anche solo se sei consapevole dei rischi e delle implicazioni.
Hai menzionato che il file XML contiene "informazioni aggiuntive sui dati". C'è qualche vantaggio nel modellare quei metadati in un database relazionale, forse a fini di interrogatorio? In tal caso, potrebbe esserci un caso per l'estrazione dei dati rilevanti e la persistenza dell'XML rimanente come tipo di documento XML.
... se ti viene passata una stringa JSON o XML e ti viene richiesto di memorizzarla in un database, allora tutto ciò che devi fare è chiederti, nel tuo ruolo di Anima notitia copia (Anima del database) 'ho qualche interesse per il contenuto di questa informazione? '. Se la risposta è "No!" O "nequequam! Quindi è un valore atomico, per quanto complesso possa essere.
L'argomento di Phil Factor è che i campi non relazionali in un database relazionale sono perfettamente accettabili se il campo è trattato come atomico, cioè non cambia, o quando cambia l'intero campo, non una parte costituente di esso. La naturale estensione di questo è che se il tuo documento contiene elementi di tuo interesse, potrebbe esserci un valore nell'applicare un modello relazionale a quegli elementi.
Rilevante per la domanda, ma principalmente per la fraseologia, un'ultima citazione di Phil:
Ovviamente, non ho mai creato consapevolmente un database a cui Codd si sarebbe accigliato, ma intorno ai bordi ci sono interfacce e feed di dati che ho scritto che hanno causato problemi di confusione tra i fondamentalisti della normalizzazione.
Non abbiamo tutti!