mysql - 数据库 : 1:1 relationship

标签 mysql

this lecture他们提到了 1:1 的关系。

可以将 1:1 关系表示如下:一位讲师只教授一门科目。可以通过将 subject_id 添加到讲师表或将讲师_id 添加到主题表来完成。

enter image description here

我对解释或我的理解有一些疑问。

让我们来看第一个示例,将 subject_id 添加到讲师表。

LECTURE_ID LECTURE_NAME SUBJECT_ID
4          Kolmogorov   6
5          Schmidt      6

所以,实际上两个讲师可以教授一门学科,这并不是 1:1 的关系。

让我们来看第二个示例,将讲师 ID 添加到主题表中。

SUBJECT_ID SUBJECTE_NAME LECTURER_ID
5          Math          1
6          Arts          1

一位讲师教授两个不同的科目。

我有什么遗漏的吗?或者外键必须在表中只出现一次?因为on this page外键 (P_id) 在“Order”表中出现两次。

最佳答案

嗯,这些解决方案都不是最佳的。但如果你必须选择,我会说 LECTURER_ID 应该是 SUBJECT 表中的外键。

但我建议您使用 Boyce Codd 范式。然后您将总共创建三个表。

讲师

LECTURE_ID(PK) LECTURE_NAME
4              Kolmogorov
5              Schmidt

主题

SUBJECT_ID(PK) SUBJECTE_NAME
5              Math
6              Arts

LECTURER_SUBJECT

LECTURE_ID(PK)(FK) SUBJECT_ID (PK)(FK)
4                  5
4                  6

这样,一个讲师可以有多个科目,一个科目可以有多个讲师。

关于mysql - 数据库 : 1:1 relationship,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40471187/

相关文章:

php - 如何将这个sql查询简化为一个

php - 记录在数据库上执行了哪些事件的方法? -MySQL/PHP

分组依据中的Mysql时间差异

mysql - 一个mysql数据库可以创建多少张表?

php - 根据特定时区将当前时间插入mysql数据库

mysql - 更新 MySQL 中目标行的下一行

MySQL - 左连接或嵌套选择用于过滤不存在​​的行?

c# - 如何在 GridView 中拥有具有相同字段但不同值的两列

mysql - SQL:在分隔符与分隔符本身之间进行选择,插入其他列并删除字符串

mysql - 限制 LEFT JOIN 组的数量