之前没感觉过这个规律,但是好像是二叉树或者任意树(每个节点可以有很多子节点但子节点不能指向任何父节点),那么这个数据结构可以表示为数据库中的一张表,每一行都有一个自己的 ID 和一个parentID
指向父节点的 ID。
这实际上是经典的员工 - 经理图:一个老板可以在他手下有很多人......每个人都可以n
在他下面有人,等等。这是一个树形结构,在数据库书籍中作为一个常见示例表示为单表Employee
。
之前没感觉过这个规律,但是好像是二叉树或者任意树(每个节点可以有很多子节点但子节点不能指向任何父节点),那么这个数据结构可以表示为数据库中的一张表,每一行都有一个自己的 ID 和一个parentID
指向父节点的 ID。
这实际上是经典的员工 - 经理图:一个老板可以在他手下有很多人......每个人都可以n
在他下面有人,等等。这是一个树形结构,在数据库书籍中作为一个常见示例表示为单表Employee
。
您的问题的答案是“是”。
西蒙关于你的树变成循环图的警告也是正确的。
关于“您必须手动确保不会发生这种情况,即 DBMS 不会自动为您执行此操作,因为您不会破坏任何完整性或引用规则。”的所有内容都是错误的。
只要您只考虑 SQL 系统,这句话和相应的评论都是正确的。
存在可以以纯声明方式为您执行此操作的系统,即无需您编写任何*任何*代码。该系统是 SIRA_PRISE ( http://shark.armchair.mb.ca/~erwin )。
是的,您可以通过自引用表来表示层次结构。请注意以下情况:
Employee Supervisor
1 2
2 1
对,那是正确的。这是一个很好的参考
请注意,您通常需要一个循环才能展开树(例如找到传递关系)