




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、4.2 数据完整性实现技术(DDL)信息科学与工程学院杨金民2020.10数据完整性的四大保障措施:主键约束;外键约束;域约束;业务规则约束;数据完整性问题DDL介绍表模式(Schema)的定义中,包含了主键,外键,域约束的定义;业务规则约束用触发器(Trigger)来定义;SQL 标识符(Identifiers)数据库中的对象,有如下类别:表,列,视图,存储过程,函数,触发器,用户,角色,索引,用户自定义数据类型。例如,在数据库中创建一个表student,准确的说法是创建表类型的一个实例对象。该实例对象的名称字段的取值为student;这样一来,表的模式(Schema), 在DBMS内部也是
2、使用表来存储,设这个表为sys_table表。用户每创建一个表,其实就是往sys_table中添加一行数据;对于某个类别,在数据库中,其实例对象都是用名称来标识。名称命名规则:以字母开头,只含字母,数字,下划线,长度不超过128;SQL基本数据类型Data Type Description BOOLEAN 布尔类型 TRUE/FALSECHAR 固定长度的字符串,如 CHAR(10)VARCHAR 变长字符串,如 VARCHAR(50)NUMERIC or DECIMAL 数值型 NUMERIC(7,2)INTEGER IntegerSMALLINT 小整型 FLOAT or REAL 浮点数
3、. DATE 日类型 TIME 时间类型 TIMESTAMP 时间戳CHARACTER LARGE OBJECT SQL3 文本大对象BINARY LARGE OBJECT SQL3 二进制大对象表模式定义语句例子CREATE TABLE Emp (eno CHAR(5),ename VARCHAR(30) NOT NULL,birthday DATE,title CHAR(2) CHECK (title IN (NULL,EE,SA,PR,ME),salary DECIMAL(9,2),superno CHAR(5),dno CHAR(5)PRIMARY KEY (eno)FOREIGN K
4、EY (dno) REFERENCES Dept(dno)ON DELETE SET NULL ON UPDATE CASCADE FOREIGN KEY (superno) REFERENCESEmp(eno);引用完整性约束所指的一个方面StudentNamestudentNosexbirthdateMike2008043101male1990/12/14Tom2008043214female1992/02/21Mary2008043332female1988/07/09EnrollstudentNocourseNosemestergrade20080433324308032010/019
5、020080431014303172009/015620080431014303172008/025620080433324300072004/027720080433324306012000/018720080431014303172002/0256在Student表中的某一行记录:1)其主关键字studentNo被修改;2)被删除;3)被插入;在Enroll表中对应的记录怎么办?引用完整性约束StudentNamestudentNosexbirthdateMike2008043101male1990/12/14Tom2008043214female1992/02/21Mary2008043
6、332female1988/07/09EnrollstudentNocourseNosemestergrade20080433324308032010/019020080431014303172009/015620080431014303172008/025620080433324300072004/027720080433324306012000/018720080431014303172002/0256在Student表中的某一行记录:1)修改的其主关键字studentNo;2)删除某一行记录;3)插入一行新记录;1) CASCADE2) SET NULL3) NO ACTION引用完整性
7、约束所指的另一个方面StudentNamestudentNosexbirthdateMike2008043101male1990/12/14Tom2008043214female1992/02/21Mary2008043332female1988/07/09EnrollstudentNocourseNosemestergrade20080433324308032010/019020080431014303172009/015620080431014303172008/025620080433324300072004/027720080433324306012000/01872008043101
8、4303172002/0256在Enroll表中:添加一行记录;某行记录的外建字段studentNo的值被修改enroll表中行记录的外建字段studentNo的值在Student中要存在;表模式创建例子CREATE TABLE Enroll (sno CHAR(12) NOT NULL,cno CHAR(8) NOT NULL,semester CHAR(7), tno CHAR(7),classNo CHAR(2);grade SMALLINTPRIMARY KEY (sno, cno, semester)FOREIGN KEY (sno) REFERENCES student(sno)
9、ON DELETE CASCADE ON UPDATE CASCADE,FOREIGN KEY (cno) REFERENCES course(cno) ON DELETE NO ACTION ON UPDATE CASCADE FOREIGN KEY (tno) REFERENCES teacher(to) ON DELETE SET NULL ON UPDATE CASCADE );课堂练习CourseNamecourseNocredithourstextbooksyllabusdtuy_tnodnodatabaseA240608464aintroduction200421324opera
10、ting system430803464ball200100724java430317348csectionnull24写出Course表的模式定义语句 用户对某个表执行行更新元组约束 1)域约束:当前数据行,每个字段取值受其域约束:data type,取值范围,NOT NULL,UNIQUE等;2)业务规则约束当前行数据,不同字段的取值彼此之间存在关联约束;当前行数据,它受该表中已有行的约束;当前行数据,它受其它表中已有行的约束;业务规则约束的表达1)当前行数据,每个字段取值受其域约束:data type,domain,NOT NULL 等;2)当前行数据,不同字段的取值彼此之间存在关联约束
11、;例如:CREATE TABLE student (studentNo CHAR(10) NOT NULL,honors CHAR(1),grade DECIMAL(4,1)CHECK ( (honors = Y AND grade 85) OR honors = N);3)当前行数据,它受该表中已有行的约束;4)当前行数据,它受其它表中已有行的约束;使用触发器实现比较后两类业务规则约束(相对复杂)触发器表:TableNameTableTypeOperationTypeFieldNameTriggerTypeTriggerNameTriggerCodeenrolltableINSERTnull
12、BEFOREenroll_insert.teachertableUPDATEsalaryAFTERsalary_update.staffviewINSERTnullINSTEAD OFtransfer_insertstaffviewDELETEnullINSTEAD OFtransfer_delete理解业务规则约束的触发器实现机制Thread:while (1) waitForClientRequest(Request); try 解析请求:操作类型,表,字段;对更新操作,查触发器表: if (有BEFORE触发器) 分别调用它们; if (有INSTEAD OF触发器) 分别调用它们 el
13、se 执行请求操作; if (有AFTER触发器) 分别调用它们; catch exception(e) . 使用触发器实现每学期选课不超过25学分CREATE TRIGGER trigger_insertEnrollBEFORE INSERT ON enrollREFERENCING NEW ROW AS newFOR EACH ROWBEGINcredit integerSELECT SUM(credit) INTO credit FROM course WHERE courseId IN (SELECT courseId FROM enroll WHERE studentId = new
14、.studentId AND semester =new.semester) OR courseId = new.courseId;WHEN ( credit 25 ) raise_application_error(20000, 这个学期已经选修学分 + credit);END;实现每个房间的预订不重叠冲突CREATE TRIGGER trigger_insertBookingBEFORE INSERT ON bookingREFERENCING NEW ROW AS newFOR EACH ROWBEGINWHEN( EXIST SELECT hotelNo, roomNo FROM bo
15、oking WHERE hotelNo = newrow.hotelNo AND roomNo =new.roomNo AND dateTo = new.dateFrom AND dateFrom old.salary*1.1) INSERT INTO auditEmpVALUES (new.eno, date(now(), new.salary, old.salary);事件条件动作随堂测试基于触发器放入业务规则定义1)对老师表,rank的取值有:教授,副教授,助理教授。要求:职称级别低的工资不能高于职称级别高的老师的工资;2) 当员工表中的某个员工被删除时,该员工在workOn表中相应的记
16、录也要求一同删除;删除或者修改中的一个对象DROP TABLE emp;ALTER TABLE emp .;DROP VIEW staff;ALTER VIEW staff .;DROP PROCEDURE add_enroll;ALTER PROCEDURE add_enroll;DROP TRIGGER staff_insert;ALTER TRIGGER staff_insert;关系数据库模型的知识图谱审计踪迹记录权限管理对象权限用户授权收权触发器业务规则约束完整性约束主键约束域约束外键约束SQL表达应用程序屏蔽编程可视化数据存储过程个性化数据屏蔽SQL视图屏蔽联接业务数据数据库中的对
17、象应用程序(视图和存储过程)存储过程视图表触发器(完整性约束)用户(权限管理)索引数据库管理系统(DBMS)SQL DDL创建 CREATE;删除 DROP;修改ALTER;数据库设计人员SQL DMLSELECT;DELETE;UPDATE;INSERT;Statistics;CALL;数据库使用人员什么时候定义成视图?什么时候定义成存储过程?阶段考试题希尔顿是一跨国旅馆经营公司,其数据库系统中有如下4个表:Hotel (hotelNo, name, city)Room (roomNo, hotelNo, type, price)Booking (hotelNo, guestId, dateFrom, dateTo, roomNo)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 等我拿下数学试卷
- 甘肃金太阳高一数学试卷
- 肌内效贴技术课件
- 2025年03月临沂临沭县部分医疗卫生事业单位公开招聘卫生类岗位工作人员(38名)笔试历年专业考点(难、易错点)附带答案详解
- 2025年04月四川广元市旺苍县人民医院招聘药学等专业人员3人笔试历年专业考点(难、易错点)附带答案详解
- 陈列手法培训课件
- 阜阳美睫培训课件
- 面试人员培训课件
- 财富传家b课件培训
- 2025至2030茶几行业市场深度研究及发展前景投资可行性分析报告
- 2025届黑龙江省大庆中学九上化学期末联考试题含解析
- 20湿性愈合功能性敷料的种类与敷料选择
- 2025-2030中国氧化锌行业发展现状及发展趋势与投资风险分析
- 燃气报警器行业发展分析及投资战略研究报告2025-2028版
- 2025年中国扭蛋行业市场全景分析及前景机遇研判报告
- 2025至2030中国现金处理中心行业发展趋势分析与未来投资战略咨询研究报告
- 小学音标题目及答案
- 期末模拟卷译林版八年级英语下学期
- 2025年湖北省中考英语真题试卷
- 沈阳市重点中学2025届英语七下期末监测模拟试题含答案
- 智能印章使用管理制度
评论
0/150
提交评论