资源描述:
《数据库概论_完整性控制.pptx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四章完整性控制约束类型primarykeyuniqueforeignkeycheckdefault查看约束:sp_helpconstraintSysconstraints系统表列名数据类型描述constidint约束号idint拥有该约束的表IDcolidsmallint在其上定义约束的列ID,如果是表约束则为0statusint位图指示状态。可能的值包括:1=PRIMARYKEY约束2=UNIQUEKEY约束3=FOREIGNKEY约束4=CHECK约束5=DEFAULT约束16=列级约束32=表级约束自定制sp_helpconstraintselectOBJECT_NAME(cons
2、tid)'Constraintname',constid'ConstraintID',case(status&0xF)when1then'Primarykey'when2then'Unique'when3then'ForeignKey'when4then'Check'when5then'default'end'ConstraintType',case(status&0x30)when0x10then'Column'when0x20then'Table'else'NA'end'level'fromsysconstraintswhereid=OBJECT_ID('SC')primarykey与
3、unique都是通过唯一性索引来支持它们有何区别?一个带有唯一性声明的属性上有多少个null?createtablet1(col1intunique,col2int,col3int,unique(col2,col3))Col1Col2Col313425nullnull6null如何表达:每位老师在一定时间内只能负责一个项目?primarykey与unique的背后EXECsp_helpindext1constraint_typeconstraint_nameconstraint_keysUNIQUE(non-clustered)UQ__tt__440B1D61col2,col3UNIQUE
4、(non-clustered)UQ__tt__44FF419Acol1EXECsp_helpconstraintt1index_nameindex_descriptionindex_keysUQ__tt__440B1D61nonclustered,unique,uniquekeylocatedonPRIMARYcol2,col3UQ__tt__44FF419Anonclustered,unique,uniquekeylocatedonPRIMARYcol1foreignkey作为主码的关系称为基本关系,作为外码的关系称为依赖关系如何保证参照关系的完整性?仅仅监视依赖关系上的修改操作是不完备
5、的如果基本关系中的行可以随意修改又会如何?dnodnamed1CSd2MATHsnosnamednos1Tomd1s2Bobd2dnodnamed2MATHsnosnamednos1Tomd1s2Bobd2deleted1foreignkey:三种定义方式RESTRICT方式:只有当依赖关系中没有一个外码值与要删除(更新)的基本关系的主码值相对应时,才可以删除(更新)该行(的主码),否则系统拒绝此删除操作CASCADE方式:将依赖关系中所有外码值与基本关系中要删除的主码值所对应的行一起删除(将依赖关系中所有与基本关系中要修改的主码值所对应的外码值一起修改为新值)SETNULL方式:删除(更
6、新)基本关系中的行时,将依赖关系中与基本关系中被删(更新)主码值相对应的外码值置为空值外码的三种定义方式效果示例deleted1ondeleteRESTRICTondeleteSETNULLondeleteCASCADESQLServer外码定义方式:NOACTION、CASCADE、SETDEFAULTdnodnamed1CSd2MATHsnosnamednos1Tomd1s2Bobd2dnodnamed1CSd2MATHsnosnamednos1Tomd1s2Bobd2dnodnamed2MATHsnosnamednos2Bobd2dnodnamed2MATHsnosnamednos1
7、Tomnulls2Bobd2全局约束涉及多个属性间的或多个关系间的联系(snochar(8),cnochar(10),gradesmallint,primaykey(sno,cno),check(snoin(selectsnofromS)),check(cnoin(selectcnofromC)))如果S中删除行,不会触发check检查,只有SC表的更新才会触发上述的check定义是否等价于外码?约束命名及其定义cons