数据库系统概论基础篇——第5讲 数据库完整性

数据库系统概论 思维导图 阅读详情

5.1 实体完整性

5.1.1 定义实体完整性

关系模型的实体完整性在CREATE TABLE中用PRIMARY KEY定义。对单属性构成的码有两种说明方法,一种是定义为列级约束条件,另一种是定义为表级约束条件。对多个属性构成的码只有一种说明方法,即定义为表级约束条件。

// 将Student表中的Sno属性定义为码
CREATE TABLE Student(
	Sno CHAR(9) PRIMARY KEY,   /* 在列级定义主码 */
	Sname CHAR(20) NOT NULL,
	Ssex CHAR(2),
	Sage SMALLINT,
	Sdept CHAR(20)
);
// 或者
CREATE TABLE Student(
	Sno CHAR(9),
	Sname CHAR(20) NOT NULL,
	Ssex CHAR(2),
	Sage SMALLINT,
	Sdept CHAR(20),
	PRIMARY KEY (Sno)   /* 在表级定义主码 */
);

// 将SC表中的Sno, Cno属性组定义为码
CREATE TABLE SC(
	Sno CHAR(9) NOT NULL,
	Cno CHAR(4) NOT NULL,
	Grade SMALLINT,
	PRIMARY KEY(Sno, Cno)   /* 只能在表级定义主码 */
);

5.2 参照完整性

5.2.1 定义参照完整性

关系模型的参照完整性在CREATE TABLE 中用FOREIGN KEY短语定义哪些列为外码,用REFERENCES短语指明这些外码参照哪些表的主码。

例如,关系SC中一个元组表示一个学生选修的某们课程的成绩,(Sno, Cno)是主码。Sno、Cno分别参照引用Student表的主码和Course表的主码。

CREATE TABLE SC(
	Sno CHAR(9) NOT NULL,
	Cno CHAR(4) NOT NULL,
	Grade SMALLINT,
	PRIMARY KEY(Sno, Cno),   /* 只能在表级定义主码 */
	FOREIGN KEY (Sno) REFERENCES Student(Sno), /* 在表级定义参照完整性 */
	FOREIGN KEY (Cno) REFERENCES Course(Cno)  /* 在表级定义参照完整性 */
);

5.3 用户定义的完整性

5.3.1 属性上的约束条件

在CREATE TABLE中定义属性的同时,可以根据应用要求定义属性上的约束条件,即属性值限制,包括:

  • 列值非空(NOT NULL)
  • 列值唯一(UNIQUE)
  • 检查列值是否满足一个条件表达式(CHECK短语)
CREATE TABLE Student(
	Sno CHAR(9) PRIMARY KEY,   /* 在列级定义主码 */
	Sname CHAR(20) NOT NULL,
	Ssex CHAR(2) CHECK (Ssex IN ('男', '女')),
							   /* 性别属性Ssex只允许取‘男’或‘女’ */
	Sage SMALLINT,
	Sdept CHAR(20)
);

CREATE TABLE SC(
	Sno CHAR(9) NOT NULL,
	Cno CHAR(4) NOT NULL,
	Grade SMALLINT CHECK (Grade >= 0 AND Grade <= 100), 
								/* Grade取值范围是0到100*/
	PRIMARY KEY(Sno, Cno),   /* 只能在表级定义主码 */
	FOREIGN KEY (Sno) REFERENCES Student(Sno), /* 在表级定义参照完整性 */
	FOREIGN KEY (Cno) REFERENCES Course(Cno)  /* 在表级定义参照完整性 */
);

5.3.2 元组上的约束条件

与属性上约束条件的定义类似,在CREATE TABLE语句中可以用CHECK短语定义元组上的约束条件,即元组级的限制。同属性值限制相比,元组级的限制可以设置不同属性之间的取值的相互约束条件。

// 当学生的性别是男时,其名字不能以Ms.开头
CREATE TABLE Student(
	Sno CHAR(9),
	Sname CHAR(20) NOT NULL,
	Ssex CHAR(2) CHECK (Ssex IN ('男', '女')),
	Sage SMALLINT,
	Sdept CHAR(20),
	PRIMARY KEY (Sno),    	 /* 在表级定义主码 */
	CHECK (Ssex='女' OR Sname NOT LIKE 'Ms.%')
					/* 定义了元组中Sname和Ssex两个属性值之间的约束条件 */
);

5.4 完整性约束命名子句

以上讲解的完整性约束条件都是在CREATE TABLE语句中定义,SQL还在CREATE TABLE语句中提供了完整性约束命名子句CONSTRAINT,用来对完整性约束条件命名,从而可以灵活地增加、删除一个完整性约束条件。
** 1. 完整性约束命名子句**

