在DBMS中附加好吗?

时间:2017-03-17 16:39:27

标签: mysql database vb.net datagridview erd

我有这个记录学生犯罪的项目。

这是怎么回事。

想象一下,一个班级的女孩犯了作弊行为。然后将她的数据添加到表中。然后同一个女孩又犯了一个罪 - 破坏行为。她的信息再次存储在数据库中。所以它在表格中看起来像这样。 (在同一天完成)

Record Number    Student_ID        Name      OffenseCode    OffenseDesc
      1            178003         Girly           N          Cheating
      2            178003         Girly           B          Vandalism

然后我的桥接实体在Girly的条目中有以下数据

RecordNumber    OffenseNumber   Student_ID  OffenseCode  Count  Remarks
      1               1           178003          N        0    WARNING
      2               2           178003          B        1    CALL PARENT

然后在DataGridView(使用VB.NET)中发生这种情况

Record Number    Student_ID        Name      OffenseCode    OffenseDesc
      1            178003         Girly           N          Cheating
      2            178003         Girly           B          Vandalism
      3            178003         Girly           N          Cheating
      4            178003         Girly           B          Vandalism

我INNER加入我的表来获得结果。如果你必须知道表格

学生 - Record_Number(PK),Student_ID,姓名,班级,日期提交
bridge - Record_Number(PK),OffenseNum(PK),Student_ID,Offense_Code,Count,备注
攻击 - OffenseNum(PK),OffenseCode,OffenseDesc

如何解决上述问题?

1 个答案:

答案 0 :(得分:2)

以下是表架构的外观:

  1. 学生 - 学生ID(PK),学生姓名,班级
  2. OffenseType - OffenseCode(PK),OffenseDesc
  3. 突发事件 - Record_Number(PK),StudentID,OffenseCode,DateCommitted,备注
  4. 您可能甚至需要额外的备注表,因为有些人可能需要在事件完全解决之前对事件发表评论。

    然后您的网格查询将如下所示:

    SELECT RecordNumber, StudentID, StudentName, OffenseCode, OffenseDesc
    FROM Incident i
    INNER JOIN OffenseType o ON o.OffenseCode = i.OffenseCode
    INNER JOIN Student s on s.StudentID = i.StudentID