日期:2014-05-18  浏览次数:20396 次

【十万火急】数据库规范化问题!!!作业马上要交了!
分别说出数据库规范化和反规范化的两个优缺点并举例证明。

简要说明就好~~

小女子谢谢大家了。。。



------解决方案--------------------
当一个表是规范的,则其非主码列依赖于主码列。从关系模型的角度来看,表满足3NF最符合标准,这样的设计容易维护。一个完全规范化的设计并不总能生成最优的性能,因此通常是先按照3NF设计,如果有性能问题,再通过反规范来解决。 

数据库中的数据规范化的优点是减少了数据冗余,节约了存储空间,相应逻辑和物理的I/O次数减少,同时加快了增、删、改的速度,但是对完全规范的数据库查询,通常需要更多的连接操作,从而影响查询的速度。因此,有时为了提高某些查询或应用的性能而破坏规范规则,即反规范。 

反规范的好处 

是否规范化的程度越高越好?这要根据需要来决定,因为“分离”越深,产生的关系越多,关系过多,连接操作越频繁,而连接操作是最费时间的,特别对以查询为主的数据库应用来说,频繁的连接会影响查询速度。所以,关系有时故意保留成非规范化的,或者规范化以后又反规范了,这样做通常是为了改进性能。例如帐户系统中的“帐户”表B-TB01,它的列busi-balance(企业帐户的总余额)就违反规范,其中的值可以通过下面的查询获得:


select busi-code,sum(acc-balance)from  B-TB06group by busi-code 


如果B-TB01中没有该列,若想获得busi-name(企业名称)和企业帐户的总余额,则需要做连接操作:


select busi-name,sum(acc-balance) from B-TB01,B-TB06where B-TB01.busi-code=B-TB06.busi-codegroup by busi-code 


如果经常做这种查询,则就有必要在B-TB01中加入列busi-balance,相应的代价则是必须在表B-TB06上创建增、删、改的触发器来维护B-TB01表上busi-balance列的值。类似的情况在决策支持系统中经常发生。 

反规范的好处是降低连接操作的需求、降低外码和索引的数目,还可能减少表的数目,相应带来的问题是可能出现数据的完整性问题。加快查询速度,但会降低修改速度。因此决定做反规范时,一定要权衡利弊,仔细分析应用的数据存取需求和实际的性能特点,好的索引和其它方法经常能够解决性能问题,而不必采用反规范这种方法。


------解决方案--------------------
顶1楼,学习了!
------解决方案--------------------
1楼说得很不错了
------解决方案--------------------
我拿分也比较给力,呵呵