2012-10-31 110 views
1

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

我缺少归类为all_year的班级。此外,我错过了一种如何标记主要课程的方法。由于假设一门课程可能属于几门专业,因此将数据从一门课程放入另一门课程将迫使您复制数据。任何想法如何将这两件事情实现到我的表格设计?或者关于如何重组我的设计的建议。如果可能的话,请告诉我一个查询在我的phpmyadmin DB中执行。

表课程示例

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 

回答

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然后添加到您的课程表 - 这将只是给你的课程,专业的一对一的关系,但马NY课程可以加入一个专业。

至于每年,我也只是在数据库中添加一个字段来解决这个问题,可能是一个小小的int和只是让0或1

+0

+1谢谢。我已经用你的建议更新了我的问题。链接表是我不知道该怎么做的。你能否写一个查询来创建这三个表并将它们联系起来? – techAddict82

+0

你只是想创建另一个表: 创建表courses_majors(courses_id int(32),majors_id int(32)) – Michael

+0

链接查询已经在答案 – Michael