我是数据库结构和设计的新手。目前,我正在创建一个课程目录,根据课程名称和日期匹配课程描述。我已经勾画了一个描述课程的表格,其中包括course_code
,name
以及其他所有相关信息。然后我勾画了另一张表格,将这些课程与他们的教学时间联系起来。
我缺少归类为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
答案 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。