我有两张表有很多关系:
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
选项添加ID单独的字段主键
student_has_teacher ( id int(11)NOT NULL, teacher_id int(11), student_id int(11) 主键(id) );
选项使2个字段成为主键
student_has_teacher ( teacher_id int(11), student_id int(11), 主键(teacher_id,student_id), 外键(teacher_id)引用教师(id), 外键(student_id)引用学生(id) );
什么是更好的选择,为什么?
由于
答案 0 :(得分:3)
制作2个字段主键
因为它们符合主键的定义。它们允许明确地指示行。
答案 1 :(得分:1)
这取决于。如果您需要将某些内容与student_has_teacher
(奇怪的表名imo,我建议student_teacher
)中的某行相关联,那么id
字段会很好。如果你不是,这两个字段就可以了。
答案 2 :(得分:1)
这两个选项并不相同。在选项1中,每个教师和学生可以有多个配对。在选项2中,每个教师和学生组合只允许使用1行。
还有另一个不同之处。在1中,学生和老师可以为空。在2他们不是。
根据给出的信息,我不明白为什么老师需要不止一次与同一个学生配对。所以我想说2更合适,但这一切都取决于业务需求,而且你没有给出太多的信息来说明。