1

我是数据库结构和设计的新手。目前,我正在创建一个课程目录,该目录将根据课程名称和日期匹配课程描述。我画了一张描述课程的表格,其中包括course_codename所有其他相关信息。然后我又画了一张表格,将这些课程与授课时间联系起来。

我缺少归类为all_year. 我也错过了如何在专业下标记课程的方法。由于假设一门课程可以属于多个专业,因此将数据从一个专业放入另一个专业会迫使您重复数据。有什么想法可以在我的表格设计中实现这两件事吗?或有关如何重组我的设计的建议。如果可能的话,请告诉我一个要在我的phpmyadmin数据库中执行的查询。

餐桌课程示例

id serial
course_code text
description text

course_dates 表示例

id serial
course_id serial
year date
semester 

表专业的例子

major_id int
course_id int

因此,填充的数据库可能包含以下内容:

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

表 course_dates(春季 0 秋季 1 秋季)

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

1 回答 1

1

要将课程链接到专业 - 这是一对多的关系(一门课程到多个专业) - 您需要使用具有这种结构的链接表:

 table courses_majors
 major_id int
 course_id int

记住也要索引这个表——它非常重要。然后你可以填充它,让一门课程甚至去许多专业和许多课程到一个专业(多对多关系)。

然后,您可以在此表中的表上运行联接:

select * from courses left join courses_majors on courses.id = courses_majors.course_id left join majors on courses_majors.majors_id = majors.id

当然,您可以添加 where 子句等。

另一种方法是创建专业表:

 majors
 id int
 name varchar

然后在您的课程表中添加一个 major_id - 这只会为您提供从课程到专业的一对一关系,但许多课程可以加入专业。

至于每年,我会在数据库中添加一个字段来说明这一点,可能是一个很小的 ​​int 并将其设为 0 或 1。

于 2012-10-31T03:33:09.230 回答