Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 树:持久化时如何识别/标记根对象?_Java_Sql_Tree_Rdbms - Fatal编程技术网

Java 树:持久化时如何识别/标记根对象?

Java 树:持久化时如何识别/标记根对象?,java,sql,tree,rdbms,Java,Sql,Tree,Rdbms,如何持久化自定义树结构的根节点,使它们可以通过简单的SELECT检索 伪代码 class Node { Long id; String label; Node parent; List<Node> children; } 您可以使用邻接列表: node parent 1 NULL 2 1 3 1 4 2 5 NULL 6 5 根节点可以通过找到,其中父节点为NULL如果每个子节点最多有

如何持久化自定义树结构的根节点,使它们可以通过简单的
SELECT
检索

伪代码

class Node {
    Long id;
    String label;
    Node parent;
    List<Node> children;
}

您可以使用邻接列表:

node   parent
1      NULL
2      1
3      1
4      2
5      NULL
6      5

根节点可以通过
找到,其中父节点为NULL

如果每个子节点最多有一个父节点,则无需在单独的表中对关系建模。此外,为了使加载树的速度更快,同时降低更改根的速度,请在每一行中存储根节点的ID。这允许您在一个快速查询中加载树的所有节点,并在客户端上构建树

CREATE TABLE NODES(
    ID          INTEGER NOT NULL UNIQUE,
    ROOT_ID     INTEGER NOT NULL,
    PARENT_ID   INTEGER,
    LABEL       VARCHAR(255)
);

非常模糊的问题,佩西斯特先生在哪里?你在说什么样的“选择”?@SanjayT.Sharma请参考标签。你使用的是什么数据库和版本?这是一个理论问题。不过,我使用的是最新的MySQL.Removed root标记,因为它指的是Unix systems.Great。这证实了我的想法:)。我看到树实现对于根节点没有特殊情况。我只需要确定它们是如何编码的。“这允许您在一个快速查询中加载树的所有节点,并在客户端上构建树。”-非常酷的建议。我没想到。
CREATE TABLE NODES(
    ID          INTEGER NOT NULL UNIQUE,
    ROOT_ID     INTEGER NOT NULL,
    PARENT_ID   INTEGER,
    LABEL       VARCHAR(255)
);