摘要:微信搜索【三桥君】
此笔记是根据中国大学MOOC–数据库系统概论(基础篇)视频记录的。
讨论答案:数据库系统概论(基础篇)–讨论答案

第一讲:初识数据库系统

(一)引言

1、数据库系统地发展经历了三次演变?

  1. 层次/网状数据库系统
  2. 关系数据库系统
  3. 新一代数据库系统。

2、数据库技术和系统已经成为了信息系统的核心技术和重要基础设施。

3、图灵奖地四位获得者?

  1. 网状数据库之父:C.W.Bachman(巴赫曼)
  2. 关系数据库之父:E.F.Codd
  3. 数据库技术和事务处理专家:James Gray
  4. 现代主流数据库系统架构地奠基人:M.R.Stonebrake

【课后练习】

1、图灵奖地四位获得者?
–C.W.Bachman(巴赫曼),E.F.Codd,James Gray,M.R.Stonebrake。

(二)数据库的4个基本概念

1、数据库的4个基本概念?

  1. 数据(Data)
  2. 数据库(Database,DB)
  3. 数据库管理系统(DataBase Management System,DBMS)
  4. 数据库系统(DataBase System,DBS)

2、数据

(1)什么是数据?
数据是数据库中存储的基本对象。

(2)数据的含义称为数据的语义,数据与其语义是不可分的。

3、数据库

(1)什么是数据库?
数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。

(2)数据库的基本特征?

  • 数据按一定的数据模型组织、描述和储存;
  • 可为各种用户共享、冗余度较小、易扩展;
  • 数据独立性较高;

4、数据库管理系统

(1)什么是数据库管理系统?

  • 位于用户应用与操作系统之间的一层数据管理软件;
  • 是基础软件,是一个大型复杂的软件系统。

(2)数据库管理系统的主要功能?

  • 数据定义功能:提供数据定义语言(DDL);定义数据库中的数据对象;
  • 数据组织、存储和管理:分类组织、存储和管理各种数据;确定数据在存储级别上的结构和存储方式;实现数据之间的练习;提供多种存取方法提高存取效率;
  • 数据操纵功能:提供数据操纵语言(DML);实现对数据库的基本操作(查询、插入、删除和修改);
  • 数据库的事务管理和运行管理:数据的安全性、完整性、多种对用户数据的并发使用;发生故障后的系统恢复数据库;
  • 数据库的建立和维护功能:提供实用程序工具,完成数据库数据批量装载,数据库转储,介质故障恢复,数据库的重组织和性能监视等。

5、数据库系统

(1)什么是数据库系统?

  • 是指在计算机系统中引入数据库后的系统构成;
  • 在不引起混淆的情况下常常把数据库系统简称为数据库。

【课后练习】

1、数据库管理系统能实现对数据库中数据的查询、插入、修改和删除,这类功能称为?
–数据操纵功能。

2、什么是数据的语义?为什么数据与其语义是不可分的。可以举例说明。

  • 数据的含义称为数据的语义,而且数据与其语义是不可分的,若数据的表示形式还不能完全表达其内容,就需要经过解释。
  • 举例:学生档案中的学生记录:(李明,男,199505,江苏南京市,计算机系,2013)。

3、什么是数据库?什么是数据库管理系统? 说明两者的区别和联系。

  • 数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。
  • 数据库管理系统是位于用户应用与操作系统之间的一层数据管理软件;是基础软件,是一个大型复杂的软件系统。
  • 区别:数据库指的是一些数据的集合。数据库管理系统是位于操作系统和数据库应用系统之间的数据库管理软件。
  • 联系:数据库管理系统的存在使得数据库内的数据便于使用与维护。

(三)数据技术的产生,数据系统的特点

1、什么数据管理

  • 对数据进行分类、组织、编码、存储、检索和维护;
  • 数据处理和数据分析的中心问题;

2、数据管理3个阶段的比较。

