第一讲:初步认识数据库系统
概念(数据库系统构成):
数据库(Database):
电子化信息的集合,相互有关联关系的数据的集合;
数据库管理系统(Database Management system简称DBMS):
管理数据库的一种系统软件;
数据库应用程序(Database Applicant简称DBAP):
不同用户使用的完成某功能的应用程序;
数据库管理员(Database Administrator简称DBA):
对数据库进行维护与控制
数据库结构:
数据库类型:
关系数据库、图像数据库、工程数据库;
数据库语言:
数据定义语言(DDL):
DBMS提供给用户,以便用户定义数据格式;定义表名,表标题,列名及其结构形式;
数据操纵语言(DML):
DBMS提供给用户,以便用户对数据进行操作;增加、删除、修改数据、查询数据、检索数据、统计数据
数据控制语言(DCL):
DBMS提供给用户,以便用户对数据进行控制;定义对不同操作的约束、对不同操作者的约束
习题
第二讲:数据库系统的结构演变与抽象
概念:
DBMS管理数据的三级模式:
外模式,概念模式,内模式;
外模式:某一用户能够看到与处理的数据的结构描述;
概念模式:从全局角度理解的数据的结构描述;
内模式:存储在介质上的数据的结构描述;
DBMS管理数据的两层映像:
E-C映像,C-I映像;
理解:外模式和内模式分别对应用户角度和计算机角度,为了方便用户与计算机数据沟通,构建了概念模式,概念模式通过两层映像分别为外模式和内模式服务;
两个独立性:
逻辑数据独立性:当概念模式发生变化时,可以不改变外部模式,只改变EC映像即可,从而无需改变应用程序;
物理数据独立性:当内部模式发生变化时,可以不改变概念模式,只改变CI映像即可,从而不改变外部模式
数据模型、模式、数据:
模式是数据结构的抽象,数据模型是模式结构的抽象;
三大经典数据模型:
关系模型:表的形式组织数据;
层次模型:树的形式组织数据;
网状模型:图的形式组织数据;
数据库系统的重要发展:
由层次模型数据库、网状模型数据库到关系数据库;
由关系数据库到对象关系数据库、面向对象数据库;
习题:
其中外模式又称用户模式或局部模式,概念模式又称逻辑模式或全局模式,内模式又称存储模式或物理模式;
物理数据独立性:不会因为内模式的变化而影响概念模式从而影响外模式,而是只改变CI映像;
逻辑数据独立性:不会因为概念模式的变化而影响外模式,而是只改变EC映像从而保证应用程序不受影响;
数据模型是对模式结构的抽象,模式是对数据结构的抽象
第一代:基于网状模型或层次模型的数据库系统;
第二代:基于关系模型的数据库系统;
第三代:基于对象关系或面向对象的数据库系统;
第三讲:关系模型之基本概念
概念:
关系模型的三要素:
关系运算:
关系代数和关系演算;关系演算:元组演算和域演算;
基数:
集合中元素的个数;
关系与关系模式:
候选键:
在关系模型中,候选键又称候选码,是某个关系变量的一组属性所组成的集合,它需要同时满足下列两个条件:
这个属性集合始终能够确保在关系中能唯一标识元组;
在这个属性集合中找不出合适的真子集能够满足条件;
候选键可以由元组的一个或者多个属性构成;
全码:
所有属性构成这个关系的候选码;
主键(主码):
主键是在候选键的基础上选取的;
主键的属性值不能为空值或者没有意义;
主键能够唯一的标识元组;
外键:
如果该列元素在另一个表中是候选键则该列元素是外键;
外键可以是表中的主属性或者非主属性
第一规范式(1NF):
关系中的所有分量不可再分,即数据库表中的字段都是单一属性的,不可再分。
完整性规则:
实体完整性(与主键有关):表(table)中主键的属性值不能为空值或者没有意义;
参照完整性(与外键有关):表(table)中的外键的属性值可以为空值或者没有意义,但是外键的属性值一定要与对应的表中的值吻合,不可出现不存在的属性值;
用户自定义完整性:针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。
举例说明:
1.
R(int A,int B,int C)其中A是主键
A | B | C |
1 | 2 | 3 |
1 | 4 | 5 |
该表违反了实体完整性约束,因为第一行元组和第二行元组的主键属性值相同,主键是用来区分两个不同元组的关键因素,如果主键相同则对应两个元组的属性值应该一样,在某些表中相同的元组是可以出现的。
2.
R(int A,int B,int C)其中A是主键,c是外键
A | B | C |
1 | 2 | 1 |
1 | 4 | 3 |
R(int C,int D,int E)其中c是主键
C | D | E |
1 | 2 | 3 |
2 | 4 | 5 |
该表违反了参照完整性约束条件,表一中第二行元组外键C的属性值为3,但是在表二中主键C并没有3
易错点:
R(A1:D1,A2:D2,.......,An:Dn):该描述是关系模式,其中Ai是第i列的属性值,Di是Ai所在的域
习题:
错题原因:s表第三行元组的外键为3,但是表R中的主键属性值只有1和2所以违反了参照完整性约束条件
错误原因:
A:由于主键是属性A,第一元组和第二元组的主键值相等,无法区分不同的元组;
B:由于主键的属性值不能为空或者不存在所以错误;
C:属性B的类型是整数型,但是输入的值是浮点数类型;
笛卡尔积的基数=2*2*3=12
错误原因:患者编号是患者table的主键,所以医疗关系中的外键是患者编号
错误原因:
B:属性D#为外键,外键的可能取值范围为01,02。由于外键的属性值为05所以违反了参照完整性约束条件;
C:属性S#为主键,主键的属性值不能为空值或者不存在,所以C错误;
D:由于S#的值超过了规定的范围所以违反了用户自定义完整性约束条件;
由于每个学生的学号是唯一的所以学号适合作为候选码
错误原因:关系是以内容来区分的
错误原因:关系的任意两列上的值可以完全相同
错误原因:
B:每一列的属性值必须是相同的数据类型;
C:空值不是空格;
第四讲:关系模型之关系代数
概念:
关系代数操作:
并相容性
习题:
第五讲 关系模型之关系演算
概念:
这里相当于对student和sc做了一个自然连接,保证学生号相同
习题:
关系代数,安全的元组演算和安全的域演算是安全的,所以关系演算不全是安全的
域演算的非过程性最好,其次是元组演算,关系代数最差
第六讲 概览SQL语言
概念:
注意:这种写法是经典的错误,不存在一个课程号既是001又是002,查询该问题需要和自己做自然连接查询第一个表课程号是001,第二个表课程号是002
注意:这个语句并不正确,每个人可能学习很多门课程,其中一门不是李明老师的课程就会被列出名字,但是并不是用户所期望的名字
总结:Delete和Drop的区别在于delete是删除表中的元组,Drop是撤销表的格式,所有元组等一系列操作
习题:
第七章 SQL语言之复杂查询与视图
概念:
还可以写成:
Select S1.S# From SC SC1,SC SC2
Where SC1.S#=SC2.S# and SC1.C#='001' and SC2.S#='002'
如果视图不包含原表的主键就无法对基本表进行更新