数据完整性问题 数据完整性的四大保障措施 : 主键约束 ; 外键约束 ; 域约束 ; 业务规则约束 ;

Similar documents
學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘

数 据 库 系 统 基 础 2/54 第 6 章 数 据 库 管 理 与 维 护

untitled

1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2

untitled

untitled

目錄

DB2 (join) SQL DB2 11 SQL DB2 SQL 9.1 DB2 DB2 ( ) SQL ( ) DB2 SQL DB2 DB2 SQL DB2 DB2 SQL DB2 ( DB2 ) DB2 DB2 DB2 SQL DB2 (1) SQL (2) S

ebook 165-5

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

untitled

数据库系统概论

Oracle Database 10g: SQL (OCE) 的第一堂課

习题1

第1章 簡介

四川省普通高等学校

Oracle高级复制配置手册_业务广告_.doc

ebook46-23

教 学 目 标 描 述 主 要 数 据 库 对 象 创 建 表 描 述 列 定 义 时 可 用 的 数 据 类 型 改 变 表 的 定 义 删 除 改 名 和 截 断 表 描 述 每 个 DML 语 句 插 入 行 到 表 中 更 新 表 中 的 行 从 表 中 删 除 行 描 述 约 束 创 建

未命名

untitled

Microsoft PowerPoint - Ch6

coverage2.ppt

123

ebook45-5

RUN_PC連載_12_.doc

ebook 96-16

回滚段探究

3.1 num = 3 ch = 'C' 2

MySQL資料庫教學

PowerPoint Presentation

基于ECO的UML模型驱动的数据库应用开发1.doc

untitled

Microsoft PowerPoint - Lecture7II.ppt

科学计算的语言-FORTRAN95

錄...1 說...2 說 說...5 六 率 POST PAY PREPAY DEPOSIT 更

untitled

SQL Server SQL Server SQL Mail Windows NT

59 1 CSpace 2 CSpace CSpace URL CSpace 1 CSpace URL 2 Lucene 3 ID 4 ID Web 1. 2 CSpace LireSolr 3 LireSolr 3 Web LireSolr ID

ebook 132-2

모집요강(중문)[2013후기외국인]04.26.hwp

CDWA Mapping. 22 Dublin Core Mapping

使用SQL Developer

Microsoft Word - 序+目錄.doc

穨control.PDF

Microsoft Word - 11.doc

