TP05-数据库完整性_第1页
TP05-数据库完整性_第2页
TP05-数据库完整性_第3页
TP05-数据库完整性_第4页
TP05-数据库完整性_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据完整性根本概念使用约束标识列IDENTITY2024/3/19第五章数据库完整性数据完整性数据存放在表中“数据完整性的问题大多是由于设计引起的”创立表的时候,就应当保证以后数据输入是正确的 ——错误的数据、不符合要求的数据不允许输入2024/3/19创立表:保证数据的完整性=实施完整性约束数据完整性+=准确性可靠性完整性内容举例输入的类型是否正确?——年龄必须是数字输入的格式是否正确?——身份证号码必须是18位是否在允许的范围内?——性别只能是“男”或者“女”是否存在重复输入?——学员信息输入了两次是否符合其他特定要求?——学生的出生日期必须小于入学日期……2024/3/19列值要求(约束)整行要求(约束)四种完整性约束2024/3/19域完整性实体完整性参照完整性自定义完整性提供四种类型的约束保证完整性实体完整性2024/3/19河南新乡赵可以0010016河南新乡张丽鹃0010015江西南昌雷铜0010014湖南新田吴兰0010013山东定陶李山0010012….地址姓名学号江西南昌雷铜0010014×约束方法:唯一约束、主键约束、标识列实体完整性:又称行完整性,要求表中不能存在完全相同的记录,而且每条记录都具有一个非空且不重复的主键值。域完整性2024/3/19河南新乡赵可以河南新乡张丽鹃0010015江西南昌雷铜0010014湖南新田吴兰0010013山东定陶李山0010012….地址姓名学号湖北江门李亮8700000000×约束方法:限制数据类型、检查约束、外键约束、默认值、非空约束0010016学号要求7位字符域完整性:又称列完整性,用以指定列的数据输入是否具有正确的数据类型、格式以及有效的数据范围。参照完整性科目学号分数…数学001001288数学001001374语文001001267语文001001381数学0010016982024/3/19河南新乡赵可以0010016河南新乡张丽鹃0010015江西南昌雷铜0010014湖南新田吴兰0010013山东定陶李山0010012…地址姓名学号980010021数学×约束方法:外键约束参照完整性:又称引用完整性,用以保证主表〔被参照表〕中的数据与从表〔参照表〕中数据的一致性。自定义完整性帐号姓名信用….00192孙悟空700288猪悟能612333段誉890111虚竹4093000岳不群-102024/3/19AV121322乔峰CV0016AV372133玄痛CV0015AV378291沙悟净AV0014AV378290猪悟能AV0013AV378289孙悟空AV0012….会员证用户姓名用户编号约束方法:规那么、存储过程、触发器×触发器:检查信用值设置主键2024/3/19操作演示:设置主键2024/3/19PRIMARYKEY约束

该约束能确保数据的唯一性假设PRIMARYKEY约束定义在多列上,那么一列中的值可以重复,但PRIMARYKEY约束定义中的所有列的组合的值必须唯一

强制表的实体性。不允许数据库表在指定列上具有相同的值,且不允许有空值。author_idtitle_idbookprice100001Prof_1Computer25100002Prof_2Nature35100001Prof_3English28100003Prof_4English312024/3/19组合主键PRIMARYKEY约束

2024/3/19ALTERTABLESubjectsADDCONSTRAINTPK_SubjectPRIMARYKEYCLUSTERED(PrimaryCode,SecondaryCode)GO聚族索引PRIMARYKEY约束

设置默认值2024/3/19操作演示:设置默认值2024/3/19默认值约束

假设某列定义了默认值〔default〕约束,用户在输入数据时,没有为该列指定数据,那么系统将默认值赋给该列。语法:constraint约束名default默认值约束表达式for列名Eg:以创立表reader,为其添加默认约束,使“登记日期”列的默认值为系统时间。altertablereaderaddconstraintdf_djrqdefaultgetdate()for登记日期创立检查约束2024/3/19操作演示:建立检查约束添加约束例如2-22024/3/19操作演示:查看约束结果2024/3/19用于限定输入到一列或多列的值的范围,从逻辑表达式判断数据的有效性。语法:constraint约束名check〔检查约束表达式〕例:在表reader上定义检查约束,要求“性别”列的输入值只能是“男”或“女”。ALTERTABLEDepartmentsADDCONSTRAINTCK_sexcheck(性别=‘男’or性别=‘女’)GO检查约束

2024/3/19UNIQUE约束