3、数据库系统的特点?

  • 数据结构化;
  • 数据的共享性高,冗余度低且易扩充;
  • 数据独立性高;
  • 数据由数据库管理系统统一管理和控制;

4、数据结构化

(1)数据的整体结构化是数据库的主要特征之一。

(2)数据用数据模型描述,无需应用程序来定义。

【课后练习】

1、数据管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是?
–人工管理阶段。


第二讲:数据库系统的核心:数据模型

(一)概念模型,数据模型的组成要素

1、数据模型是对现实世界数据特征的抽象。通俗地讲数据模型就是现实世界地模拟。

2、数据模型应满足三方面要求?

  1. 能比较真实地模拟现实世界;
  2. 容易为人所理解;
  3. 便于在计算机上是实现。

3、数据模型是数据库系统的核心和基础。

4、数据模型分为两类(两个不同的层次)

  • 概念模型,也称信息模型;
  • 逻辑模型和物理模型。

    5、信息世界中的基本概念
  • 实体:客观存在并相互区别的事物称为实体。
  • 属性:实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。
  • 码:唯一标识实体的属性集称为码。
  • 实体型:用实体名及其属性名集合来抽象和刻画同类实体称为实体型。
  • 联系:现实世界中事物内部以及事物之间的联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系;
  • 实体内部的联系:是指组成实体的各属性之间的联系;
  • 实体之间的联系:通常是指不同实体集之间的联系;实体之间的联系有一对一(1:1),一对多(1:n),多对多(m:n)。

6、实体-联系方法:概念模型的一种表示方法。

7、数据模型由三部分组成?

  1. 数据结构–描述系统的静态特征;
  2. 数据操作–描述系统的动态特征;
  3. 完整性约束。

【课后练习】

1、关系数据模型是目前最重要的一种数据模型,它的三个要素分别是?
数据结构、关系操作、完整性约束。

2、举例说明: 实体,实体型,实体集,实体之间的联系。

  1. ​实体:客观存在并相互区别的事物称为实体。
  2. 实体型:用实体名及其属性名集合来抽象和刻画同类实体称为实体型。
  3. 实体型:用实体名及其属性名集合来抽象和刻画同类实体称为实体型。
  4. 实体之间的联系:通常是指不同实体集之间的联系;实体之间的联系有一对一(1:1),一对多(1:n),多对多(m:n)。

(二)层次模型,网状模型

1、常用的数据类型

  • 格式化模型:层次模型,网状模型。
  • 最常用的模型是关系模型。
  • 对象模型:面向对象数据模型,对象关系数据模型。

2、层次模型
(1)层次模型是用树形结构来表示各类实体以及实体间的联系。

(2)表示方法

  1. 实体型:用记录类型描述每个结点表示一个记录类型(实体);
  2. 属性:用字段描述每个记录类型可包含若干个字段;
  3. 联系:用结点之间的连线表示记录类型之间的一对多的父子联系;

(3)定义

  1. 有且只有一个结点没有双亲结点,这个结点称为根结点;
  2. 根结点以外的其他结点有且只有一个双亲结点;

(4)层次模型的优缺点

1)优点

  1. 层次模型的数据结构比较简单清晰;
  2. 查询效率高,性能优于关系模型,不低于网状模型;
  3. 层次数据模型提供了良好的完整性支持;

2)缺点

  1. 结点之间的多对多联系表示不自然;
  2. 对插入和删除操作的限制多,应用程序的编写比较复杂;
  3. 查询子女结点必须通过双亲结点;
  4. 层次数据库的命令趋于程序化。

3、网状模型

(1)网状数据库系统采用网状结构来表示各类实体以及实体间的联系;

(2)表示方法

(与层次数据模型相同)

(3)定义

  1. 允许一个以上的结点无双亲;
  2. 一个结点可以有多于一个的双亲。

    (4)网状模型的优缺点

1)优点

  1. 能够更为直接的描述现实世界,如一个结点可以有多个双亲;
  2. 具有良好的性能,存取效率较高。

