我正在建立每个用户都有不同类别的网站
+----+-----------+---------+
| id | subject | user_id |
+----+-----------+---------+
| 1 | Math 140 | 2 |
| 2 | ART 240 | 2 |
+----+-----------+---------+
然后每个班级都会有大量的家庭作业文件,Class-Papers文件等等。 在这里,我需要你的帮助。什么是更好的方法:构建一个这样的表:
+----+-----------+--------------------------------------------------+--------------+
| 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 |
+----+-----------+--------------------------------------------------+--------------+
而不仅仅是在我想要显示它时分开内容, 或者为每个主题构建一个表,而不仅仅是加载必要的表?
或者,如果您可以提出更好或更常见/有用/更有效的建议,请继续。
答案 0 :(得分:2)
在尝试此操作之前,您应该阅读有关规范化和关系设计的内容。
这是一对多的关系 - 对此进行建模。
每个主题的表都很疯狂。您必须为每个主题添加一个新表。
更好的解决方案可以简单地通过添加数据来添加新主题。这就是关系模型的全部内容。
不要担心桌子;首先用自然语言思考它。SUBJECT(微积分)可以有很多课程(差异,整数,多变量)。
课程(微积分)可以有很多部分(数学建筑2号房间的上午9点到10点)。
学生(名字,姓氏,学生ID)可以注册零个或多个部分。给定学生的SECTION列表是TRANSCRIPT。
每个学生每学期都有一个TRANSCRIPT(2012年秋季)。
SECTION可以有零个或多个ASSIGNMENTs。
这些是您在解决这个简单问题时需要的表格。在开始编写SQL之前,请担心名称及其相关性。你很高兴你做到了。
答案 1 :(得分:1)
我绝对不会为每个主题创建一个单独的表。如果你这样做了,那么如果你想要一个像#34;列出学生X"的所有作业的查询,你将不得不根据学生注册的科目访问不同的表。更糟糕的是,每当有人添加新的主题,你必须创建一个新表。如果你决定需要一个新的家庭作业属性,而不是更新一个表,你将不得不更新这些主题表中的每一个。这只是个坏消息。