我在考虑如何在数据结构中表示函数依赖关系。代表函数依赖关系的数据结构
功能降级(数据库的关系模式)将一组属性映射到一组属性。例如。在{A,B} - > {C,d}的属性C和d是有功能的依赖于A和B.
我能想到的四种可能的情况这里:
- {A} - > {B}(两个单一属性)
- {A,B} - > {C}(一组属性意味着一个属性)
- {A} - > {B,C}属性集合)
- {A,B} - > {C,D}(一组属性意味着一组属性)
我的第一种方法是简单的两个成员等级:
class attribute
{
string name;
set<attribute*> dependent_on;
}
这与像(1),但与(2)函数依赖工作 - (4) - 我想。 实际上,我可以分解(3),但我无法用这样的类来表示(2)和(4)。
我要保持的信息是c 和 d是有功能的依赖于和 B,所以我将不得不使一个类似attributegroup
其中一组属性被映射到一组属性。例如: -
class attributegroup
{
set<attribute*> members;
set<attribute*> dependent_on;
}
因此,实际上我可以简单地代表一个单独的属性为attributegroup
只有一个成员。但我不认为这是做这件事的最好方法。
任何帮助/想法赞赏:)
对于您建议的方法,您有哪些具体问题? –
我没有特别的问题。我只是觉得可能会有更好的一个。通过我的方法,这将产生一个'set',这就像@DieterLücking提供的方法一样,它实现了必须迭代所有'attributegroup'的算法。 –
好的 - 下一个问题:我们要做什么而不必检查所有'atributegroup's?我们需要知道后面想要实现的算法,以便说明启用它们的数据结构应该是什么样子。 –