【问题标题】:Mysql how to avoid repeating myselfMysql如何避免重复自己
【发布时间】:2011-02-23 02:26:56
【问题描述】:

我有一个包含以下字段的学生表。

Id,FirstName,SecondName,Photo,Student_ID

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

Id,FirstName,SecondName,Photo,Student_ID,Subjects

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

就我而言,重复自己是不可避免的吗?

【问题讨论】:

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


    【解决方案1】:

    看起来这可以很容易地标准化。为什么不让您的class_of_ 表只为student 表的id 列添加一个外键?

    StudentId,Subjects

    这样,一个学生记录可以与多个班级相关联,以防有人在 5 年计划中。

    我假设Students 表中的Student_ID 字段是他们的id 号或其他东西,而不是该表的主键。

    【讨论】:

    【解决方案2】:

    学生桌 Id,FirstName,SecondName,Photo,Student_ID

    科目表 ID,主题

    Student_Subjects 表 Id,Student_Id,Subject_Id,年份

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        如果可能的话,我会重组数据......类似......

        Student Table
        ID, Name, Address, other common specific to student
        
        GraduatingClass Table
        YearGraduate, StudentID
        
        Enrollment Table
        StudentID, ClassID, SemesterID
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-17
          • 2012-04-14
          • 2019-04-28
          • 1970-01-01
          • 2015-08-09
          相关资源
          最近更新 更多