发布于 2008-09-17 13:46:37
使用外键的理由:
不使用外国钥匙的理由:
我想(我不确定!)大多数已建立的数据库提供了一种方法来指定未强制执行的外键,并且只是一些元数据。由于非强制执行消除了不使用FKs的所有原因,如果第二节中的任何理由适用,您可能应该走这条路线。
发布于 2008-09-17 16:55:17
这是一个成长的问题。如果在你的教育或职业生涯的某个地方,你花时间喂养和照顾数据库(或与有才华的人密切合作),那么实体和关系的基本原则在你的思维过程中就根深蒂固了。这些基本原理包括如何/何时/为什么在数据库中指定密钥(主键、外键和可能的备用键)。这是第二天性。
但是,如果您过去在与RDBMS相关的工作中没有这样彻底或积极的经验,那么您很可能没有接触过这样的信息。或者你的过去可能包括沉浸在一个声势浩大的反数据库环境中(例如,“那些DBA是白痴--我们很少,我们选择了很少的java/c#代码吊带器就能拯救这一天”),在这种情况下,你可能会强烈反对某个白痴说FKs (以及他们可能暗示的约束)中那些神秘的废话--如果你愿意听的话。
大多数人从小就被教导刷牙是很重要的。没有它你能过得去吗?当然,但在某种程度上,你的牙齿会比如果你每次饭后刷牙的话都少。如果妈妈和爸爸足够负责数据库的设计和口腔卫生,我们就不会有这样的谈话了。:-)
发布于 2008-09-17 13:38:10
我相信有很多应用程序可以让你摆脱它,但这不是最好的主意。您不能总是依靠应用程序来正确地管理数据库,坦率地说,管理数据库不应该是您的应用程序非常关心的问题。
如果使用的是关系数据库,那么似乎应该在其中定义一些关系。不幸的是,这种态度(您不需要外键)似乎被许多应用程序开发人员所接受,他们不愿为诸如数据完整性之类的愚蠢事情而烦恼(但需要这样做,因为他们的公司没有专门的数据库开发人员)。通常,在按这些类型组合的数据库中,只有主键才是幸运的;)
https://stackoverflow.com/questions/83147
复制相似问题