数据库概论-完整性控制_第1页
数据库概论-完整性控制_第2页
数据库概论-完整性控制_第3页
数据库概论-完整性控制_第4页
数据库概论-完整性控制_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

数据库概论第四章完整性控制约束类型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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论