mysql - 有人可以向我解释一下这个基数参与约束吗?

标签 mysql sql database entity-relationship cardinality

我正在阅读我的数据库书籍,其中有这个图表:

enter image description here

我不明白第二个图表,即“员工 - 工作部门 - 部门”。

此图是否表示最少只有 1 名员工,最多 1 名员工可以为最少 1 个部门工作,最多可以为多个部门工作?

这没有道理。 (1,1) 的约束是否会限制该部门只能有 1 名员工在其中工作?难道不应该是这个吗:

员工 (1, N) (1,N) 部门

如果有人可以向我解释这一点,那就太好了。我怀疑我读错了。

最佳答案

在第二个图中,(1,1) 表示每个 EMPLOYEE 在关系中必须出现且仅出现一次。由于关系中的每个元组将一个 EMPLOYEE 与一个 DEPARTMENT 相关联,因此如果 EMPLOYEE 在整个关系中只出现一次,它们将与总共只有一个 DEPARTMENT。因此,这意味着每个 EMPLOYEE 为一个 DEPARTMENT 工作。

(1,N) 约束指示每个 DEPARTMENT 必须在关系中至少出现一次,但可以出现多次。每个外观都将与一个EMPLOYEE相关联。换句话说,这意味着 DEPARTMENT 必须至少有一个,但可以有多个 EMPLOYEE

为了完整起见,让我将第一个图表放入相同的术语中。每个EMPLOYEE 最多只能出现一次,这意味着一个EMPLOYEE 可以管理一个DEPARTMENT,也可以不管理。每个DEPARTMENT 必须恰好出现一次,因此每个DEPARTMENT 必须由单个EMPLOYEE 管理。

关于mysql - 有人可以向我解释一下这个基数参与约束吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40756073/

相关文章:

大多数开发人员不知道的 SQL Server 功能/命令

SQL Count 拥有全部 4 个祖 parent 的人数

database - 在实体关系中替代 "master"和 "slave"?

mysql - 对于包含 null、0 或 1 的 mysql 列,我应该使用什么数据类型?

c# - 不支持 MySQL 文件源

mysql - 查询优化(MySql/Sql): Moving functions out of where clause

PHP/AJAX 登录需要很长时间

java - 如何从一个jsp页面过渡到另一个?

sql - Magento:SQLSTATE [42000]:语法错误或访问冲突:1044 用户 'DBUSER' @'%' 对数据库 'DBNAME' 的访问被拒绝

mysql - 查找同一个表中与给定其他行具有相同多对多关系的行