我试图在表中建模树关系。例如,有“类别”,类别本身可以在父类别中。我是否应该使用外键在SQL中显示树关系
我的模式是:
id int PRIMARY KEY,
parent_id int,
name
我的问题是,我应该标记PARENT_ID列作为外键?外来意味着“外部”而不是自我参照。为此目的是否有不同类型的钥匙?
我的问题类似于: Self-referencing constraint in MS SQL,但我问了一个不同的问题,级联不成问题。
我试图在表中建模树关系。例如,有“类别”,类别本身可以在父类别中。我是否应该使用外键在SQL中显示树关系
我的模式是:
id int PRIMARY KEY,
parent_id int,
name
我的问题是,我应该标记PARENT_ID列作为外键?外来意味着“外部”而不是自我参照。为此目的是否有不同类型的钥匙?
我的问题类似于: Self-referencing constraint in MS SQL,但我问了一个不同的问题,级联不成问题。
自引用外键一直发生。例如。一个员工可能会有另一个“员工”作为他的经理,所以manager_id将是同一个表中employee_id字段的外键。
外键是用于表示分层数据的父节点的天然人选,虽然他们不是专门用于该:)
我不相信这是另一种类型的关键...外国关键在这种情况下会好的..它会执行对parent_id的约束,以确保它引用了一个有效的ID
如果你有很深层次的嵌套,可能不容易正确地选出特定的所有后代节点,因为大多数DB不能很好地处理递归。另一种方法是使用所谓的“嵌套集模型”来表示关系。一个伟大的文章,请访问:
在同一个表中的两列之间的外键映射的树结构到关系数据库时,经常被使用。但是,它不是唯一可用的方法。
请参阅本文替代reperesentations:Storing Hierarchical Data in a Database
这里是另一个SO张贴,你可能已经错过:http://stackoverflow.com/questions/935098/database-structure-for-tree-data-structure – akf 2009-06-26 21:32:47