2008-10-29 23 views

回答

26

是的。确保您没有孤儿(没有父母的条目),并根据使用情况,如果您定义级联删除,则在删除父母时,其所有孩子也将被删除。

与其他外键一样,缺点是轻微的性能下降。

+4

“无子孤儿”? ;-) – Yarik 2008-11-15 20:23:06

4

是的,你应该把它作为一个外键。

好处将是一个更好的冗余数据模型。

13

是的,你应该。如果在数据库关系中有一个属性作为同一数据库中另一个关系的主键,则应将其设置为FK。

您将享受advantages associated to foreign keys

  • 假设关系的合理设计,外键约束变得更加困难了程序员不一致性引入数据库。
  • 集中数据库服务器对这些约束的检查使得不必在应用程序端执行这些检查。这消除了不同的应用程序可能不以相同的方式检查约束的可能性。
  • 使用级联更新和删除可以简化应用程序代码。
  • 正确设计的外键规则有助于记录表之间的关系。

缺点:

  • 如果定义外键,有时是很难进行批量操作。
  • 也许它意味着更多的磁盘使用和轻微的性能影响。
5

是的,你应该。

优势(如任何外键):

  • 确保PARENT_ID引用表中的一个真正的行
  • 防止有孩子,或确保删除级联删除父的意外删除孩子们也
  • 提供信息的优化器可以使用

我想不出任何真正的缺点。