|
0 引言
数据管理技术的发展大致经历了人工管理、文件管理和数据库系统三个阶段。数据库系统是目前采用的先进的数据管理方法 , 克服了以前所有数据管理方式的缺点 , 试图提供一种完美的、更高级的数据管理方式。它的指导思想是对数据实行统一的、集中的、独立的管理 , 使数据存储独立于使用数据的程序 , 实现数据共享。数据库系统把管理、维护和使用数据的复杂性转嫁给数据库管理系统 (DBMS) 。因此 , DBMS 是一种非常复杂的、综合性的、在数据库系统中对数据进行管理的大型系统软件。用户正是通过 DBMS 来组织管理数据。 DBMS 允许用户抽象地、逻辑地处理数据而不必关心这些数据在计算机中的实际物理存储方式。这给用户带来了极大方便。目前 DBMS 已从早期的分散的一个个计算模型发展到现在的 Client/Server 计算模型。 Client /Server 模型是非对等的 , 客户发出服务请求 , 服务器作出响应 , 提供服务 , 即所谓的 " 请求驱动 " 。 Client /Server 系统由 DBServer 、客户应用程序和网络组成。 DBServer 称为后端数据库服务器 , 它负责有效地管理系统的资源 , 负责数据库系统的控制功能 , 包括并发控制、数据安全性、数据完整性和数据的备份和恢复等。客户应用程序即前端客户应用程序实现用户与后端数据进行交互操作 , 其主要任务是提供交互式界面完成数据的录入、分析、检查和显示 , 向 DBServer 发出请求 ( SQL 语句 ) 并接收结果和错误信息。网络和通信软件是系统中客户和服务器之间数据传送的工具。由于现在的数据库都是开放、多用户共享 , 因此维护数据库中数据的正确性至关重要 , DBMS 所提供的数据完整性控制功能是保证数据正确性的有效手段。
1 数据完整性的概念和意义
数据的完整性是指数据库中数据的正确性、有效性和一致性。正确性是指数据的合法性 ; 有效性是指数据是否在定义的有效范围 ; 一致性是指表示同一个事实的两个数据应相同。数据库管理系统要提供必要的功能 , 保证数据库中存储的数据在更新过程中始终与客观世界实际的信息状态保持一致。数据完整性包括 : 实体完整性 , 它是指主键的值不能为空或部分为空 , 如果主键为空或部分为空 , 则失去了主键的惟一标识性。参照完整性是指一个表的外部键必须在另一个表中找到或者为空。参照完整性反映了事物之间的相互联系。用户自定义完整性是针对具体应用环境数据必须满足的语义要求。例如 , 学校教学管理需要下列三个表。

