给定一个有向的非循环的图。为了高效的检索任何节点的所有孩子节点和父节点,怎样在关系数据库中去表示他。
Given a directed acyclic graph.How to represent it in the relational database for efficient retrieval of all the children nodes and all the parents of any node.(ex a->b here b is child of a and a is parent of b)
解法如下:
Table Nodes
(Node_ID INT,Node_Value INT)
Table Adjacents
(Node_ID, Adj_Node_ID INT,PathCost INT)
检索一个节点的所有孩子节点:
Select Adj_Node_ID from Adjacents Where Node_ID = SomeNodeID
检索一个节点的所有父节点
Select Node_ID from Adjacents Where Adj_Node_ID = SomeNodeID
This is a pretty general solution:
Table Nodes
(Node_ID INT, Node_Value X)
Table Adjacents
(Node_ID INT, Adj_Node_ID INT, PathCost INT)
Then to retrieve all children of a node:
Select Adj_Node_ID from Adjacents Where Node_ID=SomeNodeId
To retrieve the 'parents' of a node:
Select Node_ID from Adjacents Where Adj_Node_ID=SomeNodeId