2008-10-14 24 views

回答

3

您可以了解的关于数据库设计的主要技术称为Database Normalization

数据库规范化有它的限制,特别是如果你有很多事务。在某些时候,您可能会被迫到Denormalize

但是,imho最好从规范化的数据库设计开始。

+0

感谢您纠正拼写错误。我的英语是可怕的..我知道:( – 2008-10-15 06:36:38

17

你应该阅读和了解normalization的基础知识。对于大多数项目来说,规范化为第三范式将会很好。当你想要或多或少的标准化时,总是会有某些场景,但理解它背后的概念可以让你思考你的数据库是如何以规范化的格式来构建的。

这里有一个正常化表的非常简单的例子:包含各种数据

students 
    student_id 
    student_name 
    student_class 
    student_grade 

一个非常标准的表格,但我们可以看到一些问题的时候了。我们可以看到一个学生的姓名取决于他的ID,但是,一个学生可能参与不止一个班级,而每个班级可能会有不同的成绩。那么我们可以考虑一下表这样:

students 
    student_id 
    student_name 

class 
    class_id 
    class_name 

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

grades 
    student_id 
    class_id 
    grade 

现在我们有一个第三表,它可以让我们了解一个特定学生,特定类,以及与该类相关的等级之间的关系。从我们的第一个初始表中,我们现在在一个规范化的数据库中有3个表格(让我们假设我们不需要为了举例而进一步归一化等级:))

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

  • 我们的数据全部绑定到某种类型的关键字(student_id,class_id和student_id + class_id)。这些是每个表内的唯一标识符。
  • 我们可以将信息相互联系起来(有多少班是学生#4096报名?)
  • 我们可以看到我们的表现在不会包含重复的数据(想想我们的第一张桌子,其中student_class可能是很多学生相同的值。如果我们不得不改变类的名称,我们不得不更新所有的记录。在我们的标准化的格式,我们可以只更新的类标识码CLASS_NAME)
+0

优秀答案伙计 – jake 2008-10-25 18:43:32

1

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

一旦你创建了一个数据库设计,让有更多经验的人来看看它并给你反馈。但要知道,尽可能多地花费时间进行设计,最终必须执行并发现你错过了某些东西,或者可能以另一种方式做得更好。

因此,设计,获得反馈,但不要害怕改变。

相关问题