数据库和第三范式

时间:2010-09-21 15:08:49

标签: database-design normalization third-normal-form

您是否始终至少以第三范式(3NF)设计数据库?为什么呢?

4 个答案:

答案 0 :(得分:5)

一般来说,我的目标是设计一个至少Boyce Codd / 5th Normal Form的数据库,除非我找到合理的理由。使用普通表格的主要原因是为了避免可能导致错误结果的冗余。另一个优点是,Normal Form有助于避免数据库设计中的“偏差”(倾向于比其他模式更适合某些使用模式),这使得随着需求的发展更容易支持模式更改。

答案 1 :(得分:1)

不,不总是。

你需要很好地理解普通形式,以避免做出愚蠢的错误。但是,出于方便或性能原因,有时它很有用。 (高速缓存)

我发现避免可能不同步的数据重复非常重要。 (更改了名称,重新安置了资源。)尽管如此,有时这正是您想要的。 (特定时间点的发票摘要。)

“dportas”有一个关于偏见的重要观点。打破正常形式规则往往会使您的代码和数据更易于维护和灵活。

答案 2 :(得分:1)

在当天,我使用ER建模进行数据分析,然后转换为关系模型,然后将关系模型转换为SQL表(及其索引)。这听起来很复杂,但事实并非如此。每个步骤都很简单且易于管理。

如果正确进行ER建模,则将每个属性与正确的实体或关系相关联。每个实体都有一把钥匙,无论是天然的还是合成的发现所有有用的关系是数据分析中最深层次的部分。

ER模型可以用作从属性中形成关系的指南。每个实体都获得一个关系,每个多对多关系都获得一个关系,而多对一关系在一个实体关系中获得一个外键。

这样的设计自动在3NF。离开BCNF,4NF和5NF的情况很少见。

根据关系制作SQL表非常简单。索引设计要求您预测卷,负载和资源,并且在某种程度上取决于DBMS。

答案 3 :(得分:0)

我至少会这样设计(除非我创建的数据仓库有不同的规则)。每当我看到人们试图在初始设计阶段进行非规范化时,他们就会创造出比他们解决的问题更多的问题。我每天都会诅咒那些人,因为我是修理这个垃圾的人。