mysql - 多对多表 - 1 个单独的字段主键或 2 个已存在的字段主键(内部示例)

标签 mysql database database-design data-structures

我有 2 个具有多对多关系的表:

student 
(
id int(11) NOT NULL, 
name varchar(255), 
primary key(id)
);

teacher
(
id int(11) NOT NULL, 
name varchar(255), 
primary key(id)
);

我应该做 3 表 - student_has_teacher

  1. option add id separate field primary key

    student_has_teacher ( id int(11) 不为空, teacher_id int(11), 学生 ID 整数(11) 主键(id) );

  2. option make 2 fields primary key

    student_has_teacher ( teacher_id int(11), student_id 整数(11), 主键(teacher_id,student_id), 外键(teacher_id)引用教师(id), 外键(student_id)引用学生(id) );

什么是更好的选择,为什么?

谢谢

最佳答案

make 2 fields primary key

因为它们符合主键的定义。它们允许明确指示该行。

关于mysql - 多对多表 - 1 个单独的字段主键或 2 个已存在的字段主键(内部示例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3503320/

相关文章:

python - 从输入/文件自动创建 MySQL 表

MySQL 更新联合选择

database - 查找 TB 级数据并在 Oracle 中用于学习目的

sql-server - 事件溯源 SQL Server 删除

数据库设计: Why do some ecommerce database have separate tables for products and product_variants?

database-design - Bigtable数据库设计理论

mysql - 如何使用 Rails+MySQL 获取分组记录的列表(ID)?

php - 除非刷新,否则写入文本文件不会更新

php - 如何解决php功能错误?

php - 不要单独处理行,也不包含表元数据