具有相同标签的节点具有不同属性是否正常?

时间:2018-02-23 21:44:14

标签: neo4j

在建模中,相同标签的实例(即Student)具有相同的属性集。但是,同一标签的实例具有不同的属性集是否正常。例如,我有Product node:

(p:Product)-[:HAS_ATTRIBUTE]->(a:Attributes)

Product的不同实例会导致不同的Attributes实例。在这种情况下,不同的Attributes节点具有非常不同的属性。

这种建模是否正常?不同类别的产品可以具有非常不同的属性。

2 个答案:

答案 0 :(得分:1)

拥有不同的属性非常有用。例如,我有一个带有单核苷酸多态性(SNP)节点的Y-DNA项目。有些是知道的haplotree,有些则不是。所以,我将属性InHGTree设置为Y或空白以反映这一点。现在我可以使用haplotree分支更容易地创建查询。

BTW,关系也可以具有相同值的不同属性。个体的DNA结果存在于“试剂盒”中。该试剂盒与众多SNP有关。您希望能够确定该试剂盒对SNP是阳性还是阴性。最合乎逻辑的是将这个事实放在试剂盒和SNP之间的关系中。

答案 1 :(得分:0)

它当然是允许的,因为在关系数据库中没有表格模式来强制执行同质属性。

虽然这提供了很大的灵活性,但它可能会带来复杂性。如果需要,它可以由数据库的建模者和管理员提供任何指导或实施限制。

虽然这通常采用约定的形式,但APOC触发器(或者如果你想自己实现内核扩展)可以用来强制执行给定标签的节点的某些属性。