我从来没有创造了购物车,或论坛在php.除了观察和分析的另一个人的项目或观察教程,显示如何使这样一个项目或如何在这样一个项目。如何将一个人知道如何设计的数据库结构,以创建这样一个事情吗?im猜测其probbably通过试验和错误...

有帮助吗?

解决方案

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

数据库规范化有其限制,特别是如果您有许多事务。在某些时候,您可能被迫 Denormalize

但是,从标准化的数据库设计开始总是更好。

其他提示

你应该阅读和理解的基础知识 规范化.对于大多数项目,正常化的第3次正式会就好了。总是有某些情况下,当你想要更多的或不正常化,但是了解背后的概念将允许你来想想怎么你的数据库是结构化格式。

这是一个非常基本的例的正常化的一个表:

students
  student_id
  student_name
  student_class
  student_grade

一个漂亮的标准表包含各种数据,但我们可以看到一些问题。我们可以看到,一个学生的名称取决于他的身份证,但是,一个学生可能涉及多个类,每一类可能有不同的等级。然后我们可以认为有关表作为这样的:

students
  student_id
  student_name

class
  class_id
  class_name

这不是坏的,现在我们可以看到,我们有各种各样的学生,以及各种类,但是我们还没有抓获的学生的成绩。

grades
  student_id
  class_id
  grade

现在我们有一个第3表,这使我们能够理解之间的关系特别是学生,一个特定类和一级相关的这一类。从我们的第一个初始表,我们现在有3个表格的标准化数据库(假设我们不需要规范等级的任何进一步为例:))

几件事情我们可以搜集从这非常基本的例子:

  • 我们的数据是所有捆绑的一个关键的某种(student_id,class_id,并student_id+class_id).这些都是独特的标识符的内的各表。
  • 我们键关系,我们能够与信息向每个其他(如何的许多课程是学生#4096入?)
  • 我们可以看到,我们表将不包含重复的数据现在(考虑我们的第一个表,其中student_class可能是相同的价值为许多学生。如果我们不得不改变类的名称,我们就会有更新的所有记录。在我们准化的格式,我们可以就更新class_name的class_id)

我还建议使用可视化编辑器来创建数据库模式。我最近一直在使用: http://dev.mysql.com/workbench/

创建数据库设计后,让具有更多经验的人查看并给您反馈。但是要知道,尽可能多的时间花在设计上,你最终还是要做实施,并且会发现你错过了一些东西,或者可以用另一种方式做得更好。

所以,设计,获得反馈,但不要害怕改变。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top