我和我的两个同事正在建立一个系统,用来做各种水文学和相关的事情。它有很多要求,并且有大量的表。
我们正在处理在这个范围内(水文学)进行的各种采样,我们正在试图找出一种不那么痛苦的方法。
有时我们需要把所有的采样放在一起,我开始认为我们的数据库设计过于复杂了。
您如何或何时知道您过度设计了数据库?当然,我们正在考虑很多范式规则和其他好的实践,但是什么时候可以放弃其中的一个规则,例如不规范化某些东西?
你对此有何看法?
发布于 2010-02-05 07:27:53
Short Answer
你不能担心别的事情。
Long Answer
这听起来像是另一种形式的premature optimization。(YAFPO?)
您应该使用third normal form (3NF)设计您的模式。设计完成后,您应该用数据填充表并开始分析。
如果某个特定的查询被认为代价太高,那么您应该逐个案例地研究denormalization。
技术答案(针对那些挑剔的人,他们不可避免地会反对:“你不能”)
根据您选择的RDBMS和/或存储引擎,您将在某一时刻达到一个限制。可能的上限是内存消耗或打开的文件描述符。
发布于 2010-02-05 07:27:06
我们有一个拥有数百个表的系统--这没什么大不了的,只是有很多不同的东西被存储在数据库中。
发布于 2010-02-05 09:23:01
“什么时候你的表太多了?”
在逻辑设计的层面上,正确的答案是“从不”。
在物理设计级别(“拥有一个表”实际上指的是与物理设计相关的一些概念),正确的答案是“如果以及何时您需要执行的查询,由于您正在使用的DBMS的限制,导致性能低到无法接受的程度”。
https://stackoverflow.com/questions/2203967
复制相似问题