




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2020/7/4,8.1完整性约束和完整性控制8.2SQLServer数据完整性及其实现8.3情况6 :实时储蓄管理系统数据库完整性控制,2020/7/4,数据库完整性指的是数据的正确性、有效性和兼容性,错误的数据包含在正确性是指数据的有效性是指数据是否属于定义的有效范围。兼容性是指描述同一现实的数据相同。 无论数据库系统中的数据是正确的、可靠的还是不一致的,数据库是否一致,保持数据库的一致性都很重要。 另外,为了保证2020/7/4、8.1完整性约束和完整性控制、数据库的完整性,DBMS必须提供保证数据库的数据正确,并避免因不符合意义而发生错误数据的输入输出的功能。 检查数据库中的数据是否满
2、足规定的条件称为“完整性检查”。 数据库中数据应该满足的条件称为完整性约束,有时也称为完整性规则。 一致性控制在DBMS中执行一致性检查的子系统称为一致性子系统。 主要功能是定义一致性的功能,即定义一致性约束的机制。 一致性检查功能用于检查用户发出的操作请求是否违反了一致性约束。 控制一致性的功能,即监视数据操作的整体过程,如果发现违反了一致性制约,就采取一定的动作来保证数据的完整性。 2020/7/4,完整性规则完整性子系统基于“完整性规则集”操作。 一致性规则集是DBA或应用程序程序员事先向一致性子系统提交的数据约束的规则集。 每个完整性规则有三个部分: (1)什么时候使用规则进行检查(称
3、为规则的“触发条件”) (2)检查什么样的错误(称为“限制条件”)。 (3)在检测出错误的情况下,应该如何处理(称为“ELSE”子句)。2020/7/4,RDBMS的一致性规则分为RDBMS,一致性规则分为域一致性规则域一致性规则三类,这三类启用了基表中的列输入。 域一致性主要由用户定义的一致性组成。 控制域完整性的有效方法包括数据类型、格式、可能的值的范围、在改变列值时需要满足的条件等。 实体完整性规则实体完整性规则用于约束现实世界中的实体,以区分实体。 也就是说,它具有唯一的id。 此规则反映了关系模型中基本表的所有主属性都不能为空(null )。 参照完整性规则参照完整性规则用于限制具有
4、参照关系的两个表中主代码和外部代码的数据匹配。2020/7/4、8.2SQLServer数据完整性及其实现,sqlserver具有使用四种方法定义和实现数据库完整性功能的健全数据完整性控制机制:约束、缺省、规则和触发。 8.2.1限制SQLServer中SQLServer的数据完整性的种类SQLServer2000中的数据完整性有域完整性、实体完整性和参照完整性三种。 域一致性域的一致性是列级别和元组级别的一致性。 为列或列组指定有效数据集,并确定列是否允许空(null )。 实体完整性实体的完整性是表级的完整性,表中的所有元组都需要唯一的id或主键。 参照完整性参照完整性是表级完整性,保持表
5、的外部代码与主表的主代码之间的兼容性。2020/7/4、SQLServer数据完整性方式SQLServer同时声明数据完整性和过程数据完整性,以实现数据完整性。 声明数据完整性通过在对象定义中定义并自动强制系统本身来实现数据完整性。 声明数据的完整性包括各种约束、默认和规则。 过程数据完整性过程数据完整性是使用Transact-SQL (脚本语言)定义的,系统在执行这些语言时强制数据完整性。 过程数据的完整性包括触发器、存储过程等.SQLServer实现数据完整性的具体方法SQLServer实现数据完整性的主要方法有四种:约束、默认、规则和触发器。 约束通过限制列中的数据、行中的数据和表之间的
6、数据来确保数据的完整性。2020/7/4、表8-1SQLServer2000约束条件的五种类型及其完整性功能,使用2020/7/4、CREATE语句创建约束条件的语法格式为CREATE表(,n, n )的形式和内容是constricetprimarykeyclustered|nonclustered|noreign key references () 2020/7/4的格式和内容如下: constrainetprimarykeyclustered (),unique clustered (),foreign key () references () 有三种触发器:插入、更新和删除。 可以在一个
7、表中设置多个触发器。 触发的目的是维持行级数据的完整性。 与CHECK约束相比,触发器可以实现更复杂的数据完整性,可以执行操作和级联操作,可以实现多行数据之间的一致性约束,可以按定义动态地维持实时相关数据。 默认和规则默认(DEFAULT )和规则(RULE )是数据库对象。 一旦创建,就可以绑定到一列或多列并重用它。 使用INSERT语句将人的数据插入表中时,如果有列绑定DEFAULT,或者有列绑定RULE,则插入的数据必须满足RULE的要求。2020/7/4、8.2.2缺省值是数据库对象,您可以绑定到一列或多列,也可以绑定到用户自定义的数据类型。 这类似于DEFAULT约束,它为INSER
8、T语句中未指定数据的列提供预定义的缺省值。 默认值为常数、内置函数或公式。 默认对象在功能上与默认约束相同,但使用方式不同。 默认约束条件在CREATETABLE或ALTERTABLE语句中定义,然后嵌入到定义的表的结构中。 换句话说,删除表也将删除默认约束。 默认对象必须在CREATEDEFAULT语句中定义。 这与表无关,如果删除表,则无法删除缺省对象,必须使用DROPDEFAULT语句删除缺省对象。2020/7/4,缺省情况下使用T-SQL语句CREATEDEFAULT语句创建缺省对象。 语法如下: createdefaultasconstant_expression其中default是
9、默认对象的名称,constant _ expression是常数表达式。 常数表达式可以包含常数、内置函数或公式,但不能包含列名或其他数据库对象。 【例8-1】在数据库MyDb中创建默认对象borrow_time,其值是当前的系统日期。 在createdefaultborrow _ timeasgetdate () 2020/7/4中,创建绑定的默认对象后,就不能直接使用。 必须绑定到指定表的列或用户定义的数据类型。 通过执行系统存储过程sp_bindefault,可以将缺省值绑定到列或用户定义的数据类型。 系统存储过程sp_bindefault的语法是sp_bindefault, 将在obj
10、ect_name【例8-2】中在【例8-1】中创建的默认对象borrow_time绑定到数据库MyDB的borrowinf表的借方列,并将其绑定到EXECsp_bindefaultborrow_time 、2020/7/4,如果在默认企业管理器中展开“数据库”的“默认”目录,则显示数据库中的所有默认对象,如图8-1所示。图8-1可以显示数据库MyDb中的默认对象,并使用2020/7/4系统存储过程sp_help显示默认对象的名称、所有者等基本信息。 使用系统存储过程sp_helptext显示默认对象的定义。 解除和删除默认使用DROPDEFAULT语句从当前数据库中删除默认对象。 但是,在删除
11、之前,必须使用系统存储过程sp_unbindefault解除列或用户定义的数据类型的缺省对象的绑定。调用系统存储过程sp_unbindefault来解除缺省语法。 即使sp_unbindefaultobject_name、futurnonly_flag解除默认对象的绑定,默认对象也不会消失,而是保留在数据库中。2020/7/4、【例8-3】解除绑定在borrow INF表的借方列上的默认对象。 执行以下代码: useddbexecsp _ unbindefaultborrowinf .删除默认对象语句DROPDEFAULT的语法绑定到DROPDEFAULTobject_name【示例8-4】表
12、borrowinf的“借方”列可以使用以下代码: EXECsp_unbindefaultborrowinf .借期DROPDEFAULTborrow_time、2020/7/4、8.2.3规则也是数据库对象,与默认使用方式一样与CHECK约束的某些功能相同,用于限制INSERT和UPDATE语句的输入数据的获取范围。 规则和CHECK约束的区别在于,CHECK约束是在使用CREATETABLE语句创建表时指定的,规则通过绑定到指定为独立于表的数据库对象的表或数据类型来实现完整性约束。 一列中只能使用一个规则,但可以使用多个CHECK约束。 可以将规则应用于多列,也可以应用于用户定义的数据类型,
13、但是CHECK约束只能应用于定义的列。2020/7/4,可以使用T-SQL语句CREATERULE创建规则。 语法如下: createruleascondition_expression其中rule :是规则的名称condition _ expression :指定满足规则的条件的表达式。 【例8-5】在mydb数据库中定义规则,使用该规则的列被限制为大于0。 在createrulerange _ ruleas value 0,2020/7/4中,创建了规则绑定和解除规则之后,必须绑定到表中的列或用户定义的数据类型。 如果在其中绑定规则的列或列的数据类型为绑定规则的用户定义数据类型的列中插入或
14、更新数据,则新数据必须满足规则。 使用系统存储过程sp_bindrule将规则绑定到列或用户定义的数据类型。 语法是sp_bindrulerule、object_name、futureonly_flag。 rule :是规则的名称。 object_name :要绑定规则的列名或用户定义的数据类型名。 futureonly_flag :仅在绑定到用户定义的数据类型时使用的选项。 如果futureonly_flag是futureonly,则使用先前创建的数据类型的列不受绑定规则限制。 在2020/7/4、【例8-6】中,将【例8-5】的范围规则绑定到MyDb数据库的books表的价格列。 EXEC
15、sp_bindrulerangge_rule,books .定价注意在此数据库中,如果表books的定价列中存在CHECK约束,则必须先删除此示例中的代码。 图8-2中的绑定规则位于MyDb数据库表2020/7/4中,可以使用系统存储过程sp_unbindrule解除绑定到列或用户定义的数据类型的规则。 语法是sp_unbindruleobject_name,futureonly_flag。 rule :是规则的名称。 object_name :自定义规则绑定到的列或用户的数据类型的名称。 futureonly_flag :仅在解除绑定到用户定义数据类型的规则时使用的选项,以防止具有指定用户定
16、义数据类型的列丢失绑定的规则。 在2020/7/4,显示规则企业管理器中,展开数据库的规则目录,以显示数据库中的所有规则,如图8-3所示。 可以使用图8-3规则、2020/7/4和系统存储进程sp_help来显示规则的所有者、创建日期等信息。 图8-4显示了显示规则的情况。 另外,在图8-4sp_help中显示规则,在2020/7/4系统存储过程sp_helptext中显示规则的定义。 图8-5显示了规则的定义。 图8-5中的规则定义,2020/7/4,删除规则可以使用DROPRULE语句从当前数据库中删除一个或多个规则。 删除规则时,必须首先从绑定了规则的列或用户定义的数据类型中删除规则。
17、删除规则range_rule。 代码和执行情况如图8-6所示。图8-6,2020/7/4,8.3情况6 :实时储蓄管理系统数据库的完整性管理,实体完整性实体完整性通常通过在创建表时定义主代码来完成。 有漏洞必须立即修正,使各关系满足实体的完整性。 参照完整性定义触发表“储蓄者基本信息”和“储蓄者动态信息”相互成为参照关系,如果将“储蓄者基本信息”表设为参照关系,则“储蓄者动态信息”表成为参照关系。 根据实际情况,在“存款人基本信息”表中定义“更新”、“删除”触发器。 2020/7/4,传输- SQL程序如下: CREATETRIGGERdeleONdbo .存储基本信息FORDELETE,updateasdeclarezhachar (15 ) select zh=d .帐户fromdeleteddifexists (select * from存储动态信息BEGINPRINT存储动态信息表包含存储zh的信息,无法删除ROLLBACKEND,2020/7/4,要使用关系图建立参照完整性存款表的参照关系,有两种关系:储蓄表和储蓄者基本信息表。 存户基本信息表和存户动态信息表相互是参照表。 使用SQLServer2000提供的关系图建立参照完整性的步骤如下:1)打开实时储蓄数据库,右键点击【关系图】,从弹出菜单中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电网侧独立储能示范项目数字化方案(参考模板)
- 2025年可生物降解有机垃圾厌氧发酵装置项目合作计划书
- 2025年不孕不育医院项目建议书
- 2025年血液灌流吸附器项目合作计划书
- 我国基本法宪法知识竞赛题库及答案277题
- 文化遗产保护的数字化策略
- 2025年重氮化合物项目发展计划
- 保险行业数字化理赔服务在自然灾害应对中的实战分析报告
- 2025年教育信息化基础设施建设中网络安全问题研究报告
- 2025年远程医疗服务在分级诊疗中的远程医疗人才培养报告
- 中国服饰演变史课件
- 100以内加减乘除能力提升专项练习1000题(可打印)
- 牛屠宰检疫培训
- 2025标准版的还建房买卖合同
- 有限空间监理实施细则
- s7-1200plc编程及应用第三版-廖常初-课后习题答案
- 晶体植入术的术后护理
- 劳动通论学习通超星期末考试答案章节答案2024年
- ISO56002-2019创新管理体系管理手册及程序文件
- 新教材北师大版必修第一册unit1 life choices单词短语句型写作知识点提炼
- 贵州省贵阳市2023-2024学年七年级下学期期末考试生物试题(无答案)
评论
0/150
提交评论