此文出处:http://database.ctocio.com.cn/205/9276705.shtml
作为数据库的开发者,我们经常面临着要找出及删除数据库中冗余数据的任务,如果数据库中有大量的冗余数据(占总数的百分比太多),数据的精确性和可靠性将受到影响,同时也影响着数据库的性能,那么如何解决这个问题呢?下面我将探讨关于这个问题的这个解决方案,oracle也为我们提供了一个解决方案,但是Oracle提供的解决方案不够完美,遇到大批量数据那个解决方案工作起来很慢应该怎么删除冗余数据呢?
在这里我们应用一个PL/SQl方案(一个自定义的存储过程)或者一个SQL语句的解决方案(使用一个分析的函数RANK()和一个嵌套的子查询)来消除冗余数据然后控制应该保留的记录
什么是冗余数据?
冗余数据就是一个数据表中,这个表中的行包含了一些相同的值,这些值理论上来说应该是唯一的(这些值一般来说能确定一条记录)例如,像社会保险号,姓与名的集合.那么我们把这么含有相同信息的行中包含的数据叫做冗余数据,现在所有的数据库表中都有主键约束,主键中记录了一行记录中的唯一值,从数据库的角度来看,每一行都是唯一的,但是从我们用户角度看来,这些记录都是相同的记录,因为它们都包含相同的键值(First Name + Last Name),即使他们有不同的主键
ID Last Name First Name City Phone
---- --------------- ---------- --------------- ----------
1005 Krieger Jeff San Ramon 9252997100
1012 Krieger Jeff San Ramon 9252997100
1017 Krieger Jeff San Ramon 9252997100
那么这些冗余数据是怎么出现的那?通常有两种情况:1.从不同的表中加载或者合并数据通过图形化的用户接口来输入数据,然后由计算机来生成一个唯一的键,并做为这一条记录的主键那么怎样找到冗余数据呢?让我们来创建一个叫作Customer 的表并向其中加入冗余数据,看表1,正如你所看到的,我们并没有在这个表上做什么限制来防止冗余数据,下面这么代码创建了一个唯一约束,来防止冗余数据的生成
SQL
Listing 1. 创建Customer表
这个表中我们故意加入了冗余数据
DROP TABLE Customers CASCADE CONSTRAINTS;
CREATE TABLE Customers(
Id INTEGER NOT NULL, LastName VARCHAR2(15) NOT NULL, FirstName VARCHAR2(10), Address VARCHAR2(20), City VARCHAR2(15), State CHAR(2), Zip VARCHAR2(10),
Phone VARCHAR2(10)
CONSTRAINT Customers_PK
PRIMARY KEY (ID))
TABLESPACE TALLYDATA;
COMMIT;
看下面的代码我在姓,和名这两个字段上加上唯一约束,(当然你可以在创建表的时候加上这一约束,来防止冗余数据)
ALTER TABLE Customers
ADD CONSTRAINT Customers_LastFirst
UNIQUE (LastName, FirstName);
Customer表中的冗余键是LastName和FirstName的集合,我们把含
有冗余键的数据进行分组并进行统计.
SELECT LastName, FirstName, COUNT(*) FROM Customers GROUP BY LastName, FirstName ORDER BY LastName, FirstName;
Listing 2显示了这条语句的输出,我们可以看到有三行的输出大于1,这也就意味
着表中含有3组冗余数据.
Listing 2. 找出冗余
LASTNAME FIRSTNAME COUNT(*)
--------------- ---------- ----------
Blake Becky 1
Blue Don 1
Bradley Tom 1
Chang Jim 1
Griffith David 1
Hill Larry 1
King Chuck 1
Krieger Jeff 3
Loney Julie 1
Lord Don 1
Mason Paul 1
Monroe John 1
Simon Michael 2
Stone Tony 5
14 rows selected.
我们在语句中加入Having()语句来过滤出非冗余数据.
SELECT LastName, FirstName, COUNT(*)
FROM Customers
GROUP BY LastName, FirstName
HAVING COUNT(*) > 1;
SQL
分享到:
相关推荐
在实际的数据库管理中,除了使用查询和删除操作来处理冗余数据外,还可以通过优化数据库设计、改进数据录入流程、使用数据库触发器和约束等手段来预防冗余数据的产生。另外,对于数据备份和恢复机制的建立也非常重要...
在数据库管理中,冗余数据是一个常见的问题,它可能导致数据不一致、存储浪费以及增加维护难度。本主题将深入探讨如何处理单个表中的冗余数据,以保持数据的完整性和有效性。 首先,理解冗余数据的概念至关重要。...
在《关系数据库的数据冗余》这篇论文中,作者浦路平探讨了数据冗余这一关键问题,它指的是数据库中相同信息的重复存储,这可能导致资源浪费并可能引发一致性问题。 数据冗余可以分为两类:必需的数据冗余和非必需的...
"01-SDE清除冗余数据工具.rar" 是一个针对ArcGIS 9.3环境的实用工具,旨在帮助用户有效地清理数据库中的冗余数据。这个压缩包包含了三个关键文件,每个文件都针对特定的数据清理任务。 首先,`SDE清除冗余数据工具....
通过结合传统的算法和改进,本文的研究旨在找到解决分布式数据库系统中数据片段冗余分配问题的相对最优方法。通过从数据被访问和场地事务访问类型来分类数据分配,并采用通信代价来衡量算法效率,提出了有效的数据分...
在设计过程中,遵循一定的规范化理论,如第一范式到第三范式或更高的BCNF,以确保数据库结构合理、避免数据冗余和更新异常等问题。 数据库查询语言主要指的是结构化查询语言(SQL),它是一种用于存取数据的标准化...
sqlite数据库文件经多次添加删除操作后 文件占用磁盘空间过大 c++压缩文件代码 sqlite数据库文件经多次添加删除操作后 文件占用磁盘空间过大 c++压缩文件代码 测试调用TestFunction.h文件 bool commit_vacuum...
在使用WordPress构建网站时,随着时间的推移,网站内容不断更新和增加,数据库中会产生一些冗余数据。这不仅占用不必要的存储空间,而且可能导致数据库查询速度下降,影响网站的整体性能。因此,及时的数据库优化和...
综上所述,“一种适用于广域分布式实时数据库的冗余备份方法”涉及的内容涵盖了数据库冗余备份策略、实时性保障、故障恢复机制以及安全性等多个重要方面。这些技术与实践对于构建健壮、可靠的分布式系统具有重要意义...
通过实例演示了前四种范式在数据库设计中的应用,这些范式在实际设计中能够帮助设计者构造出结构良好、符合规范的关系模式,从而避免数据操作中出现异常情况,并减少数据库中冗余数据的产生。 从这些概念中我们可以...
都会产生相关的日志以记录此次操作,这些数据大多数情况下对于博主来说并没有什么用,持续的增加,反而加大了数据库的容量,进而加长了前台文章的查询时间,所以,删除冗余的数据、优化数据库,就变得尤为重要。...
这两个字段是重复的,这就是数据冗余,我们设计数据库是不要出现冗余信息,为啥我们用冗余呢。 主要是为了出于对查询性能的考虑。 我们在这里做了数据冗余,我们就可以减少对图片表的查询,加速查询速度! 不过推荐...
本文将深入探讨数据库大数据量存储的相关知识点,包括存储架构、数据分片、分布式存储、数据压缩、数据冗余以及性能优化策略。 首先,我们需要理解传统的单机数据库在面对大数据时的局限性。单机数据库在存储容量和...
- **低冗余性**:相比文件系统,数据库通过规范化等技术减少了数据冗余,从而避免了数据不一致的问题。 - **高数据独立性**:数据库设计时考虑到了逻辑独立性和物理独立性,这意味着当数据的存储结构或逻辑结构发生...
2. 数据冗余度小:数据库系统的数据冗余度小,减少了数据的存储空间,防止了数据统计错误。 3. 数据和程序之间具有较高的独立性:数据库管理系统通过DBMS对数据的安全性和完整性的控制,提高了数据的安全性。 ...
在大型共享数据库中,这些完整性约束尤其重要,因为它们防止了数据的误删、误改和冗余。 4. 并发控制:在多用户环境中,并发控制机制如锁定、多版本并发控制(MVCC)和两阶段提交协议等,确保了数据的一致性,避免...
冗余数据是数据库设计中的一个常见概念,指的是在数据存储时故意存储超出实际需要的数据。这样做可以增加数据库的查询效率,但也可能带来数据一致性维护的复杂性。树型关系数据结构是一种常见的数据组织形式,尤其是...
这些复杂的数据虽然利用关系数据库也可以进行管 理,但是这样会带来大量的冗余。互联网上的数据与传统的事务数据库与数据仓库都不同,其特点可以表现为模式不明显, 经常有缺失信息,对象结构比较复杂。现代信息集成...
数据库系统由于能减少数据冗余,提高数据独立性,并集中检查▁▁▁▁,由此获得广泛的应用。数据库提供给用户的接口是▁▁▁▁,它具有数据定义、数据操作和数据检查功能,可独立使用,也可嵌入宿主语言使用。▁▁▁...
首先,数据是描述事物的符号记录,它是数据库中的基本元素。数据库(DB)是这些数据的有序集合,存储在计算机中,供多个用户共享和使用。数据库管理系统(DBMS)是用于创建、管理、访问数据库的软件,它提供了数据...