2)缺点
3. 结构比较复杂,而且随着应用环境的扩大,数据库的结构变得越来越复杂,不利于最终用户掌握;
4. DDL、DML语言复杂,用户不容易使用;
5. 记录之间联系是通过存取路径实现的,应用程序必须选择存取路径,加重了程序员的负担。

【课后练习】

1、在什么中一个结点可以有多个双亲,结点之间可以有多种联系?
网状模型。

(三)关系模型

1、概念

  • 关系数据库系统采用关系模型作为数据的组织方式。
  • E.F.Codd提出了数据库系统的关系模型。
  • 数据库厂商的数据库管理系统几乎都支持关系模型。

2、关系模型的数据结构

  • 在用户的观点下,关系模型中数据的逻辑结构是一张二维表。
  • 关系必须是规范化的,满足一定的规范条件。
  • 最基本的规范条件是关系的每一个分量必须是一个不可再分的数据项,不允许表中还有表。

3、关系模型的操纵与完整性约束
(1)数据结构是集合操作集合操作,操作对象和操作结果都是关系。
(2)提高了数据的独立性,提高了用户生产率。
(3)关系的完整性约束条件?
实体完整性,参照完整性,用户定义的完整性。

4、关系模型的优缺点
(1)优点

  1. 建立在严格的数学概念的基础上;
  2. 概念单一;
  3. 关系模型的存取路径对用户透明;
    (2)缺点
  4. 存取路径对用户透明,查询效率往往不如格式化数据模型;
  5. 为提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统。

【课后练习】

1、关系数据模型的基本数据结构是?
关系。


第三讲:数据库系统的结构

(一)数据库系统的结构

1、

(1)从数据库应用开发人员角度看
数据库系统采用三级模式结构,是数据库系统内部的系统结构。
(2)从数据库最终用户角度看

  1. 单用户结构;
  2. 主从式结构;
  3. 分布式结构;
  4. 客户-服务器结构;
  5. 浏览器-应用服务器/数据库服务器结构;

2、数据库系统模式的概念
(1)模式

  1. 是对数据库逻辑结构和特征的描述;
  2. 是型的结构,不涉及具体值;
  3. 模式是相对稳定的;

(2)实例

  1. 数据库某一时刻的状态–模式的一个具体值;
  2. 同一个模式可以有很多实例;
  3. 实例随数据库中的数据的更新而变动;

3、数据库系统的三级模式结构

(1)模式(逻辑模式)

  1. 通常某个应用的数据库有一个模式。
  2. 模式是数据库系统模式结构的中心。

(2)外模式(子模式或用户模式)
1)外模式与模式的关系?

  1. 外模式通常是模式的子集、一个模式可以有很多个外模式;
  2. 对模式中某一数据,在不同的外模式中结构、类型、长度、保密级别等都可以不同。

2)外模式与应用的关系?
一个外模式可以有多个应用系统所使用,一个应用程序只能使用一个外模式。

3)外模式的用途?

  1. 每个用户只能看见和访问所对应的外模式中的数据,简化用户视图;
  2. 保证数据库安全性的一个有力措施。

(3)内模式(存储模式)
一个数据库只有一个内模式。

4、数据库的二级映像功能与数据独立性

(1)数据库管理系统内部提供二级映像?

  1. 外模式/模式映像;
  2. 模式/内模式映像;

(2)外模式/模式映像

1)保证数据的逻辑独立性?

  1. 当模式改变时,数据库管理员对外模式/模式映像作相应改变,使外模式保持不变;
  2. 应用程序是依据数据的外模式编写的,应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。

(3)模式/内模式映像

1)保证数据的物理独立性?

  1. 当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映像,使模式保持不变。
  2. 模式不变,则应用程序不变。保证了数据与程序的物理独立性,简称数据的物理独立性。

(4)数据库的二级映像功能与数据独立性

1)保证了应用程序的稳定性
除非应用需求本身发生变化,否则应用程序一般不需要修改。

