数据冗余指数据之间的重复,也可以说是同一数据存储在不同数据文件中的现象。可以说增加数据的独立性和减少数据冗余为企业范围信息资源管理和大规模信息系统获得成功的前提条件。
数据冗余会妨碍数据库中数据的完整性(integrality),也会造成存贮空间的浪费。尽可能地降低数据冗余度,是数据库设计的主要目标之一。关系模式的规范化理沦(以下称NF理论)的主要思想之一就是最小冗余原则,即规范化的关系模式在某种意义上应该冗余度最小。
但是,NF理论没有标准的概念可用,按等价原则,在有或没有泛关系假设(universal relation assumption)等不同前提下,冗余的定义可能有好几种。
数据的应用中为了某种目的采取数据冗余方式。
1、重复存储或传输数据以防止数据的丢失。
2、对数据进行冗余性的编码来防止数据的丢失、错误,并提供对错误数据进行反变换得到原始数据的功能。
3、为简化流程所造成额数据冗余。
4、为加快处理过程而将同一数据在不同地点存放。
5、为方便处理而使同一信息在不同地点有不同的表现形式。
6、大量数据的索引,一般在数据库中经常使用。
7、方法类的信息冗余。
8、为了完备性而配备的冗余数据。
9、规则性的冗余。根据法律、制度、规则等约束进行的。
10、为达到其他目的所进行的冗余。
数据冗余的缺点:
1、存储空间的浪费。
2、数据交互和数据库访问执行效率降低。
但适当的数据冗余又能加快查询。数据冗余究竟是好是坏还是要根据自己所做的项目进行合理的取舍。
当同一数据块存储在两个或多个单独的位置时, 就会发生数据冗余。假设创建了一个数据库来存储销售记录, 并在每个销售的记录中输入客户地址。但是,有多个销售到同一客户,因此同一地址被多次输入。重复输入的地址是冗余数据。
扩展资料
一定的冗余可以提升性能
1、空间换时间
有一张字典表 city 其中有 id 和 cityName 两个字段,有一张业务表,其中有 id 、cityId、XXX、XXX…字段。如果查询业务表的话,就必须 join 一下 city 字典表,如果业务表很大很大,那么就会查询的很慢,这个时候我们就可以使用冗余来解决这个问题。
直接将业务表中的 cityId 更换成 cityName,这样我们在查询业务表的时候就不需要去 join 那一张 city 的字典表了。这样的方式显然是不符合我们数据库设计的范式的,但是这样的冗余或许很有必要。
2、查询某一个状态值数据
业务表中有一个字段 status 用来存储提交和未提交,假设这张表中未提交的数据相对于提交的数据是很少的,当用户查询所有未提交的数据的时候,就需要在全部的数据,然后筛选出未同意的数据。如果这张业务表非常的庞大,那么这样的查询的效率就非常的慢。
这个时候我们就可以把这张业务表中的未同意的数据冗余到一张新表中,这样用户查询未提交的数据的时候就可以直接在这张未提交的表中查询,查询速度提交很多。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)