首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库:表设计/结构

数据库:表设计/结构
EN

Stack Overflow用户
提问于 2012-10-31 11:18:57
回答 1查看 392关注 0票数 1

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

我缺少分类为all_year的类。另外,我也不知道如何给专业下的课程打上标签。由于假设一门课程可以属于多个专业,因此将其中一个专业的数据放入另一个专业会迫使您复制数据。你知道我如何在我的表格设计中实现这两件事吗?或者关于如何重组我的设计的建议。如果可能,请显示要在我的phpmyadmin数据库中执行的查询。

表课程示例

代码语言:javascript
复制
id serial
course_code text
description text

表course_dates示例

代码语言:javascript
复制
id serial
course_id serial
year date
semester 

表专业示例

代码语言:javascript
复制
major_id int
course_id int

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

代码语言:javascript
复制
Table courses
id course_code description
1  INF1000     "Basic programming"
2  INF1001     "More basic programming"

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

代码语言:javascript
复制
id course_id year semester
1  1         2012 0
2  1         2013 1
3  2         2013 1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-31 11:33:09

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

代码语言:javascript
复制
 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子句等。

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

代码语言:javascript
复制
 majors
 id int
 name varchar

然后在你的课程表中添加一个major_id -这只会给你从课程到专业的一对一的关系,但是很多课程可以加入一个专业。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13150791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档