【问题标题】:Determining all candidate key given a universal set of attributes and a list of functional dependencies [closed]在给定一组通用属性和功能依赖项列表的情况下确定所有候选键[关闭]
【发布时间】:2017-01-06 00:55:31
【问题描述】:

现在我已经在 java 中实现了以下算法来确定所有可能的候选键,这些候选键工作正常。链接如下:-

http://shubhamshoundic.blogspot.com/2012/08/an-algorithm-to-find-all-possible.html

但在最坏的情况下,即如果所有属性都存在于 FD 的两侧(如上面链接中定义的情况 M),可以处理的 FD 数量减少到 12 或 13 .

原因是java中的堆空间有限。抛出以下错误:-

OutOfMemoryError

我的请求是帮助我实现这样的算法,该算法将具有更简单的复杂性(现在它是指数级的)将处理的 FD 数量提高到至少 20 个

我应该尝试使用多处理来计算它,还是应该转向另一种语言而不是 java。

【问题讨论】:

    标签: java database algorithm normalization candidate-key


    【解决方案1】:

    从 1978 年就知道,并且在所有关于数据库的好书中都有介绍,找到所有密钥的问题需要一个在最坏情况下具有指数复杂度的算法(例如,参见:Lucchesi, C. and Osborn, S. (1978). Candidate keys for relations. Journal of Computer and System Sciences, 17(2):270–280)。此外,查找属性是否为素数的问题是NP Complete

    这是因为可能的键数本身与属性数成指数关系,或与函数依赖数成指数关系。

    因此,不可能找到具有多个属性或函数依赖关系的算法多项式。

    【讨论】:

    • 谢谢先生。我的意思是我不应该这样想。多处理并行工作会在这里提供帮助吗?
    猜你喜欢
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 2016-07-07
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    相关资源
    最近更新 更多