资源描述:
《第4章完整性约束V1.2》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、电子科技大学计算机学院胡旺scuhuwang@126.com30八月2021《数据库原理及应用》第4章完整性约束ClicktoaddTitle1数据库完整性概述1ClicktoaddTitle2完整性约束的分类2ClicktoaddTitle2完整性约束的定义3ClicktoaddTitle1完整性约束的修改4ClicktoaddTitle1*完整性约束的验证5ClicktoaddTitle1*数据库产品的完整性支持6完整性约束是加在数据库模式上的一个具体条件,它规定什么样的数据能够存储到数据库系统中。例如:学生的年龄必须是整数,取值范围为14--29;学生的性别只能是“男”或“女”;学生的
2、学号一定是唯一的;学生所在的系必须是学校开设的系;数据完整性和安全性是两个不同概念数据的完整性是为了防止数据库中存在不符合语义的数据,防止错误数据的输入和输出所造成的无效操作和错误结果。数据的安全性是防止非法用户的非法操作所造成的对数据库的恶意破坏。完整性约束条件定义机制完整性约束条件:数据模型的组成部分,约束数据库中数据的语义DBMS应提供定义数据库完整性约束条件,并把它们作为模式的一部分存入数据库中完整性检查机制检查用户发出的操作请求是否违背了完整性约束条件违约反应如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性按照完整性约束条件作用的对象分:类型约束
3、属性约束关系变量约束数据库约束按照完整性约束条件声明时的位置分:列级约束表级约束两种状态静态:对静态对象的约束是反映数据库状态合理性的约束动态:对动态对象的约束是反映数据库状态变迁的约束,新旧值之间满足的约束PrimaryKey约束:实体完整性规则?列级约束CREATETABLERecipeMaster{RnoVARCHAR(10)PRIMARYKEY,DGnoVARCHAR(10),RdatetimeDATETIME}表级约束:单属性主键CREATETABLEMedicine{MnoVARCHAR(10),MnameVARCHAR(50)NOTNULL,MpriceDECIMAL(18,2
4、)NOTNULL,MunitVARCHAR(10),MtypeVARCHAR(10),PRIMARYKEY(Mno)}表级约束:多属性组合主键CREATETABLERecipeDetail{RnoVARCHAR(10),MnoVARCHAR(10)NOTNULL,MamountDECIMAL(18,0),PRIMARYKEY(Rno,Mno)}UNIQUE约束定义和PRIMARYKEY约束定义不能在同一属性上PRIMARYKEY子句中的每个属性的取值都必须是NOTNULL列级约束CREATETABLEDept{DeptNoVARCHAR(10)PRIMARYKEY,DeptNameVARCH
5、AR(50)UNIQUE,ParentDeptNoVARCHAR(10),ManagerVARCHAR(10)}索引对象约束CREATEUNIQUEINDEXdeptname_indexONdept(DeptName)UNIQUE与PrimaryKey在一个关系中,PRIMARYKEY只有一个,而UNIQUE可以声明多个PRIMARYKEY要求属性取值不能为NULL,而UNIQUE允许属性取空值,允许多个空值同时存在在定义了UNIQUE,PRIMARYKEY约束的属性上建立索引是十分必要的,它可以使约束的检查执行起来更有效列级约束CREATETABLEDiagnosis{DGnoVARCHA
6、R(10)PRIMARYKEY,PnoVARCHAR(10)NOTNULL,DnoVARCHAR(10)NOTNULL,SymptomVARCHAR(100),DiagnosisVARCHAR(100),DGtimeDATETIME,RfeeDECIMAL(18,2)NOTNULL}域对象约束CREATEDOMAINfeeDECIMAL(18,2)NOTNULL;表级约束CREATETABLEDoctor{DnoVARCHAR(10),DnameVARCHAR(50)NOTNULL,DsexVARCHAR(2),DageINT,DdeptnoVARCHAR(10),DlevelVARCHAR
7、(50),DsalaryDECIMAL(18,2),PRIMARYKEY(Dno),CHECK(DsexIN(‘男’,‘女’)),CHECK(Dage>0ANDDage<60)}域对象约束CREATEDOMAINrfeeDECIMAL(18,2)CONSTRAINTrfee_testCHECK(VALUE>0)SQL条件约束CREATETABLERecipeDetail{RnoVARCHAR(10),MnoV