日期:2014-05-17  浏览次数:20821 次

大家来讨论一个数据库设计的问题
最近在一个公司兼职,看他们的数据库设计有很多冗余。比如说一个表中有了用户id还有用户名,当然这样的冗余还很多了。他们说加冗余可以提高查询速度,我也这么认为的。但是我们学习数据库的时候,说数据库的设计最好要达到第三范式,这和实际工作中不是冲突了吗?
我想请教一下大家,对这个问题的看法。

------解决方案--------------------
有时为了提高速度,也适当的增加冗余这段,这种以空间换时间的做法也值得提倡,但冗余字段太多了也不好
------解决方案--------------------
把握度吧,适当的冗余在现实中也是允许的。
------解决方案--------------------
有写是必须要的,用空间换时间

你写查询的时候用ID,但是客户要求看到的是NAME
问题出来了,如果没有冗余就要表关联,就会降低速度,那不如加个字段NAME少个关联查询出来
------解决方案--------------------
严格满足三范式的结构设计,是最省空间的设计,拥有最高的空间效率,但是数据库需要满足各种复杂需求综合考虑空间\时间效率,所以必须要有足够冗余来满足查询/数据覆写等需求,所以三范式是一种设计原则,而不是必须规则,系统设计必须为业务需求服务.