database - 关于 "One to Many"关系的一些困惑

标签 database one-to-many diagram er-diagram

请看下图。

enter image description here

该图像代表“一对多”关系。它说“客户是由介绍人介绍的”。客户可以有 1 个介绍人或根本没有,但入侵者可以有多个客户。

所以即使它是“客户可以有 1 个介绍人或根本没有”,它在 ER 图中仍然被描述为一对多关系,对吗?据我所知,“一对多关系”也描述了这种情况,我不太担心这个“根本不”部分。我对此有点困惑,过一段时间再看看图表!

最佳答案

一对多关系仅说明(在您的示例图中)一个客户只能有一个介绍人(这是一对多的 ONE 部分)。 (一个客户只能由一个介绍人介绍)。 MANY 部分声明一个 Introducer 可以介绍零个、一个或任意数量的客户。 客户无需任何介绍即可与您联系。

你是对的,一对多的关系可能会令人困惑,但是如果没有客户的介绍人,那还有关系吗? (不,没有关系)。

在上面的示例中,如果 Client 表中的 Introducer_id 列可以为空,则关系不是必需的,因此可能有一个或多个客户具有没有介绍人 如果外键列不可为空(字段上存在 NOT NULL 约束),则可能需要这种关系。

因此关系及其基数由 FOREIGN KEY 和“多”方列上的 NOT NULL 约束定义。

ER图表示关系实际存在时关系的基数。 (怎么能说没有关系呢?)

关于database - 关于 "One to Many"关系的一些困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25745456/

相关文章:

mysql - 当元组的一部分在另一个表中使用时,无法删除关系表中的元组(但整个元组不在该其他表中)

diagram - 如何在 Grafana 中绘制网络图?

erlang - 如何可视化Erlang gen_fsm

php - 如何在匹配条件时显示数据库中的表名称

Java:杀死执行数据库操作的线程

应用自定义自动增量时,Mysql 多重联接表插入将不起作用

mysql - 按 WHERE LIKE 返回结果排序

java - 为什么在持久化 JoinTable 对象时我的 OneToMany 列表没有填充?

java - SQLite 一对多关系设置/获取外键

c - 从 ANSI C 代码自动创建功能 block 图