用于确定哪些常规表单表格数据的Python代码

时间:2010-01-28 19:58:44

标签: python normalization relational-algebra database-normalization

我正在寻找可以获取表格数据的Python代码,并确定它所在的正常形式(如果有的话)并显示任何功能依赖性等。

3 个答案:

答案 0 :(得分:2)

有“正常化”的逻辑测试。但是,它们不是编程中的微不足道的练习;它们是强加于数据的元数据中的关系。他们需要“思考”。

1NF - 没有重复的群体。如何识别“重复组”?它将是一个强加在表的列上的数组结构。怎么做的? SQL没有提供机制,因此您必须查看列名以检查“模式”。例如,COL_1,COL_2,COL_3。

1NF - 行的一致布局。咄。 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

答案 1 :(得分:0)

我认为这段代码很难实现。

查看this question关于数据库的规范化算法。

答案 2 :(得分:0)

不是python代码,但乍一看这篇文章看起来很有用。

Automatic Database Normalization and Primary Key Generation