数据库设计 - 存储要求

时间:2013-09-05 02:35:14

标签: mysql database-design

假设我们想要将大学课程及其入学要求存储在数据库中。例如,理学士数学,理学学士,计算机科学硕士等。

每门课程都有自己的一套要求,可能会有不同数量的非共享要求。例如,要获得BSc数学资格,您可能需要数学A和物理B。虽然BSc美术可能需要艺术中的A并且用户具有投资组合。理学硕士可能最低年龄为25岁等。

假设我们有一个拥有自己的属性集的学生。因此,他们可能拥有数学A和物理B,化学C和19岁。

我们如何构建我们的数据库,使其面向高效的查找。鉴于学生的属性,我们如何检索他们有资格获得的所有课程?

在抽象层面上,我们正在寻找其要求是给定属性的子集的所有项目。

我想在MySQL中实现它。架构可以是:

课程

ID

名称

要求

COURSE_ID

受试者

等级

但是当学生在主题1中有A,在主题2中有B等时,如何查询表格以获得所有符合条件的课程。

要使课程成为匹配,必须满足其中的每一项要求。

在此先感谢,我希望我的解释不会太混乱。

1 个答案:

答案 0 :(得分:0)

好。我认为你需要一个主题列表,带有一堆主题id。

现在,对于查询,您将从(或生成)一堆主题ID和成绩开始。最简单的方法是将其作为包含这些列的临时表。

现在,您可以进行查询,加入主题ID,并添加“where temp.grade< = course.grade。

这方面的技巧是计算行数。如果它与课程指定的行数相同,那么您就成功匹配。

这足以让你前进吗?