我想在数据库中找到规范的封面或最少数量的功能依赖。
例如:
如果你有:表=(A,B,C)< - 这些是列:A,B,C
依赖项:
A → BC
B → C
A → B
AB → C
规范封面(或最小数量的依赖关系)是:
A → B
B → C
是否有可以实现此目的的程序?如果没有,任何代码/伪代码,以帮助我写一个将不胜感激。喜欢Python或Java。
答案 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来自 部分顺序,以你的答案结束。