数据库:表格设计/结构

时间:2012-10-31 03:18:57

标签: mysql database database-design phpmyadmin

我是数据库结构和设计的新手。目前,我正在创建一个课程目录,根据课程名称和日期匹配课程描述。我已经勾画了一个描述课程的表格,其中包括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(秋季1春季为0)

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

1 个答案:

答案 0 :(得分: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 - 这将只为您提供从课程到专业的一对一关系,但许多课程可以加入专业。

至于Yearly,我只想在数据库中添加一个字段来解释这个问题,可能是一个很小的int,只需要它为0或1。