当前位置:编程学习 > C#/ASP.NET >>

什么是数据库冗余,如何避免数据库冗余?

如果不清理数据库冗余会导致什么后果? --------------------编程问答-------------------- 占空间 --------------------编程问答-------------------- 比如数据库设计的不好
某一字段下出现大量重复数据

我觉得这也算是一种冗余
设计数据库的时候尽量想的周全一点
尽量的遵循范式(当然也不是必须遵守)
--------------------编程问答-------------------- 一般设计数据库是都在达到3范式或更高,否则数据的冗余程度非常高。同时有时也得有一定的冗余,否时在查询数据时很不方便 --------------------编程问答-------------------- 需不需要数据冗余,这个要根据具体的需求来看吧! 并不是说设计的数据库的范式越高越好。有的时候范式越高反而更加麻烦。而且有的情况下数据冗余 也会带来很大的方便。不过冗余会占用磁盘空间。 --------------------编程问答-------------------- 一点冗余没有,也不好。查询时间会变长。
适当的增加冗余,可以提高查询速度,也可以保证数据更好恢复。 --------------------编程问答-------------------- 数据冗余,最简单的例子。
有一个学生班主任表字段如下(班主任和学生的关系是1:N)
学生ID  学生姓名  班主任ID 班主任姓名 班主任家庭住址

那么这里,我们每插入一条学生记录,都必须要插入一次班主任的姓名和家庭住址信息,这就是典型的数据冗余。
这样的冗余带来的麻烦就是:
1。班主任姓名和住址要多次插入同样数据,存在插入错误的危险。
2。班主任搬家了。。。那么要更新班主任家庭住址N次~
。。。

这只是一个很简单的例子,楼主可以举一反三~ --------------------编程问答-------------------- 避免数据冗余的方法就是无损分解(拆分到BC范式就可以)~ 这个楼主可以去查查书看看
对于上面的小例子就是,拆分表
上面的例子有依赖关系
学生ID=>学生姓名
学生ID=>班主任ID ===>(班主任姓名,班主任家庭住址) 传递依赖
班主任ID=>班主任姓名
班主任ID=>班主任家庭住址 

表拆分为
学生班主任表
学生ID 学生姓名 班主任ID

班主任表
班主任ID 班主任姓名 班主任住址 --------------------编程问答-------------------- 不错不错  楼上的很好用 强调下实际设计中依据需要允许数据冗余的
只是我们要尽量避免数据冗余
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,