USPTO Academic research Corporate needs Global/International Inventors Libraries News Media/Publication Patent Attorney or Agent USPTO e (ebusiness Ce

Microsoft Word - template.doc

Microsoft Word - Final Exam Review Packet.docx

11页词库答案

untitled

untitled

Lorem ipsum dolor sit amet, consectetuer adipiscing elit

Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provided by SUNPLUS TECHNOLO

投影片 1

EJB-Programming-3.PDF

SP_ SP_03 JAVA...6 SP_10 SQL...8 SP_ SP_ SP_ SP_ SP_ SP_ SP_ SP_04.NET...33 SP_02 C...37 SP_05

摘 要 文 德 甲 新 村 (Kampung Suria Mentakab), 位 于 彭 亨 中 部, 属 于 淡 馬 魯 市 所 管 辖 她 距 离 淡 马 鲁 市 区 约 11 公 里, 而 距 离 而 连 突 大 约 50 公 里 文 德 甲 新 村 路 口 外 就 是 文 德 甲 市 区,

RUN_PC連載_8_.doc

数据库系统概论

untitled

untitled

三. 发现表被删除, 开始着手解决 1. 该表所在表空间离线 ( 确保删除表所在位置不会被重写 ) SQL> alter tablespace raw_odu offline; Tablespace altered. 2. 通过 logmnr, 找出被删除的数据 data _object _id 1

Chapter 9: Objects and Classes

jdbc:hsqldb:hsql: jdbc:hsqldb:hsqls: jdbc:hsqldb:http: jdbc:hsqldb:https: //localhost // :9500 / /dbserver.somedomain.com /an_alias /enrollme

RunPC2_.doc

Process Data flow Data store External entity 6-10 Context diagram Level 0 diagram Level 1 diagram Level 2 diagram

Microsoft Word - 01.DOC

数 据 库 管 理 第 章 (1) 创 建 一 个 简 单 的 表 空 间 Create tablespace user1 datafile 'e:\database\oracle\user1_data.dbf' size 00M; () 指 定 数 据 文 件 的 可 扩 展 性 Create t

92 (When) (Where) (What) (Productivity) (Efficiency) () (2) (3) (4) (5) (6) (7) em-plant( SiMPLE++) Scheduling When Where Productivity Efficiency [5]

國立中山大學學位論文典藏

一步一步教你搞网站同步镜像!|动易Cms

第1套

项目 3 创建和管理表 任务实现 Office Visio PK 3 FK FK1 3.1 相关知识 SQL Server 一 制订表规划 1. 表要存储什么对象 2. 表中每一列的数据类型和长度 059

01 SQL Server SQL Server 2008 SQL Server 6-1 SSIS SQL Server ( master ) ( msdb ) SQL Server ( master ) master 6-1 DTS sysadmin 6-1 sysa

Microsoft Word - Sailor-SQL-Exercise.doc

89???????q?l?????T??

<4D F736F F D20BBB7BEB3D0C5CFA2CFB5CDB3CAFDBEDDBFE2B7C3CECABDD3BFDAB9E6B7B6A3A8B1A8C5FAB8E5A3A E646F63>

R D B M S O R D B M S R D B M S / O R D B M S R D B M S O R D B M S 4 O R D B M S R D B M 3. ORACLE Server O R A C L E U N I X Windows NT w w

Microsoft Word - Front cover_white.doc

2017 CCAFL Chinese in Context

27 :OPC 45 [4] (Automation Interface Standard), (Costom Interface Standard), OPC 2,,, VB Delphi OPC, OPC C++, OPC OPC OPC, [1] 1 OPC 1.1 OPC OPC(OLE f

Microsoft Word _4.doc

(Geographic data or geodata ) 30 (Buelher, K and L. Mckee1996) (Open GIS Consortium OGC) OGC GIS Open GIS OGC (Geography Markup Langu

untitled

精 品 库 我 们 的 都 是 精 品 _www.jingpinwenku.com (8) 数 据 库 数 据 库 系 统 和 数 据 库 管 理 系 统 之 问 的 关 系 是 ( ) A) 数 据 库 包 括 数 据 库 系 统 和 数 据 库 管 理 系 统 B) 数 据 库 系 统 包 括

epub 94-3

Oracle高级复制冲突解决机制的研究

LEETCODE leetcode.com 一 个 在 线 编 程 网 站, 收 集 了 IT 公 司 的 面 试 题, 包 括 算 法, 数 据 库 和 shell 算 法 题 支 持 多 种 语 言, 包 括 C, C++, Java, Python 等 2015 年 3 月 份 加 入 了 R

○○大學(或學院)九十五年度系所評鑑

2007

Microsoft Word - (web)_F.1_Notes_&_Application_Form(Chi)(non-SPCCPS)_16-17.doc

PowerPoint Presentation

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

Front 2 Polar F11 ( ) : Polar F11 Polar F11 Polar F11 Polar (Keeps U Fit - Own Workout Program) Polar Polar F11 Polar F11 Polar F11 Polar (

2015 Chinese FL Written examination

ARguide.doc

(Microsoft PowerPoint - UML\302\262\244\266_use case.ppt)

ebook10-5

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

Transcription:

Database Systems 主题三 : 数据完整性实现技术 DDL 信息科学与工程学院 Jin-Min Yang 2018.09

数据完整性问题 数据完整性的四大保障措施 : 主键约束 ; 外键约束 ; 域约束 ; 业务规则约束 ;

DDL layout Definition of Schema of Table Trigger( 触发器 ): 业务规则约束 ;

SQL Identifiers Identifiers are used to identify objects in the database such as tables, views, and columns. The identifer is the name of the database object. An SQL identifier (name) must follow these rules: 1) only contain upper or lower case characters, digits, and underscore ("_") character 2) be no longer than 128 characters 3) must start with a letter 4)cannot contain spaces.

