你如何教数据库规范化?

时间:2011-01-27 17:57:55

标签: database-design normalization

您的数据库规范化步骤和指南是什么?如果给一群具有良好计算机和逻辑技能的人,你如何向他们解释如何规范数据库设计?获取属性列表(字段)并将该列表转换为1NF数据库的思考过程是什么? 2NF? 3NF?

9 个答案:

答案 0 :(得分:4)

查看其中一些资源:

或者让您的朋友找到我学习数据库设计的最佳书籍:

Mike Hernandez的

Database Design for Mere Mortals(R): A Hands-On Guide to Relational Database Design (2nd Edition)

enter image description here

答案 1 :(得分:2)

我最喜欢的参考文献之一是Fundamentals of Relational Database Design

答案 2 :(得分:1)

假设他们已经了解基础概念(关系,候选键和功能依赖性),那么从BCNF开始。到目前为止,BCNF是最容易解释的,更重要的是2NF,3NF,在这个阶段最好被完全忽略。然后解释Join Dependency和5NF。

答案 3 :(得分:1)

我曾经在20世纪80年代向程序员讲过这些东西。他们中的许多人甚至从未使用过数据库,尽管他们使用COBOL,BASIC或C编程了十年或更长时间。

我曾经在进入数据库设计之前先详细讲授数据库编程。在进入数据库设计之前,我曾经使用ER教授概念数据建模。然后,当教学表组成时,归一化很自然地出现了。我只教过1NF,2NF和3NF,虽然如果我可以回去再做一次,我可能会包括BCNF。

护城河很重要,不要教它像是某种宗教。教导当你不遵循规范化规则时会发生什么,并让他们一瞥违反规范化可能有意义的情况。太多的初学者被教导这种东西就像违规是某种致命的罪。不是。

答案 4 :(得分:0)

只需要3nf并专注于rendundant数据,所有事情都会很简单。或者你可以走完全错误的道路并使用E / R图表来混淆他们的地狱!

答案 5 :(得分:0)

我的教学方式是从1NF,2NF 3NF BCNF等建立,作为历史课程类型的学习之旅。

这真的取决于你的观众,直接到3NF可能有点跳跃。

答案 6 :(得分:0)

最初的课程之一 - 也是最重要的课程之一 - 是普通表格适用于单个表格,而不适用于数据库。有意义地说,“表'wibble'在BCNF中”,但是说“这个数据库在3NF中”是没有意义的。

在处理数据库开发人员时,我经常看到两个大问题。

  1. 尝试基于列名称而不是代表性样本数据来规范化表格。
  2. 不了解功能依赖。
  3. 这两者是相互关联的,因为功能依赖性是根据值定义的,而不是根据列名称定义的。

答案 7 :(得分:0)

确保他们理解规范化规则是一项长期投资,而这些规则是根据必须维护非规范化数据库的经验而创建的。

答案 8 :(得分:0)

我发现教好设计更重要(在适当的时候使用连接表,知道何时使用NULL,何时使用代理键,......)当这个概念明确时,告诉他们:你做的是实际上是1,2,3,......因为......

这样一来,理论并没有阻止你,你可以设计好数据库,后来知道它是什么。

相关问题