我应该使用外键在SQL中显示树关系

Che*_*het 3 sql database database-design foreign-keys foreign-key-relationship

我试图在表格中建模树关系.例如,有"类别",类别本身可以在父类别中.

我的架构是:

id int PRIMARY KEY,
parent_id int,
name
Run Code Online (Sandbox Code Playgroud)

我的问题是,我应该将parent_id列标记为外键吗?外国意味着"外部"而不是自我参照.是否有不同类型的钥匙用于此目的?

我的问题类似于: MS SQL中的自引用约束,但我问的是另一个问题,级联不是问题.

Jer*_*yth 10

自引用外键始终发生.例如,员工可能有另一个"员工"作为他的经理,因此manager_id将是同一个表中employee_id字段的外键.

外键是在分层数据中表示父节点的自然候选者,尽管它们不是专门用于那个:)


cli*_*ers 6

如果你有很深的嵌套级别,那么可能不容易选择性地选择特定节点的所有后代,因为大多数DB都不能很好地处理递归.另一种方法是使用所谓的"嵌套集模型"来表示关系.这里有一篇很棒的文章:

http://www.intelligententerprise.com/001020/celko.jhtml