【发布时间】:2012-12-17 02:19:37
【问题描述】:
我正在尝试在我的数据库中创建一个评论表,并将子 cmets 也存储在同一个表中。我会在名为“ParentId”的列上放置一个外键约束,该列将链接到 CommentId 列,该列是同一个表的主键。如果它是 Parent 评论,那么我会将 ParentId 设为 null。这是不好的做法吗?如果是这样,有什么更好的方法来解决这个问题。
【问题讨论】:
-
这不是坏习惯。请记住,许多数据库不能进行递归查询,和/或使用单个
create table创建这样的表结构。您可能必须创建它,然后对其进行更改以添加 FK。 -
@SteveWellens 为什么会这样? ParentID 为 null 的行是层次结构中的根节点。输入 ParentID 后,FK 会确保它连接到另一行。
-
嗯...不确定那个史蒂夫。 FK 约束还有其他用途,例如阻止您插入其他表中不存在的 id。在我的书中,一个可以为空的 Fk 就可以了。
-
@SteveWellens 看看这个SQL Fiddle。
-
@MikaelEriksson - 哇,它确实可以防止伪造的父键,但它允许空值。感谢您分享这些信息。
标签: c# asp.net sql entity-framework