规划SQL数据库时需要帮助

时间:2011-05-23 21:58:19

标签: php mysql database-design data-modeling

我是一名学习SQL和PHP的学生,我已经设置了一个使用PHP和mySQLi创建学生反馈表的任务,我真的很想知道如何为项目设计数据库!

我正在创建一个用户可以登录网页的系统,如果用户是学生,他们可以看到一个页面,为每个模块(课程)的每节课留下反馈。如果他们是导师,当他们登录时,他们可以查看反馈,添加包含课程数量的模块并添加学生帐户。

我不明白哪个是为数据库创建表的最佳方法,特别是因为我知道你不能把表放在表中,我将有一个表模块,每个模块内都会每个课程的表格,其中包含每个反馈项目和一些其他变量,如附加消息。

如何在不创建数百个表并尝试将它们链接在一起的情况下构建数据库,因为我是SQL的新手,这似乎是一个非常冗长的不整齐的方式。

我一直试图把数据库放在数据库中好几天了,我只是不知道该怎么做!

2 个答案:

答案 0 :(得分:4)

数据库表可以彼此建立关系,模仿您描述为嵌套表的内容。在数据库用语中,存在1对1关系,1对多关系以及多对多关系。如果您希望为单个模块提供许多类,则可以在Class表中包含一个字段,该字段包含其所属的Module记录的外键。 (许多类到1个模块)。

如果您想将许多学生链接到一个班级并为一个学生提供多个班级,您通常会使用一个单独的表来保存两个表的外键。那就是你有一个Student_2_Class表,它有一个Class_FKey字段和一个Student_FKey字段,有时这些多对多链接表在需要时有其他字段。您至少应添加一个约束,即两个外键的组合是唯一的。这样你就不能多次将同一个学生放在同一个班级。

我认为我不能教你如何在线程响应中设计数据库,但你应该能够搜索主键,外键,多对一,一对多,多对多等术语来查找的东西。您的学校图书馆也可能有关于“数据建模”的书籍可能对您有所帮助(我喜欢Simsion和Witts 数据建模基础 .Visio有一个不错的实体关系图工具(数据库模型通常称为实体关系图) )所以你也可以找到如何使用它的在线教程,你可以通过观看来获取一些建模技巧。

答案 1 :(得分:0)

你不应该需要数百张桌子!但是,您需要使用主键链接它们。这是SQL的本质,是新手与否,这正是您需要学习的内容。

本质上, 将表放在表中,但是通过匹配键将它们链接在一起:

student_id  student_name
1           Bob
2           Jane

comment_id  student_id  comment_body
123         2           Jane says hi!
124         1           Bob says hi also!
125         1           Bob says hi again!

查询这些表时,可以在SELECT语句中将它们连接在一起:

SELECT student_id, student_name, comment_id, comment_body
FROM student, comment
WHERE student.student_id = comment.student_id


student_id  student_name  comment_id  comment_body
2           Jane          123         Jane says hi!
1           Bob           124         Bob says hi also!
1           Bob           125         Bob says hi again!

你得到的行是两个表的组合,将两个表连接(或连接)在两个表中主键(在本例中为student_id)相等的地方。