Сьогодні я зробив закладки у блозі Філа Фактора « Нормалізація» та «Anima notitia copia», оскільки це акуратно підсумовує справу за та проти нормалізації певних типів даних. Виконайте наступний запит на екземплярі SQL і подивіться, чи згодні ви.
SELECT * FROM sys.syslanguages
SQL дозволяє створювати реляційні бази даних. Однак, навіть якщо це погано пахне, це не злочин робити жахливо нереляційні речі з базою даних SQL так довго, як це необхідно, і ви можете сказати різницю; не тільки це, але і лише якщо ви знаєте про ризики та наслідки.
Ви згадали, що файл XML містить "додаткову інформацію про дані". Чи є якась користь у моделюванні цих метаданих у реляційній базі даних, можливо для цілей допиту? Якщо це так, може бути випадок вилучення відповідних даних та збереження решти XML як тип документа XML.
... якщо вам передано рядок JSON або XML, і вам потрібно зберегти його в базі даних, то все, що вам потрібно зробити, - це запитати себе у вашій ролі Anima notitia copia (Душа бази даних) "чи є у мене зацікавленість у змісті цього елемента інформації? '. Якщо відповідь - «Ні!» Або «Некеквам! Тоді це атомне значення, яким би складним воно не було.
Аргумент Філа Фактора полягає в тому, що нереляційні поля в реляційній базі даних є цілком прийнятними, якщо поле трактується як атомне, тобто воно не змінюється, або коли воно змінюється все поле, а не складова його частина. Природним розширенням цього є те, що якщо ваш документ містить елементи, які вас цікавлять, можливо, застосувати реляційну модель до цих елементів може бути корисно.
Остання відповідь до питання, але насамперед для фразеології, остання цитата Філа:
Природно, я ніколи свідомо не створював базу даних, на яку Кодд нахмурився, але навколо країв - це інтерфейси та канали даних, про які я писав, які спричинили пристрасть до фундаменталістів нормування.
Хіба ми не всі!