显然学生表的主键是属性学号 ; 学生选课表的主键为属性组合学号和课号 ; 课程表的主键是属性课号。这些属性不能取空 (NULL) 或部分取空。也即当这些主键数据不输入时 , 其他数据不能输入 , 这就是实体完整性的意义。另一方面表与表间存在相互联系 , 学生选课表的学号必须在学生表中找到 ; 而课号必须在课程表中找到。这就是参照完整性的意义。对于高校学生来说 , 年龄一般要求 18 岁以上 , 但对于不同的应用环境会有不同的要求 , 这就是用户自定义完整性的意义。需要指出的是数据完整性是根据客观实际意义确定的 , 不能形式地确定。为了实现数据完整性控制 , 数据库管理员应向 DBMS 提出一组完整性规则 , 这组规则规定用户在对数据库进行更新操作时 , 数据库管理系统按照制定的规则检验操作的合法性 , 若不符合规则则进行相应的错误处理。一个完整的规则由三部分组成 : 触发程序条件 , 它规定系统什么时候使用规则进行检查 ; 完整性约束 , 它规定系统要检查什么样的错误 ; 违约响应 , 它规定系统如果检查出错误后应该进行怎样的处理 , 也即违约时要做的事情。完整性规则通过 DBMS 提供的交互操作方式或 SQL 语句进行描述 , 并由系统加以编译后存放在系统数据字典中。数据字典随着表文件的打开自动打开 , 从而使定义的规则自动起作用。完整性约束一般可以分为三大类 : 数据值和结构的约束 , 即对数据取值类型、范围、精度等进行规定 , 对数据之间的联系的约束 ( 例如参照性说明 ) ; 静态与动态的约束。静态约束是指对数据库中每一个确定状态应满足的约束条件。动态约束是指数据库从一种状态变为另一种状态时 , 新旧值之间的约束条件 ( 例如前后工资值 ) ; 立即执行和延迟执行约束。立即执行约束是指执行用户事务时 , 某一更新语句执行完成后 , 系统立即对此数据进行完整性约束条件检查。延迟执行约束是指在整个事务执行结束后 , 再对约束条件进行完整性检查 , 正确后才提交。事务是用户定义的一个数据操作序列 , 这些操作要么全做 , 要么不做 , 是一个不可分割的工作单位。
2 数据完整性在 SQL SERVER 环境下的实现
SQL SERVER 是微软公司高效的数据库产品。用户通过 SQL SERVER 提供的各种管理和维护工具 , 可以方便、灵活、快捷地实现对数据的管理、分析和维护。在 SQLSERVER 环境下 , 既可以利用系统所提供的交互工具设置数据完整性 , 也可以使用 SQL 语言描述数据完整性。在 SQL SERVER 环境下可以通过使用企业管理器工具以交互方式完成规则与约束设置 , 从而实现数完整性控制。 SQL 可以设置 4 种约束 : 主关键字约束、外关键字约束、惟一约束、检验约束。主键约束可以保证数据的实体完整性 ; 外关键字约束可以保证数据的参照完整性 ; 惟一约束保证数据值的惟一性 ; 检验约束可以设置用户自定义完整性。下面仅举例说明在 SQL SERVER 环境下通过使用企业管理器设置主关键字约束 , 其步骤为 :
①启动 SQL SERVER 企业管理器
②选定数据库
③右击需要添加主关键字的约束的表 , 然后执行“设计表”命令。
④在设计器窗口中单击要设置为主键的字段 , 然后在工具栏上单击“设置主键”按钮。
⑤该字段前面将出现一个钥匙标记 , 单击“确定”按钮完成设置。
通过上面的例子可以看到 , 利用数据库管理系统提供的工具可以方便完成数据完整性控制设置。除了用交互方式设置数据完整性控制外 , 更为通用的方式是通过标准的 SQL 语句在定义表结构的同时描述数据的完整性控制。我们以定义一个寻呼台用户档案表 pagerus 2 er 和寻呼类型表 pagertype 为例 , 说明如何使用使用 SQL 语言描述数据完整性控制和定义表结构。
CREATE TABLE pageruser
( stationid SMALL INT NOT NULL,
userid INT NOT NULL,
frequentid SMALL INT NOT NULL,
machinecode INT NOT NULL,
name CHAR (10) ,
sex CHAR (1) ,
pagertypeid SMALL INT NOT NULL,
PR IMARY KEY ( stationid, userid) ,
UN IQUE ( frequentid, machinecode) ,
FOREIGN KEY (pagertypeid) REFERENCES pagertype,
CHECK ( sex in ( ‘ F ' , ‘ M ' )
)
)
CREATE TABLE pagertype
( id SMALL INT,
typename CHAR (10) ,
note CHAR (30) ,
PR IMARY KEY ( id)
)
PR IMARY KEY ( stationed, userid) 和 PR IMARY KEY( id) 定义了两个表的主键 , FOREIGN KEY (pagertypeid)REFERENCES pagertype 定义了参照完整性 , 其他设置的意义读者可以参考相关资料。从上面的 实例可以看出 , 通过 SQL 语言在 SQL SERBVER 可以很方便地设计完整性控制。
3 结语
本文对数据完整的概念、意义和实现方式进行了详细讨论。通过实际例子具体说明了在 SQL SERVER 环境下设置数据完整性控制的方法。掌握数据完整的概念和实现方式 , 对于系统设计人员来说是非常重要的 , 它使得系统设计人员从整体上把握数据之间联系 , 保证数据库中存储的数据是正确、合法和有效的。 |