说明:此讨论答案是根据 中国大学MOOC–数据库系统概论(基础篇)视频记录的。
笔记:数据库系统概论(基础篇)-笔记
第一讲:初识数据库系统
第一个视频:引言
图灵奖地四位获得者?
–C.W.Bachman(巴赫曼),E.F.Codd,James Gray,M.R.Stonebrake。
第二个视频:数据库的4个基本概念
数据库管理系统能实现对数据库中数据的查询、插入、修改和删除,这类功能称为?
–数据操纵功能。
什么是数据的语义?为什么数据与其语义是不可分的。可以举例说明。
数据的含义称为数据的语义,而且数据与其语义是不可分的,若数据的表示形式还不能完全表达其内容,就需要经过解释。
举例:学生档案中的学生记录:(李明,男,199505,江苏南京市,计算机系,2013)。
什么是数据库?什么是数据库管理系统? 说明两者的区别和联系。
数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。
数据库管理系统是位于用户应用与操作系统之间的一层数据管理软件;是基础软件,是一个大型复杂的软件系统。
区别:数据库指的是一些数据的集合。数据库管理系统是位于操作系统和数据库应用系统之间的数据库管理软件。
联系:数据库管理系统的存在使得数据库内的数据便于使用与维护。
第三个视频:数据技术的产生,数据系统的特点
数据管理技术发展的三个阶段中,没有专门的软件对数据进行管理的是?
–人工管理阶段。
第二讲:数据库系统的核心:数据模型
第一个视频:概念模型,数据模型的组成要素
关系数据模型是目前最重要的一种数据模型,它的三个要素分别是?
数据结构、关系操作、完整性约束。
举例说明: 实体,实体型,实体集,实体之间的联系。
实体:客观存在并相互区别的事物称为实体。
实体型:用实体名及其属性名集合来抽象和刻画同类实体称为实体型。
实体型:用实体名及其属性名集合来抽象和刻画同类实体称为实体型。
实体之间的联系:通常是指不同实体集之间的联系;实体之间的联系有一对一(1:1),一对多(1:n),多对多(m:n)。
第二个视频:层次模型,网状模型
在什么中一个结点可以有多个双亲,结点之间可以有多种联系?
网状模型。
第三个视频:关系模型
关系数据模型的基本数据结构是?
关系。
第三讲:数据库系统的结构
数据的逻辑独立性是指?
模式改变,外模式和应用程序不变。
什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性? 为什么数据库系统具有数据与程序的独立性?
数据与程序的物理独立性: 当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映像,使模式保持不变,从而应用程序不变。保证了数据与程序的物理独立性,简称数据的物理独立性。
数据与程序的逻辑独立性: 当模式改变时,数据库管理员对外模式/模式映像作相应改变,使外模式保持不变;应用程序是依据数据的外模式编写的,应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
数据库系统具有数据与程序的独立性: 因为数据库管理系统提供的两级映像功能保证了数据的物理独立性和逻辑独立性,从而保证了应用程序的稳定性;而且数据的存取由数据库管理系统管理,从而简化了应用程序的编制,大大减少了应用程序的维护和修改。
第四讲:数据库系统的组成
数据库系统由数据库、数据库管理系统、应用系统和什么组成?
数据库管理员。
第五讲:关系数据结构及关系的完整性
第一个视频:关系数据结构
关系数据库中的“关系”与日常生活中常见的“表格”有什么不同?
关系中不能有重复的元组,表格中可以出现相同的行,
一个关系是否元组越多,所描述的信息就越丰富?
不一定。
第二个视频:关系的完整性
关系模型中必须满足的完整性约束包括?
实体完整性,参照完整性.
如果数据库只有一个关系,是否就不存在参照完整性了?
不是.
第六讲:关系代数–传统集合操作
关系代数的运算对象和运算结果为?
关系。
有两张学生成绩表,表1(学号,姓名,数学成绩),表2(学号,姓名,物理成绩),请问这两张表是否可以做“集合并”操作?为什么?
不可以,域不相同。
第七讲:关系代数–关系特有操作
假设关系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)的自然连接
第八讲:关系代数–综合训练
关系代数表达式的等价 给出两种或以上不同的表达,其结果是一样的:选修数据库的学生名单(学号,姓名)
Π SNO,SNAME(σ CNAME='数据库‘(S∞SC∞C))
π sno,sname(S ∞ (π sno(SC ∞(σcname=‘数据库’ (C)))))
第九讲:关系演算-元组关系演算
讲座中所介绍的关系演算的例子是否可以用关系代数等价表达出来?具体怎么表达?
以视频中最简单的三个为例
[例1] 查询所有被选修的课程号码。
GET W (SC.Cno)
[例2] 查询所有学生的数据。
GET W (Student)
[例3] GET W (Student.Sno,Student.Sage):
第十讲:关系演算-域关系演算语言QBE
请分析QBE语言的特点
QBE是一种典型的域关系演算语言,以元组变量的分量 即域变量作为谓词变元的基本对象。QBE也指此关系数据库管理系统 QBE是基于屏幕表格的查询语言,查询要求:以填写表格的方式构造查询,用实例元素(域变量)来表示查询结果可能的情况,查询结果:以表格形式表示。
第十一讲:SQL概述与数据定义
第一个视频:SQL概述
如何理解SQL是非过程的语言
SQL进行数据操作时,只需要考虑做什么,不需要考虑怎么做,用户也无需了解存取路径,存取路径的选择以及SQL的操作过程由系统完成。
第二个视频:数据定义
为什么不需要一个alter view的语句?
因为视图是从一个或几个基本表导出的表,用户可以从一个特定的角度来查看数据库中的数据,它与基本表不同,是一个虚表。数据库中只存放视图的定义而没有存放视图对应的数据,所以不需要ALTER VIEW语句来进行删除。
第十二讲:数据查询–单表查询
如何让查询结果的列显示顺序与数据库中的列顺序不一样
在查询过程中输入对象时,按照希望得到的列的顺序输入列名即可。得到的结果将按照列名输入的顺序排列,而非按照表的列顺序排列。
若“SELECT * ”,则查询结果的列显示顺序和数据库中的列顺序相同;若“SELECT , , , … ”,将数据表的每一列按照自己想要的顺序完整列出,则可以达到列显示顺序和数据库中的列顺序不同的目的。
第十三讲:数据查询–连接查询
怎么理解“自然连接”,它与等值连接有什么不同?
1、自然连接一定是等值连接,但等值连接不一定是自然连接。
2、等值连接要求相等的分量,不一定是公共属性;而自然连接要求相等的分量必须是公共属性。
3、等值连接不把重复的属性除去;而自然连接要把重复的属性除去。
第十四讲:数据查询–嵌套查询
第一个视频–嵌套查询1
什么是“不相关子查询”?,如何转换成连接查询?
不相关子查询,内查询不依赖于外层。执行过程中,首先执行内查询,内查询得到结果不被显示出来,而是传递给外层查询作为外层查询的条件来使用,然后执行外层查询,并显示查询结果。 转为连接查询就是把子查询内表和外部表连接
如何理解EXIST子查询的返回结果?
带有EXISTS量词的子查询不返回任何实际数据,它只产生逻辑真值true 或逻辑假值false。若内层查询结果非空,则外层的WHERE子句返回真值,否则返回假值.
第十五讲:数据查询–集合查询
两个查询在什么情况下可以自行UNION操作?
1、UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
2、该命令连接的结果集中有重复的值不会被显示。想忽略重复值,可以使用 union all。
第十六讲:数据的更新与控制处理
第一个视频–数据更新
请问是否可以用插入和删除操作来实现更新操作,怎么做?
可以,先将想要删除的数据用DELETE FROM WHERE语句删除,再用INSERT INTO VALUES语句进行插入新的数据,这样便实现了数据的更新
第二个视频–空值的处理
对于一个数值类型字段,空值和0值相同吗?
空值和0值不相同。
(1)空值是指“不知道”、“无意义”或“不存在”的值,可以在查询语句用IS NULL或IS NOT NULL来判断;
(2)0值是指某一数值类型字段的确定取值。
第十七讲:视图
第一个视频–视图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
为什么说视图机制可以提供数据的逻辑独立性?
视图是从一个或几个基本表(或视图)导出的表,是一个“虚表”,数据库中只存放视图的定义,而不存放视图对应的数据。
第十八讲:数据库安全性概述
分析一下数据库都有哪些不安全因素,给出实例。
1、非授权用户对数据库的恶意存取和破坏(黑客和犯罪分子猎取合法用户信息)
2、数据库中重要或敏感的数据被泄露(黑客和敌对分子窃取机密)
3、安全环境的脆弱(与计算机系统的安全性具有紧密联系)
第十九讲:数据库安全性控制
第一个视频:身份鉴别、存取控制、自主存取控制、授权
数据库安全性控制的常用方法有哪些,自主存取控制是如何保证数据库安全性的?
1、用户身份鉴别(静态口令、动态口令、生物特征、智能卡等);
2、存取控制(定义用户权限,合法权限检验);
3、视图;
4、审计;
5、数据加密;
自主存取控制:
1、用户对不同的数据对象有不同的存取权限;
2、不同的用户对同一对象也有不同的权限;
3、用户可以将其拥有的存取权限转授给其他用户
第二个视频:数据库角色及强制存取控制
什么是强制存取控制,它与自主存取控制的区别是什么?为什么强制存取控制可以更好地保证数据库安全性?
强制存取机制:将所有实体分为主体和客体两个部分。
主体是活动实体,客体是被动实体并受客体操纵。
对每一个主体和客体都指派一个敏感度标记,而主题智能通过相应的规则进行存取数据的操作。
强制存取控制中,用户不能直接感知或进行控制,所以可以更好地保证数据的安全性。
第二十讲:视图机制
什么是数据库审计?它是如何保障数据库安全性的?
数据库安全审计系统有效监控数据库访问活动,准确掌握数据库系统的安全状态,及时发现违反数据库安全策略的操作,并实时报警、记录,实现对安全事件的定位分析、事后追查取证,全面保障数据库的安全。
第二十一讲:数据库的完整性
第一个视频:数据库完整性概述与实体完整性
DBMS完整性控制机制的功能是什么?它由哪些部分组成?这几部分是如何配合工作的?
功能:
防止合法用户通过合法向数据库插入不正确的数据
三部分组成:
1、提供完整性约束的定义机制
2、提供完整性约束的检查机制
3、提供对完整性约束的违约处理
配合:
先定义完整性约束的机制,例如主键,然后再数据插入或更新的时候检查完整性约束,如果违反了完整性约束,例如违背了主键的唯一性,那么就提供相应的违约处理。
第二个视频:参照完整性
说明参照完整性的定义方式,检查时机以及各类违约处理方式
定义方式:参照完整性在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码,用REFERENCES短语指明这些外码参照哪些表的主码。检查时机:对被参照表和参照表进行增、删、改操作时检查。被参照表可能破坏参照完整性,参照表插入元组,违约处理是拒绝;被参照表可能破坏参照完整性,参照表修改外码值,违约处理是拒绝;被参照表删除元组,参照表可能破坏参照完整性,违约处理是拒绝、级连删除、设置为空值;被参照表修改主码值,参照表可能破坏参照完整性,违约处理是拒绝、级连修改、设置为空值。
第三个视频:用户自定义的完整性
说明用户定义完整性的方法,检查时机以及各类违约处理方式
在CREATE TABLE中定义属性的同时,可以根据应用要求定义属性上的约束条件,即属性值限制,包括:列值非空、列值唯一、检查列值是否满足一个条件表达式(CHECK短语)当往表中插入元组或修改属性值时,关系数据库管理系统将检查属性上的约束条件是否被满足,如果不满足则操作被拒绝执行。
第二十二讲:约束命名子句及断言
断言的用途是什么?在学生-课程-选课数据库中,如何定义断言“每学期每个学生最多可以选修7门课”?
断言的用途:
指定更具一般性的约束;
可以定义涉及多个表的或聚焦操作的比较复杂的完整性约束;
CREATE ASSERTION ASSE_SC_SNUM
CHECK(7>=ALL(SELECT COUNT(*)
FROM SC
GROUP by sno,TERM));
第二十三讲:触发器
是否可以在一个表上定义多个触发器?如果可以,那么这些触发器的执行顺序是怎样的?
可以在一个表上定义多个触发器。
执行顺序:
(1) 执行该表上的BEFORE触发器;
(2) 激活触发器的SQL语句;
(3) 执行该表的AFTER触发器;
RDBMS定义完整性约束的方法有哪些?
(1) 实体完整性;
(2) 参照完整性;
(3) 用户定义完整性;
(4) 断言;
(5) 触发器;
《推荐文章》
数据库系统概论(基础篇)-笔记
如何使用向导创建数据库和基本表结构?(SQL Server 2014)
使用数据库DDL语言创建数据库和基本表?(SQL Server 2014)
作者:无情大表哥
数据
系统
数据库系统
数据库