数据冗余的缺点:
1、存储空间的浪费。
2、数据交互和数据库访问执行效率降低。
但适当的数据冗余又能加快查询。数据冗余究竟是好是坏还是要根据自己所做的项目进行合理的取舍。
当同一数据块存储在两个或多个单独的位置时, 就会发生数据冗余。假设创建了一个数据库来存储销售记录, 并在每个销售的记录中输入客户地址。但是,有多个销售到同一客户,因此同一地址被多次输入。重复输入的地址是冗余数据。
扩展资料
一定的冗余可以提升性能
1、空间换时间
有一张字典表 city 其中有 id 和 cityName 两个字段,有一张业务表,其中有 id 、cityId、XXX、XXX…字段。如果查询业务表的话,就必须 join 一下 city 字典表,如果业务表很大很大,那么就会查询的很慢,这个时候我们就可以使用冗余来解决这个问题。
直接将业务表中的 cityId 更换成 cityName,这样我们在查询业务表的时候就不需要去 join 那一张 city 的字典表了。这样的方式显然是不符合我们数据库设计的范式的,但是这样的冗余或许很有必要。
2、查询某一个状态值数据
业务表中有一个字段 status 用来存储提交和未提交,假设这张表中未提交的数据相对于提交的数据是很少的,当用户查询所有未提交的数据的时候,就需要在全部的数据,然后筛选出未同意的数据。如果这张业务表非常的庞大,那么这样的查询的效率就非常的慢。
这个时候我们就可以把这张业务表中的未同意的数据冗余到一张新表中,这样用户查询未提交的数据的时候就可以直接在这张未提交的表中查询,查询速度提交很多。
2024-10-28 广告
2,增大表所占的空间,导致不必要的硬盘浪费
3,导致查询效率低下。
如果你要问的是怎样叫做数据冗余,那么,我假设你有两张表。一张是订单主表,上面记录订单编号、订单日期,总金额等信息;另一张表记录订单里面的物品明细。如果你在物品明细表里面也记录了订单的编号和日期信息,则,当你用前台程序修改了订单主表的订单编号之后,再用此编号在明细表里面搜索这个编号对应的订单,则找不到;当然,你可以同步修改两个表的订单编号,但这也是一种效率的浪费。那么,这个时候,我就说,你的明细表里面的订单编号和日期是冗余数据。
冗余数据通常是应该避免的,不过有时为了实现特定的功能,也会有意识地采用冗余设计。
数据库设计中,要尽可能降低数据冗余,达到数据的简洁,易用
为了达到最低冗余,在设计中进行模式的规范化,一般达到BC范式的情况下,就可以大幅度第降低数据冗余。
数据冗余决不能完全消除,除非只有一个表。