![数据库概论-完整性控制_第1页](http://file4.renrendoc.com/view/9c3d691a76e7ed12b8bed01c7c9e091a/9c3d691a76e7ed12b8bed01c7c9e091a1.gif)
![数据库概论-完整性控制_第2页](http://file4.renrendoc.com/view/9c3d691a76e7ed12b8bed01c7c9e091a/9c3d691a76e7ed12b8bed01c7c9e091a2.gif)
![数据库概论-完整性控制_第3页](http://file4.renrendoc.com/view/9c3d691a76e7ed12b8bed01c7c9e091a/9c3d691a76e7ed12b8bed01c7c9e091a3.gif)
![数据库概论-完整性控制_第4页](http://file4.renrendoc.com/view/9c3d691a76e7ed12b8bed01c7c9e091a/9c3d691a76e7ed12b8bed01c7c9e091a4.gif)
![数据库概论-完整性控制_第5页](http://file4.renrendoc.com/view/9c3d691a76e7ed12b8bed01c7c9e091a/9c3d691a76e7ed12b8bed01c7c9e091a5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库概论第四章完整性控制约束类型primarykeyuniqueforeignkeycheckdefault查看约束:sp_helpconstraintSysconstraints系统表列名数据类型描述constidint约束号idint拥有该约束的表IDcolidsmallint在其上定义约束的列ID,如果是表约束则为0statusint位图指示状态。可能的值包括:1=PRIMARYKEY约束
2=UNIQUEKEY约束3=FOREIGNKEY约束4=CHECK约束
5=DEFAULT约束
16=列级约束32=表级约束自定制sp_helpconstraintselect OBJECT_NAME(constid)'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与unique都是通过唯一性索引来支持它们有何区别?一个带有唯一性声明的属性上有多少个null?createtablet1( col1intunique, col2int, col3int, unique(col2,col3))Col1Col2Col313425nullnull6null如何表达:每位老师在一定时间内只能负责一个项目?primarykey与unique的背后EXECsp_helpindext1constraint_typeconstraint_nameconstraint_keysUNIQUE(non-clustered)UQ__tt__440B1D61col2,col3UNIQUE(non-clustered)UQ__tt__44FF419Acol1EXECsp_helpconstraintt1index_nameindex_descriptionindex_keysUQ__tt__440B1D61nonclustered,unique,uniquekeylocatedonPRIMARYcol2,col3UQ__tt__44FF419Anonclustered,unique,uniquekeylocatedonPRIMARYcol1foreignkey作为主码的关系称为基本关系,作为外码的关系称为依赖关系如何保证参照关系的完整性?仅仅监视依赖关系上的修改操作是不完备的如果基本关系中的行可以随意修改又会如何?dnodnamed1CSd2MATHsnosnamednos1Tomd1s2Bobd2dnodnamed2MATHsnosnamednos1Tomd1s2Bobd2deleted1foreignkey:三种定义方式RESTRICT方式:只有当依赖关系中没有一个外码值与要删除(更新)的基本关系的主码值相对应时,才可以删除(更新)该行(的主码),否则系统拒绝此删除操作CASCADE方式:将依赖关系中所有外码值与基本关系中要删除的主码值所对应的行一起删除(将依赖关系中所有与基本关系中要修改的主码值所对应的外码值一起修改为新值)SETNULL方式:删除(更新)基本关系中的行时,将依赖关系中与基本关系中被删(更新)主码值相对应的外码值置为空值外码的三种定义方式效果示例deleted1ondeleteRESTRICTondeleteSETNULLondeleteCASCADESQLServer外码定义方式:NOACTION、CASCADE、SETDEFAULTdnodnamed1CSd2MATHsnosnamednos1Tomd1s2Bobd2dnodnamed1CSd2MATHsnosnamednos1Tomd1s2Bobd2dnodnamed2MATHsnosnamednos2Bobd2dnodnamed2MATHsnosnamednos1Tomnulls2Bobd2全局约束涉及多个属性间的或多个关系间的联系(sno char(8),cno char(10),grade smallint,primaykey(sno,cno),check(snoin(selectsnofromS)),check(cnoin(selectcnofromC)))如果S中删除行,不会触发check检查,只有SC表的更新才会触发上述的check定义是否等价于外码?约束命名及其定义constraint约束名<约束条件>示例
snochar(8)constraintS_PK
primarykey约束的撤消与添加撤消用altertable…dropconstraint…添加用altertable…addconstraint…示例
alter
tableSdropconstraintS_PK
altertableSCaddconstraintSC_CHECK
check(snoinselectsnofromS)
约束检查Table1Col1_1(PK)Col1_2(FK)12Table2Col2_1(PK)Col2_2(FK)21相互参照的表,如何插入行?employeee#(PK)enamemgr(FK)e1tome2e2jerrye3e3bobnull自参照的表标准SQL中的延迟约束deferredconstraints将多个更新操作语句放入一个事务,在提交时才检查约束如何设置延迟约束?在约束创建时:
[not]deferrable initiallydeferred[immediate]对现有约束:
setconstraint约束名deferried延迟约束检查createtableemp( eno char(10)primarykey, ename char(20), mgr char(10)constraintFK_Constraintforeignkey referencesemp(eno)
deferrableinitiallyimmediate设置延迟约束:setconstraintFK_ConstraintdeferriedSQLServer的约束开关添加未验证的约束(withnocheck)createtablet1(col_aINT)insertintot1VALUES(-1)altertablet1withnocheck
addconstraintskip_checkcheck(col_a>1)insertintot1VALUES(-2)禁用并重新启用一个约束(nocheck)
altertablet1nocheck
constraintskip_checkinsertintot1VALUES(-2)altertablet1check
constraintskip_checkdbcccheckconstraints函数约束noGap(nointprimarykey,namevarchar(10))createfunction
fn_noGap_minUnusedKey()returnsintasbegin if(notexists(select*from
noGap
whereno=1))return1 declare@min_unused_no
int select @min_unused_no=min(no+1)
from
noGapNO1 where notexists (select * from
noGapNO2 where NO2.no=NO1.no+1) return@min_unused_noendaltertablenoGapaddconstraintDF_no
default(fn_noGap_minUnusedKey())forno函数约束要求每门课的选课人数不能多于100人。createfunction
fn_registerCount(@cno
varchar
)returnsintasbeginreturn (select
count(*)
from sc where cno=@cno)End为表sc列添加如下check约束:altertablesc addconstraint
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地板砖供货合同协议
- 有利于买家的采购合同模板
- 简单汽车租赁合同大全
- 销售合同合同范本
- 灭火器材的快速使用与效果评估
- 基于机器学习的光子太赫兹通信系统中几何整形技术研究
- 阴影环境下的全光函数采样与新视点重构研究
- 海拉尔盆地乌尔逊-贝尔凹陷油气成藏过程及有利目标预测
- 智能制造基地监理合同(2篇)
- 智能家居公司合并合同(2篇)
- 加油站廉洁培训课件
- 2022版义务教育(生物学)课程标准(附课标解读)
- 2023届上海市松江区高三下学期二模英语试题(含答案)
- 诫子书教案一等奖诫子书教案
- 《民航服务沟通技巧》教案第16课民航服务人员平行沟通的技巧
- 深圳市物业专项维修资金管理系统操作手册(电子票据)
- 2023年铁岭卫生职业学院高职单招(数学)试题库含答案解析
- 起重机械安装吊装危险源辨识、风险评价表
- 华北理工儿童口腔医学教案06儿童咬合诱导
- 中国建筑项目管理表格
- 高一3班第一次月考总结班会课件
评论
0/150
提交评论