数据库结构/设计:根据学期和年份的课程

时间:2012-10-30 13:52:08

标签: php mysql database database-design

我目前正在使用PHP和MySQL数据库。我目前正在为我的部门建立一个课程目录页面。我已经设置了一个名为Courses的表。我遇到了数据库表的其余结构的问题。在fall期间教授的课程和spring期间教授的课程。此外,在这些课程中,每隔一年教授一些课程。我想构建一个表,然后我可以使用PHP根据semesterscholarly year自动更新。更具体地说,我想展示courses namedescription,以及它是否在当年的fall or semester上提供。当年未提供的任何课程都不会显示在页面中。

我如何正确构建我的表以符合上述要求?

示例(课程编号,班级名称):

3210 Musical Theatre Styles I (Fall)
3220 Musical Theatre Styles II (Spring)
4500 Musical Theatre Showcase (Fall of year 2014)

3 个答案:

答案 0 :(得分:2)

我会创建一个描述课程的表,包括课程代码,姓名和所有其他相关信息,然后创建另一个表格,将这些课程与教学时间联系起来。

课程示例

id serial
course_code text
description text

计划示例

id serial
course_id serial
year date
semester (look at @Mahmoud Gamals answer)

因此,poulated数据库可能包含以下内容:

courses

id course_code description
1  INF1000     "Basic programming"
2  INF1001     "More basic programming"

course_dates(秋季1春季为0)

id course_id year semester
1  1         2012 0
2  1         2013 1
3  2         2013 1

通过这种方式,您可以根据课程信息分开教授课程的日期。

答案 1 :(得分:0)

您需要创建一个标志列。例如int表示类类型,0表示Fall,1表示Spring,2表示All of the year

答案 2 :(得分:0)

添加更多细节。如果您希望它易于记忆,请使用ENUM('fall','spring'...)

id courseID courseName whenOffered everyOtherYear