SQL - 跟踪学生在学校之间移动时的考试记录

时间:2017-11-16 10:28:28

标签: sql sql-server database

我想挑选一些你光荣的头脑,以找到解决我的困境的最佳方案。

场景:

  • 学校有孩子和孩子参加考试。
  • 测试指向孩子,而不是学校。
  • 如果孩子上学,测试记录将被带到新学校,之前的学校没有测试记录,因为他们与孩子有关。

显然,这不是理想的,并且是数据库没有考虑到这一点而设计的结果。正确的行动方案是什么;我目前已经确定了下面列出的3种可能性,可以解决当前的问题。但是,我无法确定哪个最适合手头的问题 - 以及是否存在更好的解决方案。

  1. 让每个测试存储学校和&测试记录中的学生(要求更新当前记录并增加数据库的大小)
  2. 创建一个新的子记录,使用新ID复制新学校的现有数据,以便测试仍然与之前的学校相关联(使识别先前测试成绩的能力变得复杂)
  3. 分别跟踪其他学校的移动情况,然后使用此附加表格使用时间戳(增加的复杂性和计算要求)识别当前和之前的情况。
  4. 编辑:

    所以我尝试使用一个基本示例,但是已经请求了手头的任务。

    这里是表格的DB Schema(简化为问题,注意:产后并不重要):

    1. 患者:ID,MidwifeID,TeamID
    2. 助产士:身份证号
    3. 群组:ID
    4. GroupsMidwives:MidwifeID,GroupsID
    5. PatientObservations:ID,MidwifeID,PatientID
    6. 使用如下查询:

      SELECT Some Information                                                                                                                                 
      from Postnatals                                                                                                     
      JOIN Midwives on Postnatals.MidwifeID = Midwives.ID                                                                                                                             
      JOIN Patients on Patients.PatientID = Postnatals.PatientID                                                                                                                          
      JOIN GroupsMidwives on GroupsMidwives.MidwifeID = Midwives.ID                                                                                                                           
      JOIN Groups on Groups.ID = GroupsMidwives.GroupID                                                                                                                           
      JOIN PatientObservations on PatientObservations.PatientID = 
      Postnatals.PatientID                                                                                                                            
      WHERE groups.Name = ?
      *some extra checks*                                                                                                                                                                                                                                         
      GROUP BY Midwives.Firstname, Midwives.Surname, Midwives.ID
      

      但是,如果将助产士转移到其他团队,则与之前团队相关联的数据现在归新分配的团队所有。如前面详述的示例中所述。

      因此,由于助产士拥有记录的方式,因此需要进行修改(尚未实现修改)以便在团队变更之前将数据提交给前一个团队。 ,这是不可能的。

1 个答案:

答案 0 :(得分:0)

根据您的关注,您应该低于建议。

步骤1)您需要创建School Master Table

ID  |  School | IsActive
1   |  ABC    |    1
2   |  XYZ    |    1

步骤2)您需要创建具有学校ID作为外键的儿童大师

ID  |  School | Children Name| IsActive
1   |  2      |    Mak       |    1
2   |  2      |    Jak       |    1

步骤3)您需要创建具有子ID为外键的测试表

ID  |  Children_id | Test Name | IsActive
1   |  2           |    Math   |    1
2   |  2           |    Eng    |    1

现在,每当孩子搬到学校,然后让孩子记录失效,并在新学校创建另一个活跃记录。这将帮助您分解旧测试和新测试。

如果需要更多帮助,请告诉我