如何在SQL Server中保存日期学生的缺席?

时间:2015-04-18 19:08:32

标签: c# sql sql-server date

我在SQL Server中有学生表。

在我的网络应用程序中,我有textBox,我可以输入日期(dd-mm-yyyy)。这个日期意味着任何(应用程序确切知道哪个)学生今天缺席。

如何在SQL Server中保存此日期?

当学生每一天都缺席一天时没有问题,因为我可以在学生表中创建一个额外的专栏并保存缺席日期。

但我不知道学生将缺席多少天。我可以在我的学生表中添加一千列,并在那里写下缺席日期,但这是非常糟糕的解决方案。

那么,如何在SQL中保存缺席日期?

我在ASP.NET,C#,SQL Server中编写了我的Web应用程序。

2 个答案:

答案 0 :(得分:2)

您需要另外一张表来跟踪学生缺席的日期。

说你当前的表格如下:

Student
-------
StudentId [PK]
...

所以你现在要创建另一个表:

StudentAbsent
-------
StudentAbsentId [PK]
StudentId [FK, Student.StudentId]
AbsentDate

要获取id=5的学生缺席的日期,您可以在SQL中执行以下操作

SELECT AbsentDate FROM StudentAbsent
WHERE StudentId = 5

哦,顺便说一句,你想了解更多有关人际关系的信息。如果是 1-1关系,则table1的一行与table2的一行相关。 如果它是 1-n关系,则table1的一行与table2的多行相关(如上所述)
如果它是 n-n关系,则table1的一行与table2的多行相关,反之亦然。

答案 1 :(得分:1)

您必须创建另一个名为 absents 的表,其中包含三列:

  • id(主索引和auto_increment)
  • student_id(不应该是唯一的)
  • 日期

id列只是缺席的id(对于表中的每一行都有id是一个好习惯)。 student_id是对student表的id列的引用,用于标识正确的学生。日期栏是缺席的日期。

另一个好的做法是在内部创建关系并将触发器设置为删除等操作(如果学生被删除,您应该怎么做?)。