Attributes of relation In SQL, Attribute (column, field ) name (identifier); each column (attribute) has a data type that limits the values that it may store. Attribute value constraint: domain;

SQL Data Types Data Type Description BOOLEAN TRUE or FALSE CHAR Fixed length string (padded with blanks) e.g. CHAR(10) VARCHAR Variable length string e.g. VARCHAR(50) NUMERIC or DECIMAL e.g NUMERIC(7,2) INTEGER Integer data only SMALLINT Smaller space than INTEGER FLOAT or REAL Approximate numeric data types. DATE Stores YEAR, MONTH, DAY TIME Stores HOUR, MINUTE, SECOND TIMESTAMP Stores date and time data. CHARACTER LARGE OBJECT SQL3 BINARY LARGE OBJECT SQL3

Example CREATE TABLE Emp ( eno CHAR(5), ename VARCHAR(30) NOT NULL, bdate DATE, title CHAR(2) CHECK (title IN (NULL,'EE','SA','PR','ME')), salary DECIMAL(9,2), supereno CHAR(5), dno CHAR(5) PRIMARY KEY (eno) FOREIGN KEY (dno) REFERENCES Dept(dno) ON DELETE SET NULL ON UPDATE CASCADE );

引用完整性约束 Student Name studentno sex birthdate Mike 2008043101 male 1990/12/14 Tom 2008043214 female 1992/02/21 Mary 2008043332 female 1988/07/09 Enroll 在 Student 表中的某一行记录 : 1) 修改的其主关键字 studentno; 2) 删除某一行记录 ; 3) 插入一行新记录 ; studentno courseno semester grade 2008043332 430803 2010/01 90 2008043101 430317 2009/01 56 2008043101 430317 2008/02 56 2008043332 430007 2004/02 77 2008043332 430601 2000/01 87 2008043101 430317 2002/02 56 在 Enroll 表中对应 的记录怎么办?

引用完整性约束 Student Name studentno sex birthdate Mike 2008043101 male 1990/12/14 Tom 2008043214 female 1992/02/21 Mary 2008043332 female 1988/07/09 在 Student 表中的某一行记录 : 1) 修改的其主关键字 studentno; 2) 删除某一行记录 ; 3) 插入一行新记录 ; Enroll studentno courseno semester grade 2008043332 430803 2010/01 90 2008043101 430317 2009/01 56 2008043101 430317 2008/02 56 2008043332 430007 2004/02 77 2008043332 430601 2000/01 87 2008043101 430317 2002/02 56 1) CASCADE 2) SET NULL 3) NO ACTION

表模式的创建 CREATE TABLE Enroll ( studentno CHAR(5) NOT NULL, courseno CHAR(5) NOT NULL, semester CHAR(7), grade SMALLINT PRIMARY KEY (studentno, courseno, semester) FOREIGN KEY (studentno) REFERENCES student(studentno) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (courseno) REFERENCES course(courseno) ON DELETE NO ACTION ON UPDATE CASCADE );

Table definition practice question Student Name studentno sex birthdate Mike 2008043101 male 1990/12/14 Tom 2008043214 female 1992/02/21 Mary 2008043332 female 1988/07/09 Course Name courseno textbook syllabus database 430601 a introduction operating system 430803 b all java 430317 c section Enroll studentno courseno semester grade 2008043332 430803 2010/01 90 2008043101 430317 2009/01 56 2008043101 430317 2008/02 56 2008043332 430007 2004/02 77 2008043332 430601 2000/01 87 2008043101 430317 2002/02 56 Write DDL for table: Enroll, student

业务规则约束 : 用户对某个表进行行更新 ( 修改, 添加, 删除 ) 时, 所做的更新要符合业务规则 元组约束 1) 当前行数据, 每个字段取值受其域约束 :data type, domain,not NULL 等 ; 2) 当前行数据, 不同字段的取值彼此之间存在关联约束 ; 例如 : 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) 当前行数据, 它受其它表中已有行的约束 ;

