为什么我们可以加入非约束?

时间:2011-06-16 18:52:39

标签: sql

我正在使用设计不佳的数据库。大多数表都有PK,但FK不存在。这使得难以可视化表之间的关系。这让我想知道,为什么SQL让我们加入没有约束的表?如果我要在表B中使用EmployeeId加入表A,那么膝盖反射是不是应该设置FK?

6 个答案:

答案 0 :(得分:3)

因为约束是可选

我同意不使用约束通常是一个坏主意,但一般来说, 没有来创建有效数据库设计的约束。

某些应用程序要求不使用约束,例如硬删除仍然具有审计跟踪表的“当前”记录(某些报告将加入)。

在这种情况下,无法加入会妨碍灵活性和使用数据库的能力。

这当然不考虑许多数据库是由不了解或关心参照完整性的人(业务或开发人员)创建的。

答案 1 :(得分:0)

在某些情况下,你可能会加入日期等,你不想设置Fk或者它可能是不可能的。如果你想要定义fk,那么你的决定是什么

答案 2 :(得分:0)

SQL的哲学是编写查询的人只需知道表和列;他们不需要知道任何索引或表关系。数据库应该足够聪明,可以找出如何有效地执行查询。

对于即席查询,这非常好。

答案 3 :(得分:0)

外键影响性能,因为每次插入记录时都需要确保不违反约束。在高性能系统中,数据库通常在开发和QA环境中具有FK,但在生产中不能加速插入。如果执行大量插入并且数据库表很大,性能差异可能很大。

这只是SQL允许您在没有约束的情况下加入的众多原因之一。

答案 4 :(得分:0)

您不能直接加入相关表格

  • 数字表
  • 交叉加入
  • 表到祖父母,绕过父表
  • ...

答案 5 :(得分:0)

GASP!你甚至可以加入 nothing!