该约束可确保在非主键列中不输入重复值,可以实现在一张表上定义多个UNIQUE约束,且在定义有UNIQUE约束的列上允许有空值可以对一个表定义多个UNIQUE约束,但只能定义一个PRIMARYKEY约束UNIQUE约束允许NULL值,这一点与PRIMARYKEY约束不同,当与参与UNIQUE约束的任何值一起使用时,每列只允许一个空值FOREIGNKEY约束可以引用UNIQUE约束2024/3/19例:在表Departments上的TelCode列上添加一个UNIQUE约束ALTERTABLEDepartmentsADDCONSTRAINTU_TelCodeUNIQUE(TelCode)GO

UNIQUE约束

2024/3/19FOREIGNKEY约束

该约束用于建立两个表一列或多列数据之间的链接的将主键值(一列或多列)添加到另一个表中,可创立两个表之间的链接,这个列就成为第二个表的外键该约束能强制引用完整性建立主外键关系2024/3/19操作演示:演示建立主外键关系主外键建立后本卷须知2024/3/19当主表中没有对应的记录时,不能将记录添加到子表

——成绩表中不能出现在学员信息表中不存在的学号不能更改主表中的值而导致子表中的记录孤立

——把学员信息表中的学号改变了,学员成绩表中的学号也应当随之改变子表存在与主表对应的记录,不能从主表中删除该行 ——不能把有成绩的学员删除了删除主表前,先删子表

——先删学员成绩表、后删除学员信息表FOREIGNKEY约束

外健用于建立和加强两个表数据之间的链接的一列或多列2024/3/192024/3/19被FOREIGN

KEY

参照的列在表中应该具有PRIMARY

KEY约束或UNIQUE

约束

IDNameTelIDsalarytax主键外键FOREIGNKEY约束2024/3/19语法:ALTERTABLEtable_nameADDCONSTRAINTconstraint_nameFOREIGNKEY{(column_name[,...])}REFERENCESref_table {(column_name[,...])}Eg:已创立主表student和从表score,定义主表“sid”列为主键,添加从表中的“sid”列为外键ALTERTABLEscoreADDCONSTRAINTconstraint_sidFOREIGNKEY(sid)REFERENCESstudent(sid) FOREIGNKEY约束设置标识列2024/3/19表中没有适宜的列作为主键怎么办?操作演示:设置标识列2024/3/19标识列identity每个表中都可以有一个标识列。该列值由系统自动生成,用以唯一标识插入到表中的每一行。语法:identity〔标识初始值,标识增量值〕Eg:在reader表创立时,定义rid为标识列,其中标识初始值和增量值都为1。Createtablereader(ridintnotnullidentity(1,1),Namechar(10)notnull)

思考2024/3/19标识列允许为字符数据类型吗?如果标识列A的初始值为1,增长量为2,那么输入三行数据以后,再删除两行,下次再输入数据行的时候,标识值从多少开始?删除约束查看表中的约束:execsp_helpconstraint表名2024/3/19ALTERTABLE

表名

DROPCONSTRAINT

约束名例如:删除Student表中地址默认约束ALTERTABLEStudent

DROPCONSTRAINTDF_stuAddress演示示例8:删除Student表约束添加约束

添加约束的语法2024/3/19ALTERTABLE

表名

ADDCONSTRAINT

约束名约束类型具体的约束说明约束名的取名规那么推荐采用:约束类型_约束列主键〔PrimaryKey〕约束:如PK_stuNo唯一〔UniqueKey〕约束:如UQ_stuID默认〔DefaultKey〕约束:如DF_stuAddress检查〔CheckKey〕约束:如CK_stuBornDate外键〔ForeignKey〕约束:如FK_stuNo添加约束例如2-1如何在表Student中添加下面的约束?主键约束:学号唯一约束:身份证号

默认约束:Address列的默认值是“地址不详”检查约束:出生日期的值为1980年1月1日后外键约束:设置GradeID列为外键,建立Grade表与Student表的引用关系2024/3/19ALTERTABLEStudent

ADDCONSTRAINTPK_stuNoPRIMARYKEY(StudentNo)ALTERTABLE

Student

ADDCONSTRAINTUQ_stuIDUNIQUE(IDENTITYCard)ALTERTABLE

Student

ADDCONSTRAINTDF_stuAddressDEFAULT('地址不详')FORstuAddressALTERTABLE

Student

ADDCONSTRAINTCK_stuBornDate

CHECK(BornDate>'1980-01-01')ALTERTABLEGrade

ADDCONSTRAINTPK_GradeIDPRIMARY

KEY(GradeID)ALTERTABLEStudentADDCONSTRAINTFK_Grade

FOREIGNKEY(GradeID)REFERENCESGrade(GradeID)GO添加主键约束〔StudentNo作为主键〕添加唯一约束〔因为每人的身份证号全国唯一〕添加默认约束〔如果地址不填,默认为“地址不详”〕添加检查check约束,要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论