2)从程序为中心–发展为以数据为中心
具有了数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去。

3)数据的存取由数据库管理系统管理

  1. 简化了应用程序的编制;
  2. 大大减少了应用程序的维护和修改。

【课后练习】

1、数据的逻辑独立性是指?
模式改变,外模式和应用程序不变。
2、什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性? 为什么数据库系统具有数据与程序的独立性?

  1. 数据与程序的物理独立性: 当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映像,使模式保持不变,从而应用程序不变。保证了数据与程序的物理独立性,简称数据的物理独立性。
  2. 数据与程序的逻辑独立性: 当模式改变时,数据库管理员对外模式/模式映像作相应改变,使外模式保持不变;应用程序是依据数据的外模式编写的,应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
  3. 数据库系统具有数据与程序的独立性: 因为数据库管理系统提供的两级映像功能保证了数据的物理独立性和逻辑独立性,从而保证了应用程序的稳定性;而且数据的存取由数据库管理系统管理,从而简化了应用程序的编制,大大减少了应用程序的维护和修改。

第四讲:数据库系统的组成

(一)数据库系统的组成

1、数据库系统的组成?

  1. 数据库
  2. 数据库管理系统(及其开发工具)
  3. 应用程序
  4. 数据库管理员

2、硬件平台及数据库

(1)数据库系统对硬件资源的要求?

  1. 足够大的内存;
  2. 足够大的磁盘或磁盘阵列等外部设备;
  3. 较高的通道能力,提高数据传送率;

3、软件

  1. 数据库管理软件;
  2. 支持数据库管理系统运行的操作系统;
  3. 与数据库接口的高级语言及其编译系统;
  4. 以数据库管理系统为核心的应用开发工具;
  5. 为特定应用环境开发的数据库应用系统;

4、人员

  1. 数据库管理员(DBA);
  2. 系统分析员和数据库设计人员;
  3. 应用程序员;
  4. 最终用户;

【课后练习】

1、数据库系统由数据库、数据库管理系统、应用系统和什么组成?
数据库管理员。

单元测验1答案(点击直达)


第五讲:关系数据结构及关系的完整性

(一)关系数据结构

  • 单一的数据结构–关系
    现实世界的实体以及实体间的各种联系均用关系来表示。

域是一组具有相同数据类型的值的集合。

笛卡儿积


所有的域的所有取值的任意组合。
笛卡儿积可以看着是关系”域“。
如何计算笛卡儿积?


关系



【课后练习】

  1. 关系数据库中的“关系”与日常生活中常见的“表格”有什么不同?
    关系中不能有重复的元组,表格中可以出现相同的行,

  2. 一个关系是否元组越多,所描述的信息就越丰富?
    不一定。

(二)关系的完整性




【课后练习】

  1. 关系模型中必须满足的完整性约束包括?
    实体完整性,参照完整性.
  2. 如果数据库只有一个关系,是否就不存在参照完整性了?
    不是.

第六讲:关系代数–传统集合操作

(一)关系代数1–传统集合操作


【课后练习】

  1. 关系代数的运算对象和运算结果为?
    关系。
  2. 有两张学生成绩表,表1(学号,姓名,数学成绩),表2(学号,姓名,物理成绩),请问这两张表是否可以做“集合并”操作?为什么?
    不可以,域不相同。

第七讲:关系代数–关系特有操作

(一)选择


(二)投影

(三)




举例:





举例:


(四)除运算

举例:

【课后练习】

  1. 假设关系R(A,B,C)中A是码,R1(A,B)和R2(A,C)是分别从R中投影得到的两个关系,请问R1(A,B) Join R2(A,C)=R(A,B,C) (注:Join是自然连接)
    当函数依赖A–>B和A–>C在R上成立时,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的自然连接

第八讲:关系代数–综合训练

题目-图表



问题1


思路:
运用关系代数除法的方法,把包含1、3的学生学号给选择出来。
题目2

