第8章 数据保护(数据库完整性).ppt
《第8章 数据保护(数据库完整性).ppt》由会员分享,可在线阅读,更多相关《第8章 数据保护(数据库完整性).ppt(52页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第8章章数据库完整性数据库完整性约束约束 8.1默认值默认值8.2规则规则8.31数据库的完整性n数据库的完整性数据库的完整性是指数据的正确性、有效性是指数据的正确性、有效性和相容性,是为了防止数据库中存在不合语义和相容性,是为了防止数据库中存在不合语义的数据,防止错误信息的输入与输出造成无效的数据,防止错误信息的输入与输出造成无效操作或错误结果。完整性措施的防范对象是不操作或错误结果。完整性措施的防范对象是不合语义的数据。合语义的数据。n例:性别只能是例:性别只能是“男男”或或“女女”,学号必须,学号必须唯一。唯一。n系统提供多种强制数据完整性的机制,保证系统提供多种强制数据完整性的机制,
2、保证数据库中数据的质量。数据库中数据的质量。2数据完整性类型数据完整性类型根据数据完整性措施所作用的数据库对象和范围不同,可以根据数据完整性措施所作用的数据库对象和范围不同,可以将数据完整性进行分类。将数据完整性进行分类。完整性约束作用的对象:完整性约束作用的对象:n关系关系(表表):若干元组间,关系之间的联系的约束;若干元组间,关系之间的联系的约束;n元组:元组:元组中各个字段间的联系的约束;元组中各个字段间的联系的约束;n列:列:列的类型、取值范围、精度、唯一性、为空性、默列的类型、取值范围、精度、唯一性、为空性、默认定义、认定义、CHECK约束、主键约束、外键约束。约束、主键约束、外键约
3、束。数据完整性约束分类:数据完整性约束分类:n实体(表)完整性实体(表)完整性n域(列)完整性域(列)完整性n参照完整性(引用完整性)参照完整性(引用完整性)n用户自定义完整性用户自定义完整性31、实体完整性、实体完整性又称为行完整性。它把表中的每行都看作一个又称为行完整性。它把表中的每行都看作一个实体,要求所有行都具有唯一标识。实体,要求所有行都具有唯一标识。实体完整性作实体完整性作用对象是列用对象是列,强制表的标识符列或主键的完整性,强制表的标识符列或主键的完整性(在(在SQLServer中,可以通过建立中,可以通过建立PRIMARYKEY约束、约束、UNIQUE约束、约束、IDENTIT
4、Y等措施来等措施来实施实体完整性)。实施实体完整性)。例如,对例如,对“客户信息表客户信息表”,客户编号就可以作为主键,客户编号就可以作为主键,每个客户的编号能够惟一地确定该客户对应的记录信息,每个客户的编号能够惟一地确定该客户对应的记录信息,那么在输入数据时,则不能有相同客户编号的记录存在,那么在输入数据时,则不能有相同客户编号的记录存在,通过对客户编号这一字段建立主键约束,可实现通过对客户编号这一字段建立主键约束,可实现“客户信客户信息表息表”的实体完整性。的实体完整性。42、域完整性、域完整性域完整性又称为列完整性。它要求表中指定列域完整性又称为列完整性。它要求表中指定列的数据具有正确的
5、数据类型的数据具有正确的数据类型(通过定义数据类型)(通过定义数据类型)、数、数据格式据格式(通过(通过CHECK约束和规则实现)约束和规则实现)和有效的数据范围和有效的数据范围(通过(通过FOREIGNKEY约束、约束、CHECK约束、约束、NOTNULL、DEFAULT定义和规则实现)定义和规则实现)。例如对于课程表例如对于课程表“COURSE1”,学生的某门课学生的某门课程的学分应在程的学分应在10分以内,为了对学分这一数据项输分以内,为了对学分这一数据项输入的数据进行限制,可以定义该表的学分字段的约入的数据进行限制,可以定义该表的学分字段的约束条件。束条件。5例例1定义定义“COURS
6、E1”以及学分字段的约束条件以及学分字段的约束条件CREATETABLECOURSE1(课程号课程号CHAR(6)NOTNULL,课程名课程名CHAR(18)NOTNULLUNIQUE,学分学分TINYINTCHECK(学分学分=0and学分学分=0)21例例5n使用使用CREATETABLE语句创建语句创建“客户客户”表,同时创建检表,同时创建检查约束,定义查约束,定义“邮政编码邮政编码”列的值是由列的值是由6位数字组成的字位数字组成的字符串。符串。CREATETABLE客户客户(记录编号记录编号intIDENTITY(1,1),客户单位客户单位varchar(50)NOTNULL,地址地址
7、varchar(100)NOTNULL,邮政编码邮政编码varchar(10)NOTNULL,CONSTRAINTPK_客户客户PRIMARYKEY(记录编号记录编号),CONSTRAINTIX_客户客户UNIQUE(客户单位客户单位),CONSTRAINTCK_客户客户CHECK(邮政编码邮政编码LIKE0-90-90-90-90-90-9)22例例6n使用使用CREATETABLE语句创建语句创建“联系人联系人”表,同表,同时创建检查约束,定义时创建检查约束,定义“性别性别”列的值只能是列的值只能是“男男”或或“女女”。CREATETABLE联系人联系人(记录编号记录编号intIDENTI
8、TY(1,1),姓名姓名varchar(50)NOTNULL,性别性别char(2)NOTNULL,电话电话varchar(50)NOTNULL,CONSTRAINTPK_联系人联系人PRIMARYKEY(记录编号记录编号),CONSTRAINTIX_联系人联系人UNIQUE(姓名姓名),CONSTRAINTCK_联系人联系人CHECK(性别性别IN(男男,女女)可以省略,按可以省略,按系统默认命名系统默认命名238.1.4外部键约束外部键约束n外部键约束是用于建立两个表之间的一列或多列外部键约束是用于建立两个表之间的一列或多列之间的联系。通过将当前表中的某一列或某几列之间的联系。通过将当前表
9、中的某一列或某几列关联到另一个表的主键列,可创建两个表之间的关联到另一个表的主键列,可创建两个表之间的连接。当前表中的列就成为外部键。连接。当前表中的列就成为外部键。n外部键约束可以确保添加到外部键表中的任何行外部键约束可以确保添加到外部键表中的任何行的外部键值在主表中都存在相应主键值,以保证的外部键值在主表中都存在相应主键值,以保证数据的参照完整性。数据的参照完整性。n两种创建外部键约束的方法两种创建外部键约束的方法使用企业管理器创建外部键约束使用企业管理器创建外部键约束使用使用T-SQL语句创建外部键约束语句创建外部键约束24例例7使用企业管理器创建外部键约束使用企业管理器创建外部键约束n
10、在在“XJGL”数据库中,将数据库中,将“STUDENT”表的表的“SNO”列设置为主键,与列设置为主键,与“SC”表中的表中的“SNO”列列与与“STUDENT”表的表的“SNO”对应,在企业管理器对应,在企业管理器中为它们创建外键约束。中为它们创建外键约束。n在企业管理器中右击在企业管理器中右击“SC”表,在弹出菜单中选表,在弹出菜单中选择择“设计表设计表”,打开表设计器。,打开表设计器。n在设计表对话框中右击鼠标,在弹出菜单中选择在设计表对话框中右击鼠标,在弹出菜单中选择“关系关系”,打开,打开“属性属性”对话框,如下页图所示,对话框,如下页图所示,在该对话框中可以查看和管理关系。在该对
11、话框中可以查看和管理关系。2526使用使用T-SQL语句创建外部键约束语句创建外部键约束n语法:语法:CONSTRAINT约束名约束名FOREIGNKEY(列名列名1,列名列名2,.,列名列名n)REFERENCES关联表关联表(关联列名关联列名1,关联列名关联列名2,.,关联列名关联列名n)如果不指定约束名,则系统会自动分配一个名称。如果不指定约束名,则系统会自动分配一个名称。FOREIGNKEY关键字指定当前创建的约束类型为关键字指定当前创建的约束类型为外部键约束。外部键约束。REFERENCES关键字指定与当前创关键字指定与当前创建或修改的表相关联的表和列。建或修改的表相关联的表和列。2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第8章 数据保护数据库完整性 数据 保护 数据库 完整性
限制150内