我是数据库结构和设计的新手。目前,我正在创建一个类(class)目录,该目录将根据类(class)名称和日期匹配类(class)描述。我画了一张描述类(class)的表格,其中包括 course_code
、name
和所有其他相关信息。然后,我绘制了另一张表格,将这些类(class)与授课时间联系起来。
我缺少分类为 all_year
的类(class)。我还缺少一种方法来标记专业下的类(class)。由于假设一门类(class)可以属于多个专业,因此将一个专业的数据放入另一个专业会迫使您重复数据。有什么想法可以将这两件事实现到我的表设计中吗?或者关于如何重组我的设计的建议。如果可能,请向我展示一个在我的 phpmyadmin
数据库中执行的查询。
表格类(class)示例
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( Spring 为 0,秋季为 1)
id course_id year semester
1 1 2012 0
2 1 2013 1
3 2 2013 1
最佳答案
要将类(class)链接到专业——这是一对多的关系(一门类(class)到许多专业)——你想使用具有这种结构的链接表:
table courses_majors
major_id int
course_id int
请记住也为该表编制索引 - 这非常重要。然后你可以填充它,一门类(class)甚至去很多专业,很多类(class)去一个专业(多对多关系)。
然后您可以在该表中的表上运行连接:
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
然后在你的类(class)表中添加一个 major_id - 这只会给你一个从类(class)到专业的一对一关系,但是很多类(class)可以加入一个专业。
至于每年,我会在数据库中添加一个字段来说明这一点,可能是一个很小的 int 并将其设为 0 或 1。
关于mysql - 数据库:表设计/结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13150791/