1、存储空间的浪费。
2、数据交互和数据库访问执行效率降低。
但适当的数据冗余又能加快查询。数据冗余究竟是好是坏还是要根据自己所做的项目进行合理的取舍。
当同一数据块存储在两个或多个单独的位置时, 就会发生数据冗余。假设创建了一个数据库来存储销售记录, 并在每个销售的记录中输入客户地址。但是,有多个销售到同一客户,因此同一地址被多次输入。重复输入的地址是冗余数据。
扩展资料
一定的冗余可以提升性能
1、空间换时间
有一张字典表 city 其中有 id 和 cityName 两个字段,有一张业务表,其中有 id 、cityId、XXX、XXX…字段。如果查询业务表的话,就必须 join 一下 city 字典表,如果业务表很大很大,那么就会查询的很慢,这个时候我们就可以使用冗余来解决这个问题。
直接将业务表中的 cityId 更换成 cityName,这样我们在查询业务表的时候就不需要去 join 那一张 city 的字典表了。这样的方式显然是不符合我们数据库设计的范式的,但是这样的冗余或许很有必要。
2、查询某一个状态值数据
业务表中有一个字段 status 用来存储提交和未提交,假设这张表中未提交的数据相对于提交的数据是很少的,当用户查询所有未提交的数据的时候,就需要在全部的数据,然后筛选出未同意的数据。如果这张业务表非常的庞大,那么这样的查询的效率就非常的慢。
这个时候我们就可以把这张业务表中的未同意的数据冗余到一张新表中,这样用户查询未提交的数据的时候就可以直接在这张未提交的表中查询,查询速度提交很多。
数据分析
数据库冗余数据分析

