WEB开发网
开发学院数据库Oracle 利用Oracle数据库表完整性功能提高数据输入准确率... 阅读

利用Oracle数据库表完整性功能提高数据输入准确率(一)

 2008-06-06 12:43:00 来源:WEB开发网   
核心提示:Oracle数据库表的完整性功能是一个非常实用的功能,利用这个功能可以提高表中数据的准确率,利用Oracle数据库表完整性功能提高数据输入准确率(一),根据其具体实现方式的不同,表的完整性包括三部分内容,单个主键是这个字段不能重复,而多个主键的话,分别是实体完整性、域完整性与参照完整性,这三部分功能平时各负其责

Oracle数据库表的完整性功能是一个非常实用的功能,利用这个功能可以提高表中数据的准确率。根据其具体实现方式的不同,表的完整性包括三部分内容,分别是实体完整性、域完整性与参照完整性。这三部分功能平时各负其责,共同实现了表的完整性功能。

如现在有如下一张员工表格。若我们现在采用Oralce数据库管理这张数据表,那我们该如何结合表的完整性功能,提高这张员工数据表的数据准确率呢?

身份证号码        姓名   入职日期

339005198103031716  甲   2008-2-1

339005198303031718  乙   2008-2-2

339005198003031719  丙   2008-2-3

339005198203031720  丁   2008-2-4

一、实体完整性。

实体完整性,是指在表的级别上,防止重复记录的产生。如作为上面这一张员工信息表,其身份证号码当然不能重复。若输入重复的话,则系统就应该提示错误信息。这就是通过实体完整性的功能来实现的。

具体的来说,表的实体完整性功能是通过主键来实现的。我们可以给表的某些字段设置主键,从而达到记录不重复的目的。主键其有两个特点,一是不能为空,而是设置的主键的字段内容不能重复。

从以上这张表中,我们可以把员工的身份证号码设置为主键。如此,当用户数据身份证号码时,若输入的身份证号码重复的话,则数据库系统会提醒用户,数据的身份证号码已经存在,并且,这条记录将不会被保存。

1、根据上面的要求在数据库中创建表格。

2、在没有创建主键,利用实体完整性功能之前,若数据的员工记录具有相同的身份证号码,系统也会接受,不会报错。如下图所示。但这明显不符合我们的要求。我们希望当我们不小心输入重复性的数据的时候,如身份证重复的话,则系统将提示错误,并且,不保存该条记录。

3、我们在刚才新建的职工表上,加上实体完整性约束。给身份证号码字段加上主键。然后,来看看具体的效果。

4、在身份证号码上,我们实现完整性约束,建立主键后,我们发现,此时,在同时建立两条相同的身份证号码记录的话,系统就提示错误信息,所违反了唯一约束条件。从这里就可以看出,实体完整性约束在起作用了。

以上笔者描述的了就是Oracle服务器表完整性中的实体完整性的功能。通过这个过程的描述,我们可以看到,通过给表的某些字段设置主键的方法,我们可以实现对于表记录的唯一性控制,从而防止用户不小心输入重复的数据,造成数据库中数据的混乱。

在给数据库表实现实体完整性,即给表设置主键的时候,要注意几个要点。

一是设置主键的字段是不允许为空的。所以,我们在设计表结构的时候,如果需要给表的某个字段设置成为主键的时候,则最好把这个字段设置为不为空。如此的话,用户在操作数据表的时候,就一定要在该字段输入值,否则的话,数据库就会提示“该字段不能为空”的错误。

二是设置主键后,该字段的内容不能为重复。有时候,我们可能因为设计表格的时候,考虑的不够周到,没有把用户表的身份证号码字段设置为主键。若在表中已有数据的情况下,给表设置主键,就可能会发生错误,因为表中的数据可能已经重复了。为此,我们最好在表设计的时候,就要考虑好,到底该字段是否要设置成为主键。

三是主键的设置根据不同的业务需求是不一样的,数据库管理员要根据实际的情况选择恰当的字段作为关键字。如在职工基本信息表中,我们可能要求身份证号码唯一。但是,若在其他应用中,若把身份证号码设置为主键的话,就可能发生错误。如在学校的学位管理中,可能一个人会同时取得两个或者两个以上的学位,此时,若把身份证号码设置为主键可能不是很合适。可能需要把身份证号码与学会编号一起设置为主键。若同一张表中,有两个以上的字段设置为主键时,系统的要求是两个字段都重复才是违反这个约束性条件。也就是说,学位表中有两条记录,身份证号码相同学位编号不同(一个人同时有多个学位),这种情况是不违反实体完整性功能的。所以这要注意,跟设置单个主键有比较大的区别。单个主键是这个字段不能重复,而多个主键的话,是设置主键的字段都不重复就行了。

Tags:利用 Oracle 数据库

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接