常熟理工数据库原理教程PPT-05PPT推荐.ppt
- 文档编号:15614793
- 上传时间:2022-11-08
- 格式:PPT
- 页数:65
- 大小:629.50KB
常熟理工数据库原理教程PPT-05PPT推荐.ppt
《常熟理工数据库原理教程PPT-05PPT推荐.ppt》由会员分享,可在线阅读,更多相关《常熟理工数据库原理教程PPT-05PPT推荐.ppt(65页珍藏版)》请在冰豆网上搜索。
对完整性的维护机制:
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)/*在表级定义主码*/);
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);
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);
CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,SnameCHAR(20)NOTNULL,SsexCHAR
(2)CHECK(SsexIN男,女,),/*Ssex属性只允许取男或女*/SageSMALLINT,SdeptCHAR(20);
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);
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:
CUSTOMERCUSTOMERLEVELORDER练习2:
CREATETRIGGERCHECK_NUMONORDERAFTE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 常熟 理工 数据库 原理 教程 PPT 05