学生和许多日期的多个分数 - Java

时间:2016-01-05 17:23:25

标签: java arrays database one-to-many derby

我正在创建一个程序,这是我的A-level课程的测验,我目前正在设计部分。

这是一个课堂测验,在测验结束时,教师可以存储每个学生的分数。测验将有3个子测验,因此一个学生可以有3个不同的分数,但平均值将被找到(自动)。测验将在多天内进行,因此一名学生将在很多天内获得很多分数。这是因为平均分数将根据时间(日期)绘制,并生成一个图表,其中每个学生的颜色不同。

这是我的问题:

我需要用户输入保存的学生姓名 然后他们可以每天回去,从下拉框中选择一个学生并输入他们当天的分数 - 这些分数在该日期保存 然后第二天他们做同样的事情

那怎么办?

  • 创建两个表格,一个用于学生详细信息,一个用于分数,并通过学生ID将它们链接在一起,这样一对多的关系?会存储在二维数组中吗?

  • 或者表和数组是完全不同的存储数据的方法吗? 所以在数组中它看起来像这样?

    student ID1, firstname, lastname
    student ID2, firstname, lastname
    student ID3, firstname, lastname
    

然后得分

studentID1, score1, score2, score3, average, date
studentID1, score1, score2, score3, average, date
studentID1, score1, score2, score3, average, date

但是我希望用户通过NAME找到分数而不是ID ......使用这种方法时可能吗?就像用户必须能够搜索学生并查看所有日期的所有分数(以表格或图形形式) - 这会有效吗?

当我在derby数据库中创建这些表时 - 如何将两者连接在一起?

1 个答案:

答案 0 :(得分:0)

SQL数据库表和数组是两回事,即使表可以被认为是具有行和列的二维数组。

你可以简单地将名称作为主键(即使它被分成单独的firstname和lastname列),但是如果类中有两个John Smiths,你将遇到麻烦。如果有一个唯一的学生ID分配给学生,你最好使用它;如果不是,则通常使用数据库中的自动递增序列来分配ID。 (在数据库术语中,名称将被称为自然键,任意分配的ID将被称为代理键;在我的经验中,代理键几乎无处不在,并且工作得很好。)

我不会将名称分解为名字和姓氏列。你怎么处理像#34;麦当娜","李冰"和#34; David Lloyd George"?我只想有一个名字栏。

当教师从下拉框中选择学生时,您可以通过在表上使用学生ID和姓名对SELECT进行填充。你没有提到这是一个网络应用程序或Swing应用程序或Android应用程序或什么,但你只需要将选择的项目与学生ID相关联,然后你可以用它来选择或更新在第二个表中用测试分数排。