1

我正在建立网站,每个用户都有不同的课程

+----+-----------+---------+
| id | subject   | user_id |
+----+-----------+---------+
|  1 | Math 140  |       2 |
|  2 | ART 240   |       2 |
+----+-----------+---------+

然后每个班级都会有一堆家庭作业文件,班级论文文件等等。在这里我需要你的帮助。什么是更好的方法:建立一个这样的表:

+----+-----------+--------------------------------------------------+--------------+
| id | subject   | Homework                                         | Class-Papers |
+----+-----------+-----------------------------------------------------------------+
|  1 | Math 140  |  www.example.com/subjects/Math+140/file_name.pdf |   bla-bla    |
|  2 | Math 140  |  www.example.com/subjects/Math+140/file_name.pdf |   bla-bla    |
|  3 | Math 140  |  www.example.com/subjects/Math+140/file_name.pdf |   bla-bla    |
|  4 | ART 240   |  www.example.com/subjects/ART +240/file_name.pdf |   bla-bla    |
|  5 | ART 240   |  www.example.com/subjects/ART +240/file_name.pdf |   bla-bla    |
+----+-----------+--------------------------------------------------+--------------+

而不仅仅是在我想显示内容时将其分开,或者为每个主题构建一个表格,而不仅仅是加载必要的表格?

或者,如果您可以提出更好或更常见/有用/高效的建议,请继续。

4

2 回答 2

2

在尝试之前,您应该阅读规范化和关系设计。

这是一个一对多的关系——这样建模。

每个主题的桌子都很疯狂。您必须为每个主题添加一个新表。

一个更好的解决方案将可以通过添加数据来添加新的主题。这就是关系模型的全部意义所在。

不用担心桌子;先用自然语言考虑一下。

一个主题(微积分)可以有许多课程(微分、积分、多变量)。

一门课程(微积分)可以有很多部分(周一上午 9 点到 10 点,数学楼 2 室)。

一个学生(名字、姓氏、学生证)可以注册零个或多个 SECTION。给定学生的 SECTION 列表是一个 TRANSCRIPT。

每个学生每学期有一份成绩单(2012 年秋季)。

一个 SECTION 可以有零个或多个 ASSIGNMENT。

这些是解决这个简单问题所需的表。在开始编写 SQL 之前,请先考虑名称以及它们之间的关系。你会很高兴你做到了。

于 2012-07-20T17:09:38.113 回答
1

我绝对不会为每个主题创建单独的表格。如果你这样做了,那么如果你想要一个像“列出学生 X 的所有作业”这样的查询,你将不得不根据学生注册的科目访问不同的表。更糟糕的是,任何时候有人添加一个新科目,你都会有创建一个新表。如果以后您决定需要一个新的作业属性,而不是更新一个表,您将不得不更新这些主题表中的每一个。这只是周围的坏消息。

于 2012-07-20T17:09:55.727 回答