Python-код для определения того, какие табличные данные нормальной формы находятся в - PullRequest
2 голосов
/ 28 января 2010

Я ищу код Python, который может принимать табличные данные и определять, в каких нормальных формах они (если есть), и отображать любые функциональные зависимости и т. Д.

Ответы [ 3 ]

2 голосов
/ 29 января 2010

Есть логические тесты для "нормализации". Тем не менее, они не тривиальные упражнения в программировании; это отношения в метаданных, которые налагаются на данные. Они требуют «мышления».

1NF - без повторяющихся групп. Как определить «повторяющуюся группу»? Это будет структура массива, наложенная на столбцы таблицы. Как это сделать? SQL не предоставляет механизма, поэтому вам придется посмотреть на имена столбцов, чтобы проверить «шаблон». COL_1, COL_2, COL_3, например.

1NF - согласованное расположение строк. Duh. SQL навязывает это по самой природе определения таблицы.

2NF - данные в строке зависят от ключа. Вы должны сделать процедуру примерно так.

For each non-key column:
   Query distinct pairs (Key and the non-key column)
   Do all non-key values depend in a consistent way on a key value?
   Can you build a simple dict mapping non-key to key?

Полный алгоритм здесь: http://en.wikipedia.org/wiki/Relational_model#Set-theoretic_formulation

3NF - данные в строке зависят ТОЛЬКО от ключа. Это хуже, потому что вы должны сравнить все комбинации неключевых столбцов со всеми комбинациями неключевых столбцов, чтобы убедиться, что между значениями нет неключевых зависимостей.

4NF и 5NF смущают меня, поэтому я остановлюсь здесь.

Я хочу сказать, что теоретически вы можете это сделать. На практике существует множество сложных перестановок данных, чтобы утверждать, что нормальные отношения форм действительно выполняются.

Гораздо, намного проще иметь гипотезу о конкретном нарушении и исследовать только эту проблему с некоторыми запросами SQL и некоторым мышлением.

Формальная математика здесь:

http://en.wikipedia.org/wiki/Relational_model

0 голосов
/ 15 января 2011

Не код Python, но на первый взгляд эта статья выглядит полезной.

Автоматическая нормализация базы данных и генерация первичного ключа

0 голосов
/ 28 января 2010

Я думаю, что этот код будет действительно трудно реализовать.

Посмотрите на этот вопрос об алгоритмах нормализации баз данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...