您总是以至少第三范式(3NF)来设计数据库吗?为什么?
发布于 2010-09-21 23:20:41
一般来说,我的目标是设计一个至少Boyce Codd / find范式的数据库,除非我找到了很好的理由不这样做。使用范式的主要原因是避免冗余,否则可能导致不正确的结果。另一个优点是,Normal Form有助于避免数据库设计中的“偏见”(倾向于更适合某些使用模式),这使得随着需求的发展更容易支持模式更改。
发布于 2010-09-21 23:32:58
不,并不总是这样。
你需要很好地理解范式,以避免犯愚蠢的错误。但出于方便或性能方面的原因,有时它也很有用。(缓存)
我发现最重要的是避免可能不同步的数据重复。(更改名称,重新定位资源。)尽管如此,有时这正是你想要的。(特定时间点的发票汇总。)
"dportas“有一个关于偏见的重要观点。打破范式规则往往会降低代码和数据的可维护性和灵活性。
发布于 2010-09-22 17:37:31
以前,我使用ER建模进行数据分析,然后转换为关系模型,然后将关系模型转换为SQL表(及其索引)。这听起来很复杂,但事实并非如此。每一步都很简单且易于管理。
如果您正确地进行了ER建模,则可以将每个属性与正确的实体或关系相关联。每个实体都有一个密钥,不管是自然的还是合成的。发现所有有用的关系是数据分析最深层的部分。
ER模型可以作为在属性之外形成关系的指南。每个实体都有一个关系,每个多对多关系都有一个关系,而多对一关系在其中一个实体关系中有一个外键。
这样的设计在3NF中是自动的。偏离BCNF、4NF和5NF的情况很少见。
基于关系制作SQL表非常简单。索引设计要求您预测容量、负载和资源,并且在某种程度上依赖于DBMS。
https://stackoverflow.com/questions/3761665
复制相似问题