我想在mysql数据库中保存和恢复树形结构?
我尝试通过添加“parent_id”字段来引用父行的 id 来保存它。 父级,但它可以互相引用,这是不合逻辑的, 所以我想防止两行互相引用parent_id。
主题比所描述的问题有点兄弟,所以我将从这个开始,然后回答。 我知道在数据库中存储树的一些方法:
root_id:level_id:another_level_id:parent_id:node_id
所以问题是关于第一种情况,在这种情况下,我们有一个循环。请注意,只有一个节点引用其他节点很容易捕获,如果涉及 10 个节点怎么办?
答案可能是,对于任何触及parent_id列的更新,我们需要触发器来检查当前id是否未被任何节点用作父节点。换句话说 - 在获取根节点之前,检查当前 id 是否不在任何地方。
作为旁注 - 也许删除也应该以某种方式解决?我的意思是 - 也许我们需要修复结构,或者确保我们删除所有子项?
以上两者都可以通过应用程序完成,但由于问题是关于数据库的,所以我的建议坚持数据库。