程序以查找规范封面或最小数量的功能依赖性

时间:2010-05-12 21:15:07

标签: java python database database-design

我想在数据库中找到规范的封面或最少数量的功能依赖。

例如:

如果你有:表=(A,B,C)< - 这些是列:A,B,C

依赖项:

A → BC

B → C

A → B

AB → C

规范封面(或最小数量的依赖关系)是:

A → B

B → C

是否有可以实现此目的的程序?如果没有,任何代码/伪代码,以帮助我写一个将不胜感激。喜欢Python或Java。

2 个答案:

答案 0 :(得分:0)

查看您的依赖项,看起来您可以在A, B, C上将其视为部分订单。你想要的听起来很像(但不完全)topological sort(有向无环图上的偏序排序)。

答案 1 :(得分:0)

在我看来你可以重构任何形式的规则:

   A ->  BC

 A -> B

  A -> C

以及表格的任何规则:

  AB -> C

  A -> C

  B -> C

在重构之后,你应该有一套单例对的规则:

  X -> Y

(可能会立即删除大量冗余副本)。 这形成了rlotun似乎指的部分顺序。

到目前为止的示例中,您最终得到:

 A -> B
 B -> C
 A -> C

如果您随后最小化部分订单(例如,删除任何冗余链接, 任何关于部分的数据结构书应该告诉你如何做到这一点),你会的 有一个最小的偏序,我认为这是你想要的答案。 最小化示例中的偏序,您将删除A - > C来自 部分顺序,以你的答案结束。