我需要在项目中实现动态层次结构。一种可能的解决方案是使用像Neo4j这样的Graph数据库NoSQL解决方案。我在RDBMS中的图形实现中设计的内容。 在这个解决方案中,我设计了一个与自身具有多对多关系的表。 给出here的一个例子。 我有一个表( TABLE_A )定义了不同的实体,另一个表 TABLE_B 定义了实体的类型,TABLE_B与它有多对多关系定义了关系不同实体类型之间。这存储在 JoinTable,TABLE_C 中。类似地,TABLE_A与其自身具有多对多关系,以定义TABLE_C中定义的不同关系的实例。 在Java中,我只使用了两个类来实现这个结构。
现在,在我的案例中,这种多对多的关系并不总是多对多的关系。 有时候它是一对一的,而且是一对一的。
首先,No SQL Graph DB比Relational DB更适合我的要求,因为我计划测试的数据将是数十万条记录。
其次,如果RDBMS解决方案更好,那么有没有办法在连接表 TABLE_C 中包含一个属性,用于定义关系的多重性,即它是否为&#39 ;一对多,多对多或一对一关系?
答案 0 :(得分:0)
是的,你可以在两个节点之间的每个关系上放置任意数量的属性,从无到有。而且你也可以在关系上有不同的属性,也可以有不同的关系类型。
树,是图数据库的自然结构。它可以管理任意深度和宽度的树。
您可以快速插入树状数据,请参阅my example here。
使用可变长度路径可以轻松表示树中的数据。
Rik在使用这样的层次结构管理零件清单和价格方面做了good blog post。