我有一个表TreeStructures,它包含树的结构。这个表的列有id,name,left,right和一个外键TreeId'到表格树有一个'id'列,还有一些关于树的信息。
现在,如果'id'是表树中唯一的列,那么删除表树并让外键TreeId只是一列是否会好?
创建一个新树意味着我必须检查TreeId的最高值,然后将其递增1以获得新值。这里存在并发的危险......
无论如何,这种情况下的最佳做法是什么?
答案 0 :(得分:1)
我认为将来使用 - 离开树桌。
也许你将来需要一个树名?
它可以像你说的那样工作,但不建议这样做。
另外 - 如果桌子变得非常大......那将是非常低效的。
答案 1 :(得分:1)
Tree表是一个独特的实体,即使表是“all key”,也应该拥有自己的表。稍后可能会有或可能没有其他列,但省略此表会使数据库非规范化,这始终是数据完整性的潜在危险
请注意,您关注的并发问题在大多数现代数据库中都是明智的(对于ID列使用自动递增的标识类型),如果没有Tree表,实际情况会更糟,因为你会必须在整个 leaf 表
上进行MAX(ID)扫描答案 2 :(得分:0)
没有一个坚实的例子很难说,但听起来很合理。我只是不确定当前模式中的name
是什么,以及为什么它与TreeStructure而不是Tree有关。
(就个人而言,我总是非常高兴将嵌套的结构信息混合到数据表中。)