我有两张桌子,有多到多的关系:
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
);
student_has_teacher ( teacher_id int(11),student_id int(11),主键(teacher_id,student_id),外键(Teacher_id)引用教师(Id),外键(Student_id)引用学生(Id) );
什么是更好的选择,为什么?
谢谢
发布于 2010-08-17 14:48:23
这两种选择并不等同。在备选方案1中,每个教师和学生可以有多对配对。在选项2中,教师和学生的每个组合只允许1行。
还有另一个不同之处。在第一章中,学生和老师是可以空的。在第二章中他们不是。
从所给出的信息来看,我不明白为什么一位老师需要与同一个学生进行多次配对。因此,我想我会说2更合适,但这完全取决于业务需求,而且您并没有给出太多的信息来说明这两种情况。
发布于 2010-08-17 14:16:20
使两个字段为主键
因为它们完成了主键的定义。它们允许明确地指示行。
发布于 2010-08-17 14:15:47
这要看情况了。如果您需要将某些内容与student_has_teacher (奇怪的表名imo,我建议student_teacher)中的一行关联起来,那么id字段就更好了。如果你不是,这两个字段会做得很好。
https://stackoverflow.com/questions/3503320
复制相似问题