业务规则约束的表达 1) 当前行数据, 每个字段取值受其域约束 :data type, domain,not NULL 等 ; 2) 当前行数据, 不同字段的取值彼此之间存在关联约束 ; 例如 : 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) 当前行数据, 它受其它表中已有行的约束 ;

使用触发器实现比较后两张业务规则约束 ( 相对复杂 ) 触发器表 : Table Name Table Type Operation Type Field Name Trigger Type Trigger Name Trigger Code enroll table INSERT null BEFORE enroll_i nsert teacher table UPDATE salary AFTER salary_ update...... staff view INSERT null INSTEAD OF transfer _insert staff view DELETE null INSTEAD OF transfer _delete

用触发器来实现后两类相对复杂的业务规则 Thread: while (1) { 约束 waitforclientrequest(request); try { 解析请求 : 操作类型, 表, 字段 ; 对更新操作, 查触发器表 : if ( 有 BEFORE 触发器 ) 分别调用它们 ; if ( 有 INSTEAD OF 触发器 ) 分别调用它们 else 执行请求操作 ; } } if ( 有 AFTER 触发器 ) 分别调用它们 ; catch exception(e) {... }

使用触发器实现每学期选课不超过 25 学分

实现每个房间的预订不重叠冲突

实现对视图执行更新操作 CREATE VIEW staff (deptname, e_no,name,job, birthday) AS SELECT dname,e_no,emp.name, title, bdate FROM emp, dept WHERE emp.d_no = dept.dno AND DeptName = Accounting';

实现对视图执行更新操作

使用触发器来执行审计 CREATE TRIGGER cheatingemployee AFTER UPDATE OF salary ON Emp REFERENCING OLD ROW AS old NEW ROW AS new FOR EACH ROW WHEN (@new.salary > @old.salary*1.1) INSERT INTO auditemp VALUES (@new.eno, date(now()), @new.salary, @old.salary); 事件 条件 动作

业务规则的表达测试 1) 老师中, 职称级别低的工资不能高于职级高的老师的工资. 2) 当员工表中的额某个员工被删除时, 该员工在 workon 表中 相应的记录也要求一同删除.

删除或者修改中的一个对象 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 表达

数据库中的对象 数据库设计人员 SQL DDL 创建 CREATE; 删除 DROP; 修改 ALTER; 应用程序 ( 视图和存储过程 ) 1 存储过程 2 视图 3 表 4 触发器 ( 完整性约束 ) 5 用户 ( 权限管理 ) 6 索引数据库管理系统 (DBMS) 数据库使用人员 SQL DML SELECT; DELETE; UPDATE; INSERT; Statistics; CALL; 什么时候定义成视图? 什么时候定义成存储过 程?

第六次作业 希尔顿是一跨国旅馆经营公司, 其数据库系统中有如下 4 个表 : Hotel (hotelno, name, city) Room (roomno, hotelno, type, price) Booking (hotelno, guestid, datefrom, dateto, roomno) Guest (guestid, name, guestcity, creditcard) 1) 使用 SQL 的 DDL 写出 Booking 表的定义, 要求至少包含一条业务 规则约束 ; 书上 :7.11;8.11;8.12;

测试题 希尔顿是一跨国旅馆经营公司, 其数据库系统中有如下 4 个表 : Hotel (hotelno, name, city) Room (roomno, hotelno, type, price) Booking (hotelno, guestid, datefrom, dateto, roomno) Guest (guestid, name, guestcity, creditcard) 1) 使用 SQL 的 DDL 写出 Booking 表的定义, 要求至少包含一条业务 规则约束 ; 2) 在 Booking 表中, 某一旅馆的某一个房间在某一天不能出现重复预 定的情况 今天是 2014/04/09, 某个客户想要在 hotelno 为 01 的旅馆预定从 2014/4/10 至 2014/4/12 的一个 双人间 房 间, 请列出可供他选择的房间号 (roomno); 3) 今天是 2012/04/09, 问昨天每个旅馆的空房损失分别是多少? 4) 用触发器实现订房不能出现重叠的业务规则约束 ;