常熟理工数据库原理教程PPT-05.ppt

上传人:b****3 文档编号:2701651 上传时间:2022-11-08 格式:PPT 页数:65 大小:629.50KB
下载 相关 举报
常熟理工数据库原理教程PPT-05.ppt_第1页
第1页 / 共65页
常熟理工数据库原理教程PPT-05.ppt_第2页
第2页 / 共65页
常熟理工数据库原理教程PPT-05.ppt_第3页
第3页 / 共65页
常熟理工数据库原理教程PPT-05.ppt_第4页
第4页 / 共65页
常熟理工数据库原理教程PPT-05.ppt_第5页
第5页 / 共65页
点击查看更多>>
下载资源
资源描述

常熟理工数据库原理教程PPT-05.ppt

《常熟理工数据库原理教程PPT-05.ppt》由会员分享,可在线阅读,更多相关《常熟理工数据库原理教程PPT-05.ppt(65页珍藏版)》请在冰豆网上搜索。

常熟理工数据库原理教程PPT-05.ppt

数据库原理与应用数据库原理与应用数据库系统概论第四版王珊萨师煊第第5章章数据库完整性数据库完整性数据库完整性机制触发器存储过程第第5章章数据库完整性数据库完整性数据库的完整性是指数据的数据库的完整性是指数据的正确性正确性和和相容性相容性。

完完整整性性检检查查和和控控制制的的防防范范对对象象是是不不合合语语义义的的、不不正正确的数据。

确的数据。

DBMSDBMS对完整性的维护机制:

对完整性的维护机制:

11、提供定义完整性约束条件的机制、提供定义完整性约束条件的机制22、提供完整性检查的方法、提供完整性检查的方法33、违约处理、违约处理5.1实体完整性实体完整性1、实体完整性定义PRIMARYKEY单属性构成的码有两种说明方法单属性构成的码有两种说明方法定义为列级约束条件定义为表级约束条件多个属性构成的码只有一种说明方法多个属性构成的码只有一种说明方法定义为表级约束条件5.1实体完整性(续)实体完整性(续)如:

如:

CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,/*在列级定义主码*/SnameCHAR(20)NOTNULL,SsexCHAR

(2),SageSMALLINT,SdeptCHAR(20);5.1实体完整性(续)实体完整性(续)如:

如:

CREATETABLEStudent(SnoCHAR(9),SnameCHAR(20)NOTNULL,SsexCHAR

(2),SageSMALLINT,SdeptCHAR(20),PRIMARYKEY(Sno)/*在表级定义主码*/);5.1实体完整性(续)实体完整性(续)如:

如:

CREATETABLESC(SnoCHAR(9)NOTNULL,CnoCHAR(4)NOTNULL,GradeSMALLINT,PRIMARYKEY(Sno,Cno)/*只能在表级定义主码*/);5.1实体完整性(续)实体完整性(续)2、实体完整性检查和违约处理插插入入记记录录或或对对主主码码列列进进行行更更新新操操作作时时,按按照照实实体完整性规则自动进行检查。

包括:

体完整性规则自动进行检查。

包括:

检查主码值是否唯一,如果不唯一则拒绝插入或修改。

检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改。

检查方法:

全表扫描(耗时),索引检查方法:

