admin管理员组文章数量:1530842
2023年12月29日发(作者:)
数据库回收站设计
“数据库回收站”的设计
【摘要】该文分析了数据库安全性的缺憾,创造性地提出了“数据库回收站“的数学模型、工作方法和实现方法。它方便易行,可移植性强,不仅适用于信息管理系统,也适用于数据库管理系统及其前台开发工具的开发。数据库,从原理上来说就是一个数据字典,放置用户Drop掉的数据库对象信息。用户进行Drop操作的对象并没有被数据库删除,仍然占用空间,除非是由于手工进行Purge或者以为存储空间不够而被数据库情掉。数据库有了这样的功能。能够减少很多不必要的麻烦。
【关键词】
数据库 行树 回收和恢复 数学模型 触发器
引言
在“数字化生存”的今天,数据库与人工智能、计算机网络并陈为计算机领域的三大热点。对信息管理系统(MIS)而言,在其后台,数据库开发商利用Client/Server体系结构及其事务管理,备分/恢复等技术,为数据的安全性、完整性提供了强大的支持;但是在其前台,MIS开放者对数据库安全性的处理仍然很脆弱,常常只能郑重而无助地询问“真的删除吗?”由于被删除数据可能很大,若发生误删除、特别是较长时间以后才发现往日的误删除,损失将是惨重且不可避免的;即便利用数据库备份/恢复功能,也要在“熊掌”和“鱼”(被误删除数据和近期修改)之间作出不可兼得的抉择。脆弱的前台安全措施,与对数据安全的日益增长的社会需要极不相称。解决这一问题的根本办法,不在于MIS用户的慎重,而在于MIS、MIS开发工具和数据库管理系统(DBMS)开发商如何处理删除操作。该文介绍的“数据库回收站”(Database Recycler,DBR),类似于Windows系列 “回收站”,利用它,完整的数据单元可以在数据库与回收站之间反反复复地回收和恢复,毫不失真,且保证数据的相关完整性、合理性。它具有使用简便、可移植性强等特点,适用于OracleSybaseFoxBase等各种DBMS和PowerBuilderVisual FoxPro等各种前台开发工具。
1数据库回收站的介绍
1.1数据库回收站的定义
数据库回收站简单地说,就是一个“垃圾桶”。当我们在处理数据时,如果此数据没有多大用处,又过多的占用我们的硬盘空间,我们可以把它们从硬盘上删除掉,而删除的数据就放进我们的回收站里,进行统一处理。若是误删除的数据,我们可以还原此数据。否则,也可以清除我们的回收站。
第1页
数据库回收站设计
1.2 数据库回收站的功能
⑴回收垃圾文件
⑵待机时可保存回收站的内容
⑶对回收站内容统一处理
①还原
由于操作失误,把本来很重要的数据误删除了,我们可以通过回收站的还原功能实现数据还原,此项功能减少了许多不必要的麻烦。
②清空回收站
由于回收站的垃圾数据过多,而过多的占用我们的硬盘空间,此时可通过清空回收站功能,实现清空回收站全部内容,还原回收站一片“干净”境地。
2、数据库回收站设计的相关语言介绍
2.1 SQL介绍
2.1.1 基本概念
SQL(structured Query language)关系数据库标准语言,又称为结构化查询语言,是关系数据库管理系统中最流行的数据查寻和更新语言,用户可以使用SQL语言对数据库执行各种操作。
2.1.2 SQL的功能
①数据定义功能
SQL的数据定义功能通过DDL(Data Definition Language,数据定义语言)实现,它用来定义数据库的逻辑结构,包括定义基本表、视图和索引。基本的DDL包括三类,即定义、修改和删除。
②数据操纵功能
SQL的数据操纵功能通过DML(Data Manipulation Language,数据操纵语言)实现,它包括数据查询和数据更新两大类操作,其中数据查询和数据更新两大类操作,其中数据查询第2页
数据库回收站设计
指对数据库中的数据进行查询、统计、分组、排序、检索等操作;数据更新包括插入、删除和修改三种操作。
③数据控制功能:
数据库的控制指数据库的安全性和完整性控制。
SQL的数据控制功能通过DCL(Data Control Language,数据控制语言)实现,它包括对基本表和试图的授权、完整性规则的描述以及事务开始和结束等控制语句。
2.2 VB的介绍
Visure Basic使用直观的编程方法,通过使用窗体、控件(如各种按钮、文本框、复选框、图片框等)来设计工程界面,并通过对控件的属性进行设置来改变其外观.编程时只需对每个对象的事件过程模块花编程,而无需编写大量的代码去描述界面元素的外观和位置,就能方便快捷地创建出功能强大的应用程序.
数据库回收站的设计思想是以VB作为用户界面,然后与SQL连接,实现数据库与回收站之间反反复复地回收和恢复,毫不失真,且保证数据的相关完整性、合理性
3、数据库回收站的工作原理
存在依赖关系普遍存在于数据库物理表(Table,简称表)之间,所以删除某表一行(Row,亦即记录Record)时,必须充分考虑对其它表的影响,保证表间的完整性。这就是说,某表的一行,与分布在其它表中、与该行具有存在依赖关系的所有行,共同构成一个通常呈树状结构的完整的可删除单元,称为行树。例如图1所示“人员挡案数据库”:人员表的行树,就是由人员表的一行(根)和简历表、爱人表、参加社会团体表中该人员的行(根的子结点)构成的两层数;单位表的一个行树,就是由单位表的一行和人员表、简历表、爱人表、参加社会团体表中该人员的行构成三层树;简历表没有存在依赖于它的表,其行树只有树根。行树是具有信息完整性的逻辑数据单元,它的存在是表间关系的实例化;对应于一个行树,表间也有了通常呈数状的关系,称之为表树。
第3页
数据库回收站设计
社会团体表(Organ)
团体代码ID
团体名称NM
单位表Dpt
简历表Resure
单位编码Rdptid
身份证号Resure
单位代码ID
单位名称NM
参加社会团体表
JionOrgan
单位编码JDptid
身份证号JMenID
人员表Men
单位编码Dptid
身份证号Dptid
姓名Nm
性别sex
爱人表spouse
单位编码SdptID
身份证号SMenID
爱人姓名
图1人员挡案数据库管理物理表关系图(下划线者为主键)
DBR的回收站和恢复,只有以行树为处理单位,才能保证数据库表间的数据完整性。DBR的数学模型如图2所示,回收的过程就是将原数据库的一个行树备份到回收站中,并从原数据库中删除该行树;恢复的过程就是将回收站中一个行树备份还原成原数据库的行树,并删除该备份。行树的回收、恢复都有删除和生成双重功用,其处理的工作单元是行树。
一个行树可能分布在多个表中,如何识别行树呢?数据库物理表之间,理论上有一对一、一对多和多对多三种关系。由于目前的三种数据库模型均不支持多对多关系(均被分解成两个一对多关系),所以表之间目前只有 一对一、一对多两种关系。实体关系建模技术(Entity
Relationship Approach)早已被广泛地应用于数据库设计。利用该技术设计物理表时,一对一关系的两个表,相互把对方的主键(Primary Key)作为自己的外键(Foreign Key);一对多关系的两个表,“多端”把“一端”的主键作为自己的外键。在表树中,一对一关系的父表和子表,子表以外键形式拥有了父表主键;一对多关系的父表和子表,父表总在“一端”,多端的子表也以外键形式拥有了父表主键……依此类推,表树中的其它表(根表的后继结点,也称根表的后继表)都可以拥有根表的主键可以简便地识别整个行树,根表主键也成了根表行树的唯一标识(称作行树主键)。如图1中,单位表的主键是“单位编码”,其后继表(如:人员表、爱人表、简历表和参见社会团体表)都有“单位编码”列(Column,即字段Filed);社会团体表的主键是“团体编码”,其后继表(即参加社会团体表)也有“团体编码”列。
第4页
数据库回收站设计
4、数据库回收站的数学模型
原数据库
回收
恢复
数据库回收站
图2 DBR数学模型
表树中,子表也可以隐含拥有父表的主键。譬如:以“单位编码”为表名、一个单位一个人员表,人员表中可以没有“单位编码”列。
并非所有的后继表都拥有根表主键列。譬如:如果人员表不把“单位编码”作为主键、仅以“身份证号”作主键,那么简历表、爱人表等后继表中就可以没有“单位编码”列,单位表的行树分布在简历表、爱人表等中的数据就不能简单地用“单位编码”列进行识别。
使所有后继表都拥有根表主键的列,可以简便、快捷地识别根表行树、简化DBR处理程序。这是数据库物理表设计时不可考虑的问题。
5、数据库回收站的设计思想
5.1 总体思想
行树备份在DBR中的物理存储结构是实现DBR的关键。最直接的存储结构是实现DBR的关键。最直接的存储结构是另外建立一个与原数据库具有相同表、相同表结构的数据库。DBR回收、恢复工作是两个数据库对应表间的数据传输。但是这种方式谈不上有什么通用性、可维护性,浪费存储资源,特别是在网络环境中,问题更多.
另外一种方式是建立一个表,专用于备份被删除行树数据.称之为回收站表,其特征是利用少数几个大容量列、按特定格式或利用分隔符,备份整个行树数据.一般地,它只需4列数据;第一列为删除时间,日期型Data(或时间型),标注行树的删除时间.第二列为行树概要,字符型(Char),简要描述被删除行树的内容.第三列称作文字列,BLOB型,用来备份行树中类型为小第5页
版权声明:本文标题:数据库回收站的设计 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1703805774a72692.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论