php - 外键可以为空或留空吗?

标签 php mysql sql database null

<分区>

我的问题:

虽然我的数据库相当复杂,但我只包含了 carcustomer 表。

所以我有一个包含相关详细信息的customer 表,customer_id 作为主键

现在,在 car 表中,我希望有一个 外键 链接到 customer_id,所以在 car table 我可以看到谁拥有什么。问题是还没有带来怎么办?

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

我是不是遗漏了什么或者偏离了轨道,我阅读了一些关于链接表的内容? 外键可以是null吗?


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

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

如果有人想要数据库当前 ERD 的图片,我有一张。

最佳答案

对于第一个问题,请查看此引用资料:Can a foreign key be NULL and/or duplicate?

您的问题将因此被标记为重复。


关于第二个:

出于安全目的(尤其是最后一)。这保证您的数据不会损坏,以防有人“忘记”这种关系。

它们只是表的列,其中包含另一个表的 ID。您可以使用“字符串”、“日期”或任何您想到的将一个实体与另一个实体相关联的方式,但最安全和更快的选择是只使用另一个实体的 ID。

为什么?

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

关于这些键的更多信息在 link 中我已经在上面发布了,您可以找到任何其他丰富的引用资料 heregoogling


当然,您可以忽略它,根本不处理它,但这是一种糟糕的做法,因此不推荐这样做。 如果我发现你这样做,我会追捕你...哈哈

关于php - 外键可以为空或留空吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23901466/

相关文章:

php - PDO 准备好的语句如何工作 “inside” ?

mysql - 如何从 Cloudry Foundry 中的 Sinatra 应用程序内部创建新的 MySQL 数据库?

php - Yii 框架创建时日期时间格式无效

php - 查找上周投票最高的问题。 (sql查询)

php - 数据库 - 当我们尝试插入时查询失败

javascript - 如何在jquery中分割ajax的Response html

php - 如何使用 php 创建 256 位加密的 zip 文件

php - jquery ajax加载php到指定的div中

mysql - 使用由两个连接读取和递增的计数器时如何避免竞争条件?

mysql - 如何将 Maximum 用于 SELECT 语句