CONSTRAINT <完整性约束条件名> <完整性约束条件>
// <完整性约束条件>包括NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK短语等

CREATE TABLE Student(
	Sno NUMERIC(6)
		CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999),
	Sname CHAR(20) 
		CONSTRAINT C2 NOT NULL,
	Sage NUMERIC(3)
		CONSTRAINT C3 CHECK(Sage < 30),
	Ssex CHAR(2) 
		CONSTRAINT C4 CHECK (Ssex IN ('男', '女')),
	CONSTRAINT StudentKey PRIMARY KEY (Sno)    	 /* 在表级定义主码 */
);

ALTER TABLE Student
	DROP CONSTRAINT C4;

ALTER TABLE Student
	DROP CONSTRAINT C1;
ALTER TABLE Student
	ADD CONSTRAINT C1 CHECK (Sno BETWEEN 900000 AND 999999);
ALTER TABLE Student
	DROP CONSTRAINT C3;
ALTER TABLE Student
	ADD CONSTRAINT C3 CHECK (Sage < 40);

*5.5 域中的完整性限制(略)

5.6 断言

在SQL中可以使用数据定义语言中的CREATE ASSERTION语句,通过声明性断言(declarative assertions)来指定更具一般性的约束。可以定义涉及多个表或聚集操作的比较复杂的完整性约束。断言创建以后,任何对断言中所涉及关系的操作都会触发关系数据库管理系统对断言的检查,任何使断言不为真值的操作都会被拒绝执行。
1. 创建断言的语句格式

CREATE ASSERTION <断言名> <CHECK 子句>;

// 限制数据库课程最多60名学生选修
CREATE ASSERTION ASSE_SC_DB_NUM
	CHECK (60 >= (SELECT count(*)
				FROM Course,SC
				WHERE SC.Cno = Course.Cno AND Course.Cname = '数据库')
		);
// 每当学生选修课程时,将在SC表中插入一条元组(Sno, Cno, NULL),ASSE_SC_DB_NUM断言被触发检查。
// 如果选修数据库课程的人数已经超过60人,CHECK子句返回值为“假”,对SC表的插入操作被拒绝。

5.7 触发器(暂略)

触发器(trigger)是用户定义在关系表上的一类由事件驱动的特殊过程。

数据库系统概论知识点总结 还有一周就期末考试了 ,是时候开始复习了,懒得写字,就在这里写写复习笔记记录些自己认为是重点的东西吧。 ---------------------------------------------------------------------------------------------------------------------------------------------------... 阅读详情

相关推荐

数据库系统概论(第5版) 个人整理详细笔记——基础篇

本篇介绍数据库系统的基本概念和基础知识。 目录 第1章:绪论 1.1、数据库系统概述 1.2、数据模型 1.3、数据库系统的结构 1.4、数据库系统组成 1.5、小结 第2章:关系数据库 2.1、关系数据库及形式化定义 2.2、关系操作 2.3、关系的完整性 2.4、关系代数 *2.5、关系演算 2.6、小结 第3章:关系数据库标准语言SQL 3.1、SQL概述...

大白的博客 1万+

微视视频搜索数据接口

微视视频搜索数据接口

binary66的博客 5908

《数据库系统概论》知识整理

第一节 一、相关概念 1. Data:数据,是数据库中存储的基本对象,是描述事物的符号记录。 2. Database:数据库,是长期储存在计算机内、有组织的、可共享的大量数据的集合。 3. DBMS:数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,用于科学地组织、存储和管理数据、高效地获取和维护数据。 4. DBS...

m0_37768843的博客 3万+

以開源碼 dansguardian+tinyproxy 實作色情守門員

