2012-07-20 147 views
1

我建立的网站,每个用户都有不同的类SQL - 数据库设计,需要建议

+----+-----------+---------+ 
| 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 | 
+----+-----------+--------------------------------------------------+--------------+ 

而不仅仅是单独的内容时,我想以显示它, 或建立一个表,每一个主题,并不仅仅是加载必要的表?

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

+0

对于所有主题使用单表并不要求每次添加新主题时添加新表。 – 2012-07-20 17:09:00

+0

越正规化越好,所以如果你有一个主题表,主题名称,主题名称,家庭作业链接和其他表格,那么它会更好。 – dansasu11 2012-07-20 17:09:27

+0

你需要创建一个所有将要使用的数据的详细列表,直到你有那就是,你不能就事物如何相互连接做出明智的决定。 – codewaggle 2012-07-20 17:12:39

回答

2

在尝试此操作之前,您应该阅读关于规范化和关系设计的内容。

这是一个一对多的关系 - 模拟它。

每个主题的表格都很疯狂。你必须为每个主题添加一个新表。

一个更好的解决方案可以简单地通过添加数据来添加新的主题。这就是关系模型的全部内容。

不要担心表格;先用自然语言思考它。

一个SUBJECT(微积分)可以有许多COURSES(差分,积分,多变量)。

课程(微积分)可以有很多章节(数学馆2号房间的星期一上午9-10点)。

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

每个学生每学期有一个录音带(2012年秋季)。

SECTION可以有零个或多个ASSIGNMENT。

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

+0

我会,谢谢 – Vor 2012-07-20 17:16:51

+0

太棒了!这真的帮助了我,并且节省了很多次!谢谢 – Vor 2012-07-23 02:59:38

0

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

+0

非常感谢 – Vor 2012-07-20 17:12:42