外键可以为null或者空吗?

3

我的问题:

虽然我的数据库非常复杂,但我只包含carcustomer表。

所以我有一个包含相关细节和customer_id作为primary keycustomer表。

现在,在car表中,我想将一个foreign key链接到customer_id,这样在car表中就可以看到谁拥有什么。问题是如果car还没有被购买怎么办?

据我所见,外键必须有一个customer_id才能添加到表中。

我是否漏掉了某些东西或者说我完全错了? 我读到了关于链接表的一些内容?外键可以为空吗?


另外一件事,如何设置规则,例如:

“一个car只能有1个制造商 (它是一个与fk链接的单独的表)”? 我猜这是用php完成的,对吗?

如果有人想要数据库当前ERD的图片,我可以提供。


是的,FK可以为NULL。对于您的第二个问题“一辆汽车只能有一个制造商”...您可以使用“CHECK CONSTRAINT”。 - Rahul
1个回答

0

关于第一个问题,请查看此参考文献:外键可以为NULL和/或重复吗?

由于此参考文献,您的问题将被标记为重复。


关于第二个:
为了安全起见(尤其是最后一个),关系可以和应该由php和数据库两者处理。这保证了在有人“忘记”关系的情况下,您的数据不会被破坏。
它们只是表格列,保存另一个表格的ID。您可以使用“字符串”,“日期”或任何您认为可以将1个实体与另一个实体相关联的内容,但最安全和最快的选项就是使用另一个实体的ID。
为什么?

Primary_keys 必须唯一的,这可以确保您没有重复项(将它们视为上下文中的通用标识符),并且foreign_keys 必须属于另一个表中的另一个实体。您不能使用不属于其他表中任何实体的值,也不能删除其ID在其他某些实体中具有的实体 foreign_key 在其他实体中(在删除“父项”之前,您将不得不删除所有“子项”,否则它们将成为“孤儿”)

关于这些键的更多信息,请参见我上面发布的链接以及您可以找到的任何其他丰富的参考资料这里通过谷歌搜索


当然,你可以选择忽略它并不处理它,但这是一种可怕的做法,不被推荐。 如果我发现你这样做了,我会追着你不放...哈哈。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接