雨墨轩
原创
关注
0点赞·5681人阅读
这是之前的文章了,以前在百度放着,发现各种的不方便,今天就拉了过来,读者阅过的就…………无视吧:)
数据库设计时需要考虑的一个问题是:由于各种原因导致的数据冗余,也就是在数据库中同一个信息由多于一个的存储,其弊端显而易见,有以下几种:
1、 浪费存储资源;
2、 在维护数据库时,耗费更多的时间与空间,具体体现在插入,修改,删除等 *** 作;
但是,冗余数据的存在也有其有利的一面:
1、 保证数据安全;
2、 提高性能;
数据冗余具体体现在物理层面以及逻辑结构层面。
数据库物理层面的冗余指数据库存储的硬件资源的冗余,逻辑结构层面的冗余是指包括表、记录、字段、属性值以及索引、数据字典中的冗余,由于数据库逻辑实现的基础是各种硬件资源,所以物理层面的冗余影响数据库逻辑结构的设计,并且逻辑结构层面的冗余最终会体现在物理层面上。
在设计数据库时,冗余表和冗余记录很常见,像临时表(常用于复杂关系运算),一些可以通过其他表中数据通过函数运算得到的字段等。
属性冗余包括不同表属性以及同表属性冗余,不同表属性冗余常用于解决建立表与表之间的联系,同一表中的属性冗余应该尽力避免。
为了度量冗余度,规范化理论把关系分成以下几级:
第一范式:设 R 是一个关系模式,如果 R 中的每一个属性 A 的值域中的每个值都是不可分解的,则称 R 是属于第一范式的,记作 R ∈ 1NF。
第二范式:如果关系 R ∈ 1NF,并且 R 中每一个非主属性完全函数依赖于任一个候选码,则 R ∈ 2NF。
地三范式:如果关系 R ∈ 2NF,并且 R 中每一个非主属性对任何候选码都不存在传递函数依赖,则 R ∈ 3NF 。
随着时间发展,以后又提出了BCNF范式、4NF、5NF等。
最后给出关系数据库之父EFCodd提出的关系型数据库设计的十二个基本准则:
1、 信息准则:关系数据库中的所有信息都应在逻辑层上用表中的值显式的表示。
2、 保证访问准则:依于表名,主键和列名,保证能以逻辑方式访问数据库中的每个数据项。
3、 空值的系统化处理: RDBMS支持空值(不同于空的字符串或空白字符串,并且不为0)系统化的表示缺少的信息,且与数据类型无关。
4、 基于关系模型的联机目录:数据库的描述在逻辑上应该和一般数据采用同样的方式,使得授权用户可以使用查询一般数据所用的关系语言来查询数据库的描述信息。
5、 合理广泛的子语言准则:一个关系系统可以具有几种语言和多种终端使用方式(表格填空方式,命令方式等)。但是必须有一种语言,它的语句可以表示为具有严格语法规定的字符串,并能全面的支持以下功能:数据定义,视图定义,数据 *** 作,完整约束,授权,事物控制。
6、 视图更新准则:所有理论上可更新的视图也应该允许由系统更新。
7、 高阶的插入,更新和删除:把一个基本关系或导出关系作为一个 *** 作对象进行数据的检索以及插入,更新和删除。
8、 数据的物理独立性:无论数据库的数据在存储表示上或存取方法上做任何变化,应用程序和终端活动要都保持逻辑上的不变性。
9、 数据的逻辑独立性:当基本表中进行理论上信息不受损害的任何变化时,应用程序和终端和终端活动都要保持逻辑上的不变性。
10、 数据完整的独立性:关系数据库的完整性约束必须是用数据子语言定义并存贮在目录中的,而不是在应用程序中加以定义的。至少要支持以下两种约束:实体完整性:主键中的属性不允许为NULL ; 参照完整性:对于关系数据库中每个不同的非空的外码值,必须存在一个取自同一个域匹配的主键值。
11、 分布的独立性:一个RDBMS应该具有分布独立性。用户不必了解数据库是否是分布式的。(无论数据库是否有部分处于复杂多重环境中)
12、 无破坏准则:若RDBMS有某种低级语言,这一低级语言不能违背或绕过完整性准则以及高级关系语言表达的约束。
您好:
数据冗余或者信息冗余是生产、生活所必然存在的行为,没有好与不好的总体倾向。
一般设计数据库是都在达到3范式或更高,否则数据的冗余程度非常高。
通常在设计的时候,需要考虑扩展性,阅读性,响应时间和语句复杂程度等。
需要有一定的冗余来达到维护需要,这往往是经验丰富的开发人员和DBA来考虑的。
数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改和检索由统一软件进行管理和控制。从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。
数据库的基本结构分三个层次,反映了观察数据库的三种不同角度。
(1)物理数据层。它是数据库的最内层,是物理存贮设备上实际存储的数据的集合。这些数据是原始数据,是用户加工的对象,由内部模式描述的指令 *** 作处理的位串、字符和字组成。
(2)概念数据层。它是数据库的中间一层,是数据库的整体逻辑表示。指出了每个数据的逻辑定义及数据间的逻辑联系,是存贮记录的集合。它所涉及的是数据库所有对象的逻辑关系,而不是它们的物理情况,是数据库管理员概念下的数据库。
(3)逻辑数据层。它是用户所看到和使用的数据库,表示了一个或一些特定用户使用的数据集合,即逻辑记录的集合。
数据库不同层次之间的联系是通过映射进行转换的。数据库具有以下主要特点:
(1)实现数据共享。数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。
(2)减少数据的冗余度。同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据,减少了数据冗余,维护了数据的一致性。
(3)数据的独立性。数据的独立性包括数据库中数据库的逻辑结构和应用程序相互独立,也包括数据物理结构的变化不影响数据的逻辑结构。
(4)数据实现集中控制。文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。
(5)数据一致性和可维护性,以确保数据的安全性和可靠性。主要包括:①安全性控制:以防止数据丢失、错误更新和越权使用;②完整性控制:保证数据的正确性、有效性和相容性;③并发控制:使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用;④故障的发现和恢复:由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏
以上就是关于数据库中数据冗余会产生什么问题全部的内容,包括:数据库中数据冗余会产生什么问题、冗余分析为什么缺少数据库、什么是数据库冗余,如何避免数据库冗余等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)