全表扫描(耗时),索引5.2参照完整性参照完整性可能破坏参照完整性的情况及违约处理被参照表被参照表(如如Student)Student)参照表参照表(如如SC)SC)违约处理违约处理可能破坏参照完整性可能破坏参照完整性插入元组插入元组拒绝拒绝可能破坏参照完整性可能破坏参照完整性修改外码值修改外码值拒绝拒绝删除元组删除元组可能破坏参照完整性可能破坏参照完整性拒绝拒绝/级连删除级连删除/设置为空值设置为空值修改主码值修改主码值可能破坏参照完整性可能破坏参照完整性拒绝拒绝/级连修改级连修改/设置为空值设置为空值5.2参照完整性(续)参照完整性(续)1、参照完整性定义FOREIGNKEY(属性列)/*定义列为外码*/REFERENCES表名(主码)/*参照哪些表的主码*/2、参照完整性检查和处理拒绝拒绝(NOACTION)执行执行默认策略级联级联(CASCADE)操作操作设置为空值(设置为空值(SET-NULL)对于参照完整性,除了应该定义外码,还应定义外码列是否允许空值。

5.2参照完整性(续)参照完整性(续)如:

如:

CREATETABLESC(SnoCHAR(9)NOTNULL,CnoCHAR(4)NOTNULL,GradeSMALLINT,PRIMARYKEY(Sno,Cno),FOREIGNKEY(Sno)REFERENCESStudent(Sno),FOREIGNKEY(Cno)REFERENCESCourse(Cno);5.2参照完整性(续)参照完整性(续)如:

如:

CREATETABLESC(SnoCHAR(9)NOTNULL,CnoCHAR(4)NOTNULL,GradeSMALLINT,PRIMARYKEY(Sno,Cno),FOREIGNKEY(Sno)REFERENCESStudent(Sno)ONDELETECASCADE/*删除Student记录时级联删除SC相应记录*/ONUPDATECASCADE,/*更新Student记录时级联更新SC相应记录*/FOREIGNKEY(Cno)REFERENCESCourse(Cno)ONDELETENOACTION/*删除Course记录使与SC不一致则拒绝删除*/ONUPDATECASCADE/*更新Course的Cno时级联更新SC相应记录*/);5.3用户自定义完整性用户自定义完整性1、不允许取空值NOTNULL2、列值唯一UNIQUE3、CHECK子句CHECK(约束条件表达式)4、违约处理方式拒绝5.3用户自定义完整性(续)用户自定义完整性(续)如:

如:

CREATETABLESC(SnoCHAR(9)NOTNULL,/*不允许取空值*/CnoCHAR(4)NOTNULL,/*不允许取空值*/GradeSMALLINT,PRIMARYKEY(Sno,Cno),FOREIGNKEY(Sno)REFERENCESStudent(Sno),FOREIGNKEY(Cno)REFERENCESCourse(Cno);5.3用户自定义完整性(续)用户自定义完整性(续)如:

如:

CREATETABLEDEPT(DeptnoNUMERIC

(2),DnameCHAR(9)UNIQUE,/*列值唯一*/LocationCHAR(10),PRIMARYKEY(Deptno);5.3用户自定义完整性(续)用户自定义完整性(续)如:

如:

CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,SnameCHAR(20)NOTNULL,SsexCHAR

(2)CHECK(SsexIN男,女,),/*Ssex属性只允许取男或女*/SageSMALLINT,SdeptCHAR(20);5.3用户自定义完整性(续)用户自定义完整性(续)如:

如:

CREATETABLESC(SnoCHAR(9)NOTNULL,CnoCHAR(4)NOTNULL,GradeSMALLINTCHECK(Grade=0ANDGrade=100),/*Grade只能取0-100之间的整数*/PRIMARYKEY(Sno,Cno),FOREIGNKEY(Sno)REFERENCESStudent(Sno),FOREIGNKEY(Cno)REFERENCESCourse(Cno);5.3用户自定义完整性(续)用户自定义完整性(续)如:

如:

CREATETABLEStudent(SnoCHAR(9),SnameCHAR(20)NOTNULL,SsexCHAR

(2)SageSMALLINT,SdeptCHAR(20),PRIMARYKEY(Sno),CHECK(Ssex=女ORSnameNOTLIKEMs.%)/*元组上的约束条件定义*/);5.4完整性约束命名子句完整性约束命名子句1、语法格式CONSTRAINT如:

如:

CREATETABLEStudent(SnoNUMERIC(6),SnameCHAR(20)CONSTRAINTC1NOTNULL,SsexCHAR

(2)CONSTRAINTC2CHECK(SsexIN(男,女),SageSMALLINTCONSTRAINTC3CHECK(Sage1beginprintCannotinsertrollbacktransactionendUPDATEUPDATE触发器的工作过程(续)触发器的工作过程(续)5.4触发器(续)触发器(续)INSTEADOF触发器可可以以在在表表和和视视图图上上定定义义INSTEADOF触触发发器器。

INSTEADOF触触发发器器代代替替原原触触发发动动作作执执行行,增增加了视图上所能进行的更新的种类。

加了视图上所能进行的更新的种类。

每每个个表表上上对对每每个个触触发发动动作作(INSERT、UPDATE或或DELETE)只能定义一个只能定义一个INSTEADOF触发器。

触发器。

不不能能在在具具有有WITHCHECKOPTION选选项项的的视视图图上创建上创建INSTEADOF触发器。

触发器。

例6:

创建一个包括学生和教师编号、姓名以及类别的视图,在视图上建立更新触发器,可通过视图更新结果返回到源基本表中。

createviewvw_s_t(ID,Name,Type)asSELECTgh,xm,teacherFROMjsUNIONSELECTxh,xm,studentFROMxsCREATETRIGGERtrg_vw_s_t_updateONvw_s_tINSTEADOFUPDATEASbeginIFUPDATE(Name)begindeclareIDnvarchar(255),namenvarchar(255),typenvarchar(15)selectID=ID,name=name,type=typefrominsertediftype=studentupdatexssetxm=namewherexh=IDiftype=teacherupdatejssetxm=namewheregh=IDendend1、插入选课记录时,检查若选课人数已满、插入选课记录时,检查若选课人数已满5人,则拒绝插入。

人,则拒绝插入。

2、在订单表、在订单表(ORDER)中插入或修改订购数量中插入或修改订购数量(NUM),必须满必须满足客户相应等级的数量上限和下限。

足客户相应等级的数量上限和下限。

CUSTOMERCUSTOMERLEVELORDER练习练习3、创创建建一一个个显显示示所所有有雇雇员员和和客客户户姓名的视图姓名的视图createviewvw_AllRelativesasselectcustomerIDasRelativeID,customerNameasRelativeName,CustomerasRelativeTypefromCustomersunionselectEmployeeIDasRelativeID,FirstName+LastNameasRelativeName,EmployeeasRelativeTypefromEmployeesGo希望通过视图删除其中的雇员或顾客信息希望通过视图删除其中的雇员或顾客信息deletefromvw_AllRelativeswhererelativeid=10008练习练习1、插入选课记录时,检查若该课程的选课人数已满、插入选课记录时,检查若该课程的选课人数已满5人,则人,则拒绝插入。

拒绝插入。

CREATETRIGGERtrg_SC_insertONSCAFTERINSERTASIF(SELECTCOUNT(*)FROMSC,INSERTEDWHERESC.CNO=INSERTED.CNO)5BEGINPRINT选课已满选课已满ROLLBACKtransactionEND练习1:

2、在订单表、在订单表(ORDER)中插入或修改订购数量中插入或修改订购数量(NUM),必须满必须满足客户相应等级的数量上限和下限。

足客户相应等级的数量上限和下限。

CUSTOMERCUSTOMERLEVELORDER练习2:

CREATETRIGGERCHECK_NUMONORDERAFTE

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 纺织轻工业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1