您好、欢迎来到现金彩票网!
当前位置:秒速快三 > 数据库完整性 >

如何对数升级之后的数据库进行数据完整性和准确性的校验

发布时间:2019-08-04 19:02 来源:未知 编辑:admin

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  知道合伙人金融证券行家采纳数:7649获赞数:932502014年于上海市商贸旅游学校毕业,专业会计。后就读于上海市同济大学网络教育学院。向TA提问展开全部为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确、有效、相容。

  约束是用来确保数据的准确性和一致性。数据的完整性就是对数据的准确性和一致性的一种保证。

  2) 域完整性:是指表中的列必须满足某种特定的数据类型约束,其中约束又包括取值范围、精度等规定。

  3) 参照完整性:是指两个表的主关键字和外关键字的数据应一致,保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。

  4) 用户定义的完整性:不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性即是针对某个特定关系数据库的约束条件,它反映某一具体应用必须满足的语义要求。

  可分为三种类型:与表有关的约束、域(Domain)约束、断言(Assertion)

  1) 与表有关的约束:是表中定义的一种约束。可在列定义时定义该约束,此时称为列约束,也可以在表定义时定义约束,此时称为表约束。

  2) 域(Domain)约束:在域定义中被定义的一种约束,它与在特定域中定义的任何列都有关系。

  3) 断言(Assertion):在断言定义时定义的一种约束,它可以与一个或多个表进行关联。

  (2) unique(惟一)约束:用于指明创建惟一约束的列上的取值必须惟一。

  如下往EmployeeInfo插入数据时,如果两条记录的phone不惟一,

  除了在定义列时添加unique约束外,也可以将unique约束作为表约束添加。即把它作为表定义的元素。

  (3) primary key(主键)约束:用于定义基本表的主键,起惟一标识作用,其值不能为null,也不能重复,以此来保证实体的完整性。

  1.在一个表中,只能定义一个primary key约束,但可定义多个unique约束。

  2.对于指定为primary key的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于unique所约束的惟一键,则允许为null,只是null值最多有一个。

  (4) foreign key(外键)约束:定义了一个表中数据与另一个表中的数据的联系。

  foreign key约束指定某一个列或一组列作为外部键,其中包含外部键的表称为子表,包含外部键所引用的主键的表称为父表。系统保证,表在外部键上的取值要么是父表中某一主键,要么取空值,以此保证两个表之间的连接,确保了实体的参照完整性。

  说明:table_name为父表的表名,column为父表中与外键对应的主键值。

  可以为表的一列或多列创建foreign key 约束,如果为多列创建 foreign key约束,将分别与主表中的相应主键相对应。

  如果想在子表的emp_id列插入一个值,首先父表的emp_id列必须存在,否则会插入失败。如果想从父表的emp_id删除一个值,则必须无删除子表emp_id列中所有与之对应的值。

  潜在问题:由于foreign key列上可以取空值,DBMS将跳过对foreign key约束的检查,因此如果插入Emp_Sal如下数据:

  (1)将联合外键的列添加not null约束,但这限制了用户的部分操作。

  在删除或更新有primary key值的行,且该值与子表的foreign key中一个或多个值相匹配时,会引起匹配完整性的丧失。

  no action:更新或删除父表中的数据时,如果会使子表中的外键违反引用完整性,该动作将被禁止执行。不过在某些条件下,可出现暂时的,但在数据的最终状态中,不能违反外键的引用完整性。

  cascade: 当父表中被引用列的数据被更新或删除时,子表中的相应的数据也被更新或删除。

  restrict:与no action规则基本相同,只是引用列中的数据永远不能违反外键的引用完整性,暂时的也不行。

  set null:当父表数据被更新或删除时,子表中的相应数据被设置成Null值,前提是子表中的相应列允许null值。

  set default:当父表数据被更新或删除时,子表中的数据被设置成默认值。前提是子表中的相应列设置有默认值。

  (5) check(校验)约束:用来检查字段值所允许的范围。DBMS每当执行delete,insert或update语句时,都对这个约束过滤。如果为true,则执行。否则,取消执行并提示错误。

  如果此时,再往表中插入如下语句则会出错:(因为不满足salary大于等于1000的约束。)

  三、断言约束:不必与特定的列绑定,可以理解为能应用于多个表的check约束,因此必须在表定义之外独立创建断言。

http://starnet-france.com/shujukuwanzhengxing/761.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有