Недавно я узнал о нормализации и понял, насколько это важно при реализации новой схемы.
Как я могу проверить, соответствует ли моя база данных 2NF или 3NF?
Ручной просмотр - верный вариант, но я ищу здесь автоматический инструмент.
Я не ищу инструмент «укажи и щелкни», а скорее что-то, что выделит возможные оптимизации, чтобы сделать таблицу 3NF-совместимой. Я предполагаю, что он может использовать статистику, основанную на хороших выборочных данных и / или семантическом анализе имен столбцов.
Ответы:
Нормализация абсолютно используется в реальном мире ... и, надеюсь, вы знаете, что 3NF - это только третье из ... чего сейчас, 8? Но 3NF должна быть легкой целью.
Однако ... Рискну сказать, что такого инструмента не может быть.
Технически, нормализация является атрибутом каждой таблицы. В пределах данной базы данных разные таблицы могут иметь разные уровни нормализации.
Каждая таблица представляет факты ... факты о случаях определенного типа вещей (человек, счет, заказ, отгрузка, предмет, местоположение), включая, иногда, внешние ключи, которые приводят вас к другим видам фактов об этой вещи.
Нормализация связана с тем, насколько точно и эффективно представлены факты в таблицах, а также со способностью дизайна таблицы предотвращать неоднозначные и избыточные шаблоны данных.
Таким образом, требуется понимание фактических фактов ... что выходит за рамки автоматизированных инструментов.
В мире, где все преподаватели преподают все предметы, и каждый студент может взять любую комбинацию, но не более одного курса по каждому предмету от каждого преподавателя, можно сказать, что эта таблица находится в 3NF. В реальном мире претендовать на 3NF для этой таблицы абсурдно.
Чтобы понять, чего нет в 3NF, необходимо понять природу фактов, которые он представляет. В нашей реальности эта таблица не будет 3NF, так как (среди прочих причин) предмет и преподаватель связаны друг с другом способами, которые не имеют никакого отношения к ученику. Если у нас есть курсы, где преподаватели преподают предметы, хранящиеся в других местах нашей базы данных, почему бы нам скопировать здесь оба значения вместо внешнего ключа из другой таблицы, указывающего, что студент записан на курс? Если инструктора заменяют, мы должны изменить несколько записей в нескольких местах.
Чем более нормализована база данных, тем более она внутренне согласуется с реальным миром и с самим собой, и тем сложнее непреднамеренно не соответствовать действительности факты базы данных. Дизайн базы данных - это искусство, но это, безусловно, наука.
Несмотря на то, что я не вижу с глазу на глаз все, что он пишет, я бы порекомендовал книгу Криса Дейта « Проектирование баз данных и теория отношений: нормальные формы и все такое джаз», в которой подробно описывается основная теория реляционной модели.
источник
Частью использования формальных методов при разработке теории отношений была разработка процедур, которые можно было бы автоматизировать. Я почти уверен, что CJ Date выходит прямо и говорит об этом в своей книге «Введение в системы баз данных» .
Некоторые инструменты CASE, выпущенные в конце 1980-х или начале 1990-х годов, могли получить любую возможную схему 5NF либо путем анализа диаграмм ER, либо путем статистического анализа данных выборки.
Visio Enterprise Architect (я думаю) является относительно новым инструментом в этом направлении.
источник
Я очень сомневаюсь, что вы все еще нуждаетесь в ответе, но в случае, если вы или кто-то еще можете извлечь пользу, вы можете попробовать этот инструмент: http://uisacad5.uis.edu/cgi-bin/mcrem2/ database_design_tool.cgi
источник
Я думаю, что если бы вы могли написать инструмент для этого, для работы все равно потребовалось бы ручное рассмотрение. нормальные формы определяются на основе функциональных зависимостей, и они не могут быть определены из простого осмотра данных. Другими словами, это вопрос индуктивной, а не дедуктивной логики, чтобы определить, существует ли функциональная зависимость.
источник