【发布时间】:2016-02-14 04:43:50
【问题描述】:
我必须设计一个具有父子关系(类别和子类别)的表 是在子表中有两个以 parent_id 作为外键的表,还是在列上有一个以 parent_id 作为外键的表。
【问题讨论】:
-
我的选择是将两者都放在一张桌子上。没有任何父母的记录应该包含 -1 否则父母 id
标签: mysql sql optimization query-optimization
我必须设计一个具有父子关系(类别和子类别)的表 是在子表中有两个以 parent_id 作为外键的表,还是在列上有一个以 parent_id 作为外键的表。
【问题讨论】:
标签: mysql sql optimization query-optimization
IF主类和子类相同架构,一张表。
IF 他们有不同的模式,两个表。 “做错了”的一个例子是论坛(或电子邮件)架构试图将 Threads 和 Messages 放入同一个表中。
“顶级”类别的parent_id 可以等于0 或NULL。子类别应将parent_id 设置为直接父级的id。请注意,这提供了类别的任意嵌套(在树中,无循环等)。
【讨论】:
您可以尝试使用一个表,只需为父类别添加一列“has_child”,如果它有子类别,则值为 1,如果没有,则为 0,然后对于子类别,您可以有一个值 > 0 的“parent_id”如果它有一个父母,如果没有,只是 0
【讨论】:
has_child 很少需要 - 只需执行“自连接”即可发现是否有孩子。