首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多到多个表-1单独的字段主键或2个已存在的文件主键(例如在内部)

多到多个表-1单独的字段主键或2个已存在的文件主键(例如在内部)
EN

Stack Overflow用户
提问于 2010-08-17 14:11:45
回答 3查看 710关注 0票数 0

我有两张桌子,有多到多的关系:

代码语言:javascript
复制
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添加id独立字段主键

);

  • option student_has_teacher ( id int(11) NULL,teacher_id int(11),student_id int(11)主键(Id))

student_has_teacher ( teacher_id int(11),student_id int(11),主键(teacher_id,student_id),外键(Teacher_id)引用教师(Id),外键(Student_id)引用学生(Id) );

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

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-17 14:48:23

这两种选择并不等同。在备选方案1中,每个教师和学生可以有多对配对。在选项2中,教师和学生的每个组合只允许1行。

还有另一个不同之处。在第一章中,学生和老师是可以空的。在第二章中他们不是。

从所给出的信息来看,我不明白为什么一位老师需要与同一个学生进行多次配对。因此,我想我会说2更合适,但这完全取决于业务需求,而且您并没有给出太多的信息来说明这两种情况。

票数 1
EN

Stack Overflow用户

发布于 2010-08-17 14:16:20

使两个字段为主键

因为它们完成了主键的定义。它们允许明确地指示行。

票数 3
EN

Stack Overflow用户

发布于 2010-08-17 14:15:47

这要看情况了。如果您需要将某些内容与student_has_teacher (奇怪的表名imo,我建议student_teacher)中的一行关联起来,那么id字段就更好了。如果你不是,这两个字段会做得很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3503320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档