如何构建模型以正确有效地表示关系数据库上的树状数据?

Man*_*ero 13 tree erd database-design relational-theory

基于Traversing tree-like data in arelational database using SQL问题,我想知道如何在考虑物理含义的情况下经常使用的方式描述关系数据库上的树状数据?

我假设 RDBMS 除了常规 SQL ANSI 或常见可用功能之外没有特殊功能来处理它。

毫无疑问,我总是对 MySQL 和 PostgreSQL 以及最终的 SQLite 感兴趣。

Pat*_*ick 8

我相信他正在寻找像二叉树这样的东西。我只会包含三个与同一张表的唯一 ID 相关联的键,一个用于左侧,一个用于右孩子,另一个用于父级。

即-(非常多的伪代码)

TABLE tree
int         id                  autoinc
varchar(16) data_you_care_about
int         parent_id
int         left_child_id
int         right_child_id

FOREIGN KEY parent_id = tree.id
FOREIGN KEY left_child_id = tree.id
FOREIGN KEY right_child_id = tree.id
Run Code Online (Sandbox Code Playgroud)


REW*_*REW 6

如果每个节点确实是相同的数据实体,那么范式仍然表示每个实体一个表,以及一个用于树遍历的链接列,其中每个节点只链接一次。

对于在树中的多个点链接的实体,将使用单独的链接表或多个不同的值列。