Mysql如何避免重复自己

时间:2011-02-22 17:08:47

标签: sql mysql database-design data-modeling dry

我有一个表学生,有以下几个字段。

Id,FirstName,SecondName,Photo,Student_ID

我还有一个名为class_of_2011的表,其中包含字段

Id,FirstName,SecondName,Photo,Student_ID,Subjects

我想从表学生中选择一些特定的学生,并将它们放在表class_of_2011中,但我已经在表学生中有了名字。我在想这样做的唯一方法是将我想要的名字复制到表class_of_2011 ,但由于2012年及以后会有一类课程,我觉得我只是将数据从一张桌子复制到另一张桌子。

在我的情况下重复自己是不可避免的吗?

4 个答案:

答案 0 :(得分:2)

看起来这很容易归一化。为什么不让class_of_表只有student表的id列的外键?

StudentId,Subjects

通过这种方式,一个学生记录可以与几个班级相关联,以防有人参与5年计划。

我假设Student_ID表中的Students字段是他们的ID号或其他内容,而不是该表的主键。

答案 1 :(得分:1)

学生表 ID,名字,SecondName,照片,student_id数据

主题表 的id,主题

Student_Subjects表 ID,student_id数据,Subject_Id,年份

然后,您可以为学生分配多个科目,为期多年。

答案 2 :(得分:1)

class_of_2011表应包含students表的主键,而不包含其他“重复”数据。然后,您可以通过在查询中将两列连接在一起来获得您感兴趣的所有其他列。

答案 3 :(得分:1)

如果可能的话,我会重组数据......就像....

Student Table
ID, Name, Address, other common specific to student

GraduatingClass Table
YearGraduate, StudentID

Enrollment Table
StudentID, ClassID, SemesterID