2

我正在寻找Python代码,可以采取表格数据,并确定它在哪里(如果有的话)和显示任何功能依赖关系,等等用于确定哪些正常形式表格数据在Python代码

+0

请解释你在问什么。也许包括例子。 – Brian 2010-01-28 20:01:36

+0

我认为他在谈论数据库规范化[http://en.wikipedia.org/wiki/Database_normalization] – 2010-01-28 20:25:28

回答

0

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

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

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

+0

我知道正常的形式是什么,我只是想知道在Python中是否有预先存在的代码我写我自己的。 – 2010-01-30 03:24:37

+0

@詹姆斯陶伯:“我知道什么是正常的形式......”并不清楚你的问题。对不起所有的冗余。但是,这个问题似乎并不知情,因为它通常是通过手工分析模式而不是自动磨削数据来完成的。如果您已经知道,那么您意识到对于大型数据集,算法可能难以控制。 – 2010-01-30 13:23:46