Я закладка Фил Фактора блог Нормирование и «Anima Notitia Copia» сегодня , как это аккуратно суммирует аргументы в пользу и против нормализации определенных типов данных. Запустите следующий запрос для экземпляра SQL и посмотрите, согласны ли вы.
SELECT * FROM sys.syslanguages
SQL позволяет создавать реляционные базы данных. Однако, даже если он пахнет плохо, нельзя совершать ужасно нереляционные вещи с базой данных SQL, если это необходимо, и вы можете заметить разницу; не только это, но и только если вы знаете о рисках и последствиях.
Вы упомянули, что файл XML содержит «дополнительную информацию о данных». Есть ли польза в моделировании этих метаданных в реляционной базе данных, возможно, для целей допроса? Если это так, может быть случай для извлечения соответствующих данных и сохранения оставшегося XML в качестве типа документа XML.
... если вам передали строку JSON или XML и требуется сохранить ее в базе данных, то все, что вам нужно сделать, - это спросить себя в роли Anima notitia copia (Soul of the database): интерес к содержанию этого элемента информации? Если ответ «Нет!» Или «Неквам! Тогда это атомная ценность, какой бы сложной она ни была.
Аргумент Фила Фактора заключается в том, что нереляционные поля в реляционной базе данных вполне приемлемы, если поле рассматривается как атомарное, то есть оно не изменяется, или когда изменяется целое поле, а не его составная часть. Естественным расширением этого является то, что если ваш документ содержит элементы, которые вас интересуют, может быть целесообразно применить реляционную модель к этим элементам.
Относящийся к вопросу, но в первую очередь к фразеологии, последняя цитата Фила:
Естественно, я никогда сознательно не создавал базу данных, на которую бы нахмурился Кодд, но по краям есть интерфейсы и потоки данных, которые я написал, которые вызвали его неприязнь среди фундаменталистов нормализации.
Разве мы не все!