题目3


说明:
第一个关系代数表达式比较简单,但是实际操作复杂,第二个则相反。
题目4

【课后练习】

  1. 关系代数表达式的等价 给出两种或以上不同的表达,其结果是一样的:选修数据库的学生名单(学号,姓名)
    Π SNO,SNAME(σ CNAME='数据库‘(S∞SC∞C))
    π sno,sname(S ∞ (π sno(SC ∞(σcname=‘数据库’ (C)))))

第十一讲:SQL概述与数据定义

(一)SQL概述




数据定义语法(创建/删除/修改)

(二)数据定义

删除语法

DROP SCHEMA…

创建语法

CREATE TABLE…




修改表语法

ALTER TABLE…

建立索引:CREATE INDEX…ON…

升序:ASC,降序:DESC


列题:

修改索引:ALTER INDEX…RENAME TO…

DROP INDEX…


【课后练习】

  1. 如何理解SQL是非过程的语言
    SQL进行数据操作时,只需要考虑做什么,不需要考虑怎么做,用户也无需了解存取路径,存取路径的选择以及SQL的操作过程由系统完成。
  2. 为什么不需要一个alter view的语句?
    因为视图是从一个或几个基本表导出的表,用户可以从一个特定的角度来查看数据库中的数据,它与基本表不同,是一个虚表。数据库中只存放视图的定义而没有存放视图对应的数据,所以不需要ALTER VIEW语句来进行删除。

第十二讲:数据查询–单表查询

(一)数据查询

GROUP BY



1、选择表中的若干列
举例:




DISTINCT消重

2、选择表中的若干元组




举例:

比较大小:=、>、<、>=、<

确定范围:BETWEEN AND

确定集合:IN、NOT IN

字符匹配:LIKE







多重条件查询:AND、OR

ORDER BY、升序降序



【课后练习】

  1. 如何让查询结果的列显示顺序与数据库中的列顺序不一样
    在查询过程中输入对象时,按照希望得到的列的顺序输入列名即可。得到的结果将按照列名输入的顺序排列,而非按照表的列顺序排列。
    若“SELECT * ”,则查询结果的列显示顺序和数据库中的列顺序相同;若“SELECT < >, < >, < >, … ”,将数据表的每一列按照自己想要的顺序完整列出,则可以达到列显示顺序和数据库中的列顺序不同的目的。

第十三讲:数据查询–连接查询

等值连接

自然连接


【课后练习】

  1. 怎么理解“自然连接”,它与等值连接有什么不同?
    1、自然连接一定是等值连接,但等值连接不一定是自然连接。
    2、等值连接要求相等的分量,不一定是公共属性;而自然连接要求相等的分量必须是公共属性。
    3、等值连接不把重复的属性除去;而自然连接要把重复的属性除去。

第十四讲:数据查询–嵌套查询

第一个视频–嵌套查询1


注意:ORDER BY不能出现在嵌套查询里。



带有IN谓词的子查询




带有比较运算符的子查询



【课后练习】

  1. 什么是“不相关子查询”?,如何转换成连接查询?
    不相关子查询,内查询不依赖于外层。执行过程中,首先执行内查询,内查询得到结果不被显示出来,而是传递给外层查询作为外层查询的条件来使用,然后执行外层查询,并显示查询结果。 转为连接查询就是把子查询内表和外部表连接

第二个视频–嵌套查询2

带有ANY或ALL谓词的子查询






带有 EXISTS谓词的子查询








EXISTS难题




【课后练习】

  1. 如何理解EXIST子查询的返回结果?
    带有EXISTS量词的子查询不返回任何实际数据,它只产生逻辑真值true 或逻辑假值false。若内层查询结果非空,则外层的WHERE子句返回真值,否则返回假值.

第十五讲:数据查询–集合查询

并操作UNION


交操作 INTERSECT




差操作 EXCEPT


*SELECT语句的一般格式

目标列表达式的可选格式

聚集函数的一般格式

WHERE子句的条件表达式的可选格式



【课后练习】

  1. 两个查询在什么情况下可以自行UNION操作?
    1、UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
    2、该命令连接的结果集中有重复的值不会被显示。想忽略重复值,可以使用 union all。

第十六讲:数据的更新与控制处理

第一个视频–数据更新

插入数据

INSERT…INTO…VALUES









修改数据

UPDATE…SET…WHERE…





删除数据

DELETE FROM…WHERE





【课后练习】

  1. 请问是否可以用插入和删除操作来实现更新操作,怎么做?
    可以,先将想要删除的数据用DELETE FROM WHERE语句删除,再用INSERT INTO VALUES语句进行插入新的数据,这样便实现了数据的更新

第二个视频–空值的处理









【课后练习】

  1. 对于一个数值类型字段,空值和0值相同吗?
    空值和0值不相同。
    (1)空值是指“不知道”、“无意义”或“不存在”的值,可以在查询语句用IS NULL或IS NOT NULL来判断;
    (2)0值是指某一数值类型字段的确定取值。

第十七讲:视图

第一个视频–视图1

定义视图

CREATE VIEW…AS…

WITH CHECK OPTION











DROP VIEW…


查询视图






【课后练习】

  1. 请解释with CHECK option 子句的作用?
    1.对于update,有with check option,要保证update后,数据要被视图查询出来;
    2.对于delete,有无with check option都一样;
    4.对于insert,有with check option,要保证insert后,数据要被视图查询出来;
    5.对于没有where 子句的视图,使用with check option是多余的。
    浅谈WITH CHECK OPTION的作用

第二个视频–视图2

更新视图

UPDATE…SET…WHERE…







视图的作用









【课后练习】

  1. 为什么说视图机制可以提供数据的逻辑独立性?
    视图是从一个或几个基本表(或视图)导出的表,是一个“虚表”,数据库中只存放视图的定义,而不存放视图对应的数据。

第十八讲:数据库安全性概述

数据库安全性


数据库的不安全因素




TCSEC标准









CC



【课后练习】

  1. 分析一下数据库都有哪些不安全因素,给出实例。
    1、非授权用户对数据库的恶意存取和破坏(黑客和犯罪分子猎取合法用户信息)
    2、数据库中重要或敏感的数据被泄露(黑客和敌对分子窃取机密)
    3、安全环境的脆弱(与计算机系统的安全性具有紧密联系)

第十九讲:数据库安全性控制

第一个视频:身份鉴别、存取控制、自主存取控制、授权


用户身份鉴别


存取控制

自主存取控制方法


授权:授予与回收

GRANT…ON…TO…


不允许循环授权。





传播权限


权限回收:REVOKE

REVOKE…ON…FROM…





创建数据库模式的权限




【课后练习】

  1. 数据库安全性控制的常用方法有哪些,自主存取控制是如何保证数据库安全性的?
    1、用户身份鉴别(静态口令、动态口令、生物特征、智能卡等);
    2、存取控制(定义用户权限,合法权限检验);
    3、视图;
    4、审计;
    5、数据加密;
    自主存取控制:
    1、用户对不同的数据对象有不同的存取权限;
    2、不同的用户对同一对象也有不同的权限;
    3、用户可以将其拥有的存取权限转授给其他用户

第二个视频:数据库角色及强制存取控制

数据库角色










强制存取控制方法








【课后练习】

  1. 什么是强制存取控制,它与自主存取控制的区别是什么?为什么强制存取控制可以更好地保证数据库安全性?
    强制存取机制:将所有实体分为主体和客体两个部分。
    主体是活动实体,客体是被动实体并受客体操纵。
    对每一个主体和客体都指派一个敏感度标记,而主题智能通过相应的规则进行存取数据的操作。
    强制存取控制中,用户不能直接感知或进行控制,所以可以更好地保证数据的安全性。

第二十讲:视图机制




审计








数据加密




其他安全性保护



【课后练习】

  1. 什么是数据库审计?它是如何保障数据库安全性的?
    数据库安全审计系统有效监控数据库访问活动,准确掌握数据库系统的安全状态,及时发现违反数据库安全策略的操作,并实时报警、记录,实现对安全事件的定位分析、事后追查取证,全面保障数据库的安全。

第二十一讲:数据库的完整性

第一个视频:数据库完整性概述与实体完整性

数据库完整性






实体完整性定义

PRIMARY KEY









【课后练习】

  1. DBMS完整性控制机制的功能是什么?它由哪些部分组成?这几部分是如何配合工作的?
    功能:
    防止合法用户通过合法向数据库插入不正确的数据
    三部分组成:
    1、提供完整性约束的定义机制
    2、提供完整性约束的检查机制
    3、提供对完整性约束的违约处理
    配合:
    先定义完整性约束的机制,例如主键,然后再数据插入或更新的时候检查完整性约束,如果违反了完整性约束,例如违背了主键的唯一性,那么就提供相应的违约处理。

第二个视频:参照完整性



















【课后练习】

  1. 说明参照完整性的定义方式,检查时机以及各类违约处理方式
    定义方式:参照完整性在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码,用REFERENCES短语指明这些外码参照哪些表的主码。检查时机:对被参照表和参照表进行增、删、改操作时检查。被参照表可能破坏参照完整性,参照表插入元组,违约处理是拒绝;被参照表可能破坏参照完整性,参照表修改外码值,违约处理是拒绝;被参照表删除元组,参照表可能破坏参照完整性,违约处理是拒绝、级连删除、设置为空值;被参照表修改主码值,参照表可能破坏参照完整性,违约处理是拒绝、级连修改、设置为空值。

第三个视频:用户自定义的完整性

属性上的约束条件






元组上的约束条件




【课后练习】

  1. 说明用户定义完整性的方法,检查时机以及各类违约处理方式
    在CREATE TABLE中定义属性的同时,可以根据应用要求定义属性上的约束条件,即属性值限制,包括:列值非空、列值唯一、检查列值是否满足一个条件表达式(CHECK短语)当往表中插入元组或修改属性值时,关系数据库管理系统将检查属性上的约束条件是否被满足,如果不满足则操作被拒绝执行。

二十二讲:约束命名子句及断言






断言

CREATE ASSERTION…CHECK





DROP ASSERTION…


【课后练习】

  1. 断言的用途是什么?在学生-课程-选课数据库中,如何定义断言“每学期每个学生最多可以选修7门课”?
    断言的用途:
    指定更具一般性的约束;
    可以定义涉及多个表的或聚焦操作的比较复杂的完整性约束;
CREATE ASSERTION ASSE_SC_SNUM
CHECK(7>=ALL(SELECT COUNT(*)
               FROM SC
               GROUP by sno,TERM));

第二十三讲:触发器

定义触发器

CREATE TRIGGER语法格式












激活触发器

删除触发器


【课后练习】

  1. 是否可以在一个表上定义多个触发器?如果可以,那么这些触发器的执行顺序是怎样的?
    可以在一个表上定义多个触发器。
    执行顺序:
    (1) 执行该表上的BEFORE触发器;
    (2) 激活触发器的SQL语句;
    (3) 执行该表的AFTER触发器;
  2. RDBMS定义完整性约束的方法有哪些?
    (1) 实体完整性;
    (2) 参照完整性;
    (3) 用户定义完整性;
    (4) 断言;
    (5) 触发器;

《推荐文章》
数据库系统概论(基础篇)-笔记
如何使用向导创建数据库和基本表结构?(SQL Server 2014) 使用数据库DDL语言创建数据库和基本表?(SQL Server 2014)


文章整理不易,有帮助请点赞关注支持,谢谢!微信搜索【三桥君 】,回复【关注】有我准备的一份资源大礼包。后续持续更新~~~

更多推荐

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