如何在oracle中构建分层数据
How to structure hierarchical data in oracle
我需要使用关系数据库(特别是 oracle)存储分层数据。
到目前为止,我使用的唯一实现是邻接列表。但是这次我有一些要求拒绝使用这个结构。
要求是,(1) 每个节点可以在不同的层次结构中使用,并且 (2) 将节点连接到不同层次结构的边可以具有不同的权重。
此处给出了 2 个层次结构的示例:
所以我需要有关如何解决该问题的建议,或者如果您有解决方案,请指出明显的解决方案。
像这样创建关联 table:
CREATE TABLE ASSOC (
PARENT_ID NUMBER,
CHILD_ID NUMBER,
WEIGHT NUMBER,
HIERARCHY_ID VARCHAR2(100)); -- necessary do distinguish, which hierarchy connection belongs to
和数据
PARENT_ID CHILD_ID WEIGHT HIERARCHY_ID
----------+---------+-------+-------------
1 | 2 | 50 | A
1 | 5 | 50 | A
2 | 3 | 70 | A
2 | 4 | 30 | A
10 | 2 | 65 | B
10 | 5 | 35 | B
...
我需要使用关系数据库(特别是 oracle)存储分层数据。 到目前为止,我使用的唯一实现是邻接列表。但是这次我有一些要求拒绝使用这个结构。
要求是,(1) 每个节点可以在不同的层次结构中使用,并且 (2) 将节点连接到不同层次结构的边可以具有不同的权重。
此处给出了 2 个层次结构的示例:
所以我需要有关如何解决该问题的建议,或者如果您有解决方案,请指出明显的解决方案。
像这样创建关联 table:
CREATE TABLE ASSOC (
PARENT_ID NUMBER,
CHILD_ID NUMBER,
WEIGHT NUMBER,
HIERARCHY_ID VARCHAR2(100)); -- necessary do distinguish, which hierarchy connection belongs to
和数据
PARENT_ID CHILD_ID WEIGHT HIERARCHY_ID
----------+---------+-------+-------------
1 | 2 | 50 | A
1 | 5 | 50 | A
2 | 3 | 70 | A
2 | 4 | 30 | A
10 | 2 | 65 | B
10 | 5 | 35 | B
...