你觉得我在 mysql workbench 中的 table 怎么样? Linktable?

What do you think of my table in mysql workbench ? Link table?

我正在 Java 中制作一个小程序,如果我将姓名和出生日期放在文本字段中,它会获取学生在学期和考试中的成绩。在我制作的 table 下面,我对 link 这些 table:

有问题

您的数据库结构没有 link 可能性。

没有 table 有一个密钥可以 link 它到另一个 table。

你必须识别一对多和多对多关联,并用适当的方法用键来表达它们。

示例:

我想 table 学生和 table 课程有一个多对多的关系,你应该用 table 来表达:

ideleve | idcourse

您必须在您的结构上计算出所有这些关系才能设计任何查询。

根据您的评论,我更新了答案。实际上我应该投票结束这个问题,因为它太宽泛而且没有过度编码。

问题设置示例:

Each student is identified by:
id | name | surname | born_date

Each course is identified by
id | course_title

Students can enroll in multiple courses

Courses can be held in 1st, 2nd semester or both maintaining the same id and title

There are up to 3 exams per course per semester

Notes of each exam can go from 1 to 5 with 1 being the lowest

Students have to take all the exams, if they do not take an exam their vote is considered 0 for that exam

这可能会导致:

数据库结构

table students
id_student | name | surname

table courses
id_course | course_title

table exams
id_student | id_course | semester | exam | grade

使用您可以从列名中理解的隐式关系。

然后你就可以开始编码了...

但在这里我对学生、课程、考试和监护人及其关系做了一大堆假设!

要设计数据库,需要对实体和关系进行分析。

你想做的程序确实如你所说的很简单,而且这个分析并不复杂,但必须要做,none可以为你做。

根据你最后的评论,最终澄清了你可以做的问题:

数据库结构

table students
id_student | name | surname | birthdate

table courses
id_course | course_title | year | semester

table exams
id_student | id_course | year | semester | test | exam | grade

table 考试示例可以是:

id_student | id_course | year | semester | test | exam | grade
--------------------------------------------------------------
  2701     |  K409     | 2015 |    1     |   1  | NULL |  4
  2701     |  K409     | 2015 |    1     |   2  | NULL |  4
  2701     |  K409     | 2015 |    1     |   3  | NULL |  4
  2701     |  K409     | 2015 |    0     | NULL | NULL |  3
  2701     |  K405     | 2015 |    1     |   1  | NULL |  4
  2701     |  K405     | 2015 |    1     |   2  | NULL |  4
  2701     |  K405     | 2015 |    1     |   3  | NULL |  4
  2705     |  K405     | 2015 |    0     | NULL | NULL |  3
  2705     |  K409     | 2015 |    2     |   1  | NULL |  4
  2705     |  K409     | 2015 |    2     |   2  | NULL |  4
  2705     |  K409     | 2015 |    2     |   3  | NULL |  4
  2705     |  K409     | 2015 |    0     | NULL | NULL |  3
  2705     |  K407     | 2015 |    2     |   1  | NULL |  4
  2705     |  K407     | 2015 |    2     |   2  | NULL |  4
  2705     |  K407     | 2015 |    2     |   3  | NULL |  4
  2705     |  K407     | 2015 |    0     | NULL | NULL |  3

您可以使用多列键 link 到 exams/test 的课程:

 id_course-year-semester

link 学生到 exams/test 有:

 id_student

link 学生通过 exams/test table 课程,你有:

id_student | id_course-year-semester

这意味着当学生注册课程时,这样的记录将在 exams/test table:

id_student | id_course | year | semester | test | exam | grade
--------------------------------------------------------------
  2701     |  K409     | 2015 |    1     | NULL | NULL |  NULL

此致