在建模中,相同标签的实例(即Student)具有相同的属性集。但是,同一标签的实例具有不同的属性集是否正常。例如,我有Product node:
(p:Product)-[:HAS_ATTRIBUTE]->(a:Attributes)
Product的不同实例会导致不同的Attributes实例。在这种情况下,不同的Attributes节点具有非常不同的属性。
这种建模是否正常?不同类别的产品可以具有非常不同的属性。
答案 0 :(得分:1)
拥有不同的属性非常有用。例如,我有一个带有单核苷酸多态性(SNP)节点的Y-DNA项目。有些是知道的haplotree,有些则不是。所以,我将属性InHGTree设置为Y或空白以反映这一点。现在我可以使用haplotree分支更容易地创建查询。
BTW,关系也可以具有相同值的不同属性。个体的DNA结果存在于“试剂盒”中。该试剂盒与众多SNP有关。您希望能够确定该试剂盒对SNP是阳性还是阴性。最合乎逻辑的是将这个事实放在试剂盒和SNP之间的关系中。答案 1 :(得分:0)
它当然是允许的,因为在关系数据库中没有表格模式来强制执行同质属性。
虽然这提供了很大的灵活性,但它可能会带来复杂性。如果需要,它可以由数据库的建模者和管理员提供任何指导或实施限制。
虽然这通常采用约定的形式,但APOC触发器(或者如果你想自己实现内核扩展)可以用来强制执行给定标签的节点的某些属性。