在创建高级php应用程序时,您如何知道如何设计mysql数据库?

use*_*751 6 php mysql database structure

我从来没有在PHP中创建过购物车或论坛.除了查看和分析另一个人项目或查看教程,显示如何制作这样的项目或如何成为这样一个项目.一个人如何知道如何设计数据库结构来创建这样的东西?我可能通过反复试验猜测它...

Owe*_*wen 17

你应该阅读并理解规范化的基础知识.对于大多数项目,标准化为第三范式将是正常的.当您想要或多或少的规范化时,总会存在某些情况,但了解其背后的概念将允许您考虑如何以规范化格式构建数据库.

这是规范表的一个非常基本的例子:

students
  student_id
  student_name
  student_class
  student_grade
Run Code Online (Sandbox Code Playgroud)

一个包含各种数据的漂亮标准表,但我们可以立即看到一些问题.我们可以看到学生的名字取决于他的身份证,但是,学生可能参与多个班级,每个班级可能会有不同的等级.然后我们可以考虑这样的表格:

students
  student_id
  student_name

class
  class_id
  class_name
Run Code Online (Sandbox Code Playgroud)

这还不错,现在我们可以看到我们有各种各样的学生和各种班级,但我们没有抓住学生的成绩.

grades
  student_id
  class_id
  grade
Run Code Online (Sandbox Code Playgroud)

现在我们有了第3个表格,它允许我们理解特定学生,特定班级和与该班级相关的成绩之间的关系.从我们的第一个初始表开始,我们现在在规范化数据库中有3个表(假设我们不需要为了示例而进一步规范化成绩:))

我们可以从这个非常基本的例子中收集一些东西:

  • 我们的数据都绑定到某种键(student_id,class_id和student_id + class_id).这些是每个表中的唯一标识符.
  • 通过我们的关键关系,我们能够将信息相互关联(学生#4096注册了多少课程?)
  • 我们可以看到我们的表现在不包含重复数据(想想我们的第一个表,其中student_class对于许多学生来说可能是相同的值.如果我们必须更改类名,我们必须更新所有记录.规范化格式,我们只需更新class_id的class_name)


Joe*_*lla 3

您可以学习的有关数据库设计的主要技术称为数据库规范化

数据库规范化有其局限性,特别是当您有很多事务时。在某些时候,您可能被迫非规范化

但恕我直言,从规范化的数据库设计开始总是更好。