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页

本文标签: 数据库数据回收站