前言 相信每個父母都曾有這樣的經驗:小孩子躱在房裏通宵達旦的衝浪。您會很好奇,到底是什麼樣的網站可以讓人這麼無怨無悔,廢寢忘食。而在網路犯罪事件層出不窮的今日,更會擔心自己的心肝寶貝因涉世未深,而無法拒絕網路上的誘惑,甚至發生無法彌補的遺憾。因此,坊間有一些 ISP 業者提供如「色情守門員」服務來過濾不當的網頁。對岸前一陣子鬧的沸沸揚揚的「綠霸」事件(規定新出廠的電腦上要預先安裝過濾軟體,以過濾

jasenwan88的专栏 6158

《数据库系统概论》期末复习笔记

数据库基础知识大全

念诚的备忘录 1万+

数据库系统概论复习笔记

Abstract: 数据库系统概论期末复习笔记 ~btw:欢迎关注 ~ Github: https://github.com/ScarlettYellow个人博客:https://scarletthuang.cn/PART1 数据库概述关系模型的构成:关系数据结构、关系操作集合、关系完整性约束。1.1 数据库发展1.数据库发展过程:2.三个时期的比较:1.2 基本概念1.数据模型三个要求:真实模拟...

ScarlettYellow的博客 2万+

sex 14 java_好程序员Java分享Mybatis必会的动态SQL

原标题:好程序员Java分享Mybatis必会的动态SQL好程序员Java分享Mybatis必会的动态SQL,前言Mybatis可谓是java开发者必须会的一项技能。MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 ...

weixin_30767365的博客 3122

数据库系统概论习题 数据库系统概论

一单项选择题 试题1 在数据库中,产生数据不一致的根本原因是( ) 数据冗余 未对数据进行完整性控制 没有严格保护数据 数据存储量太大 [参考答案] 数据冗余 试题2 数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)三者之间的关系是( ) DB包括DBS和DBMS DBS包括DB和DBMS DBMS包括DB和DBS DBS就是DB,也就是DBMS [参考答案] DBS包括DB和DBMS 试题3 下述关于数据库系统的正确叙述是(...

Move on 2420

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <sty

Title img,div,body{margin: 0;padding: 0;} .orgindiv {width: 200px;height: 200px;position: relative;float: left;margin-left: 100px;} .orgindiv img{width: 100%;height: 100%;}

u014497548的博客 63万+

《数据库系统概论(第5版)》课后习题答案 王珊、萨师煊编著版 课后题解析 高等教育出版社出版 答案与解析第二篇 第1章 课后答案与解析

数据库系统概论(第5版)课后答案 《数据库系统概论(第5版)》课后习答案 王珊、萨师煊编著版 课后题解析 高等教育出版社出版 答案与解析 《数据库系统概论(第5版)》 王珊、萨师煊编著版 第二篇 第1章 课后答案与解析 完整答案在页面最下方 前言 第一篇 基 础 篇 课后习题答案与解析 第1章 绪论课后习题答案与解析 1.1 数据库系统概述 1.2 数据模型...

北海知己 1万+

数据库系统概论整理与总结

数据库系统概论全书知识和内容整理总结

cwxbox 1806

短小视频网站sexcms源码 安装搭建环境加采集教程 有手机和PC演示站 linux下安装一片空白的解决linux下安装一片空白的解决

电脑PC:http://video.supermindsoft.com/ 手机端:http://video.supermindsoft.com/wap/ 安装搭建环境教程 1,直接运行你的域名即可安装程序,安装时为了保证与演示站效果一样这里 数据库表前缀 请先不要修改  以后正式使用时再修改都可以,修改了就无法恢复我们提供的演示数据。。。 2,切记!!!安装完成后必须

chenhao0568的专栏 17万+

TCS34725颜色识别模块实战调校:从“一坨”例程到精准RGB

本文针对TCS34725颜色识别模块初始数据不准的问题,提供了从基础例程到精准调校的实战指南。核心在于通过白光校正与黑白光校正两种方法,补偿传感器偏差与环境光影响,将原始数据准确映射为标准RGB值。文章详细阐述了校准原理、操作步骤与代码实现,并分享了进阶调试技巧与避坑指南,帮助开发者显著提升颜色识别的准确性与项目可靠性。

weixin_29188043的博客 289

数据库系统概论(基础篇)-笔记

本文章是作者根据中国大学慕课–数据库系统概论(基础篇)视频来整理记录的笔记。

三桥君 | 人工智能领域专家 1万+

HBF凭什么能挑战HBM?

最近AI圈聊得最多的,除了大模型迭代,就是“算力瓶颈”。大家都知道GPU不够用、HBM抢疯了,但很少有人注意到,存储层正在酝酿一场革命——高带宽闪存(HBF)。今天就结合HBM之父Joungho Kim教授的最新观点,跟大家好好盘盘这门技术:它不是HBM的替代品,却可能重塑AI推理的游戏规则,甚至在2038年超越HBM市场规模。先澄清一个核心认知:HBF不是凭空冒出来的新技术,而是站在HBM肩膀上的“优化款”。

存储随笔 2130

华为OD机考双机位C卷 - 螺旋数字矩阵 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 数字螺旋矩阵(OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 3219

《数据库系统概论》第五版 +学习笔记总目录

文章目录前言第 1 章 绪论第 2 章 关系数据库第 3 章 关系数据库标准语言SQL第 4 章 数据库安全性第 5 章 数据库完整性第 6 章 关系数据理论 前言 本篇文章学习书籍:《数据库系统概论》第5版 王珊 萨师煊编著 学习软件:Navicat Premium 15 && SSMS 采用数据库:SQL Sever 说明:虽然数据库是SQL Sever 有些书上的语句执行不了,貌似书采用的是Oracle数据库的SQL,不过没关系,初学我们最重要的是掌握其思想,很多思想和方法语句在

BitHachi 26万+

iStoreOS等软路由插件卸载的残留?分享一款软路由高级卸载工具,自定义卸载,轻松解决卸载残留问题

iStoreOS用户看过来!👀 还在被插件包残留困扰吗?本文分享一款“高级卸载”的插件,助你深度清理iStoreOS系统,彻底解决软件卸载不净的痛点,告别频繁恢复出厂设置的烦恼!🚀

XiaoqiangClub的博客 1545

数据库系统概论知识点总结(附期末考试题库)

数据库系统概论期末复习 知识点 若要求分解具有无损连接性,那么模式分解一定能够达到4NF。 若要求分解保持函数依赖,那么模式分解一定能够达到3NF,但不一定能够达到BCNF。 若分解既具有无损连接性,又保持函数依赖,则模式分解一定能够达到3NF,但不一定能够达到BCNF。 动态维护日志文件的方法 周期性地执行如下操作:建立检查点,保存数据库状态。 具体步骤是: (1)将当前日志缓冲区中的所有日志记录写入磁盘的日志文件上 (2)在日志文件中写入一个检查点记录 (3)将当前数据缓冲区的所有数据记录写入磁盘的数据

萌萌哒的瑞萌萌的博客 4万+

第1章 机器人SLAM算法工程师主要做什么的?(附SLAM学习路线及资料推荐)

对于想从事机器人与自动驾驶领域的在校大学生、研究生来说,建图定位算法工程师是一个极具发展潜力的岗位,而SLAM知识体系则是胜任该岗位的核心支撑。从基础的计算机工具、C++语言,到核心的开源框架、数学知识,再到硬件衔接与项目实践,每一个环节都不可或缺。建议大家结合自身兴趣确定侧重方向(如激光SLAM、融合定位),先通过开源项目建立实践认知,再补全理论知识,同时积极参与社区交流。

行知SLAM 955

1. 在 SAP ABAP 事物码 SEGW 里创建 SAP OData 项目

本文介绍如何在 SAP ABAP 事物码 SEGW 里创建 SEGW 项目,使用工具生成 Runtime 运行时需要的资源。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 5443

数据库系统概论期末复习【超实用】

所用教材:《数据库系统概论(第5版)》王珊 萨师煊 编著 理论与实践相结合的好书 本文大部分写自同学,本作者稍加详解。感谢该同学,这些题目做透能拿高分! 一、简答题(来自第一章 绪论 课后题P34)10’ 1. 试述数据、数据库、数据库管理系统、数据库系统的概念。 数据:描述事物的符号记录。 数据库:长期储存在计算机内、有组织的、可共享的大量数据的集合。 ...

鸽子的博客 4万+

Parasoft C++Test软件单元测试_操作指南

本文主要为使用C++TEST进行单元测试的流程性操作讲解,后续文章将以专题形式进行详细讲解,以及用一些被测函数作为示例进行实例讲解。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 1576

数据库系统概论(王珊 第五版)复习要点

一、绪论 1、解释下列定义 数据:描述事物的符号记录称为数据。 数据与其语义是不可分的。 数据是数据库管理的基本对象。 数据库:数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。 数据库管理系统(DBMS):计算机的基础软件。 数据库系统:数据库系统由数据库、数据库管理系统、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。 2、数据库管理系统的主要功能 数据定义功能...

Vici__ 1万+

Android 13.0 framework层系统手势增加上滑手势home事件功能(相当于Home键)

在13.0的定制化开发系统手势功能的时候,客户需求要求在上滑手势的时候,在底部上滑时候进入系统桌面,也就是增加 home键功能,所以就需要分析相关的系统手势上滑事件,然后添加home事件这样 就可以实现这个功能了

安卓兼职framework和app工程师的博客 1133

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【高效复习】《数据库系统概论》王珊版

数据库描述数据的存储、运算和控制这些方式。 本文主要对书中的概念进行梳理,不涉及太多关系运算和编程问题。 基础篇 第一章 绪论 数据( Data ) :描述事物的符号记录称为数据。 数据库( DataBase ,简称 DB ) :数据库是长期储存在计算机内的、有组织的、可共享的数据集合。 1、使用数据库的好处? (1)提高应用开发的效率,方便用户的使用,减轻数据库系统管理人员维...

lyly1995的博客 7266

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: 数据库系统概论基础篇——第4讲 数据库安全性
下一篇: 数据库系统概论之设计与应用开发篇——第6章 关系数据理论(范式理论)
Undergoer_TW
博客等级 码龄11年 185粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值