作者的话
前言:总结下知识点,自己偶尔看一看。
目录
一、关系模型概述
1.1关系数据结构及形式化定义
1.1.1域(Domain)
1.1.2笛卡尔积(Cartesian Product)
1.1.3关系(Relation)
1.2、关系模式
1.2.1定义关系模式
1.2.2关系模式与关系
1.3关系数据库
二、关系操作
三、关系的完整性
3.1 关系的三类完整性约束
四、关系代数
4.1概 述
4.2传统的集合运算
4.3专门的关系运算
五、SQL概述
5.1SQL的特点
综合统一
高度非过程化
面向集合的操作方式
以同一种语法结构提供多种使用方式
5.2SQL的组成
5.3视图的优点
六、数据库安全性
6.1数据库安全性概述
6.2用户身份鉴别
6.3存取控制
6.4数据库connect、resource、DBA角色
6.5视图机制
6.6审计
一、关系模型概述
1.1关系数据结构及形式化定义
关系模型中数据的逻辑结构是一张二维表
关系数据结构是关系数据库的基础,它是由若干个属性组成的表格,其中每个属性都有一个名字和一个数据类型。关系的描述称为关系模式(relation schema),它可以形式化地表示为 R(U,D,DOM,F),其中 R 为关系名, U 为组成该关系的属性名集合, D 为 U 中属性所来自的域, DOM 为属性向域的映像集合, F 为属性间数据的依赖关系集合
1.1.1域(Domain)
- 域是一组具有相同数据类型的值集合。
- 例如:自然数、整数等都可以是域
1.1.2笛卡尔积(Cartesian Product)
给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…,Dn的笛卡尔积为:D1×D2×…×Dn ={(d1,d2,…,dn)|diDi,i=1,2,…,n}
其实就是简单的排列组合(概念太长难以理解)(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组(Tuple)
(d1,d2,…,dn)中的每一个值di叫作一个分量一个域中允许有的不同的取值个数成为基数
在数据库中,基数(Cardinality)是指一个列中不同值的个数。
例如,如果一个表中有一个列叫做“性别”,其中有10个人的性别是男性,20个人的性别是女性,那么这个列的基数就是2。
1.1.3关系(Relation)
D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为R(D1,D2,…,Dn)
R:关系名
n:关系的目或度(Degree)元组
关系中的每个元素是关系中的元组,通常用t表示。单元关系与二元关系
当n=1时,称该关系为单元关系或一元关系
当n=2时,称该关系为二元关系属性
关系中不同列可以对应相同的域
为了加以区分,必须对每列起一个名字,称为属性(Attribute)
n目关系必有n个属性候选码
若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码
简单的情况:候选码只包含一个属性
全码
最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码
主码
若一个关系有多个候选码,则选定其中一个为主码三类关系包括:基本表、查询表、视图表
1.2、关系模式
1.2.1定义关系模式
关系模式是对关系的描述
通常可以简记为
R (U) 或 R (A1,A2,…,An)
R: 关系名
A1,A2,…,An : 属性名
1.2.2关系模式与关系
关系模式
对关系的描述
静态的、稳定的
关系
关系模式在某一时刻的状态或内容
动态的、随时间不断变化的
1.3关系数据库
关系数据库是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解。在关系数据库中,表中的每一行都代表一条记录,每条记录都具有一个唯一的 ID(又被称为键),而表中的列则用于存储数据的属性
二、关系操作
关系操作是指对关系数据库进行的一些操作,包括查询操作和插入、删除、修改操作两部分。其中,查询操作中的选择、投影、并、差、笛卡尔积是5种基本操作,其他操作可以用基本操作来定义和导出
三、关系的完整性
3.1 关系的三类完整性约束
实体完整性
若属性A是基本关系R的主属性,则属性A不能取空值参照完整性
1. 关系间的引用
2. 外码
外码是指一个关系中的属性集合,它的值必须在另一个关系的主键中出现过。举个例子,如果有学生表、选课表和课程表三个表,选课表中的学生编号和课程编号就是外码,它们必须在学生表和课程表的主键中出现过。
3. 参照完整性规则
若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
或者取空值(F的每个属性值均为空值)
或者等于S中某个元组的主码值用户自定义完整性
针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能
四、关系代数
4.1概 述
4.2传统的集合运算
- 并 U 由属于R或属于S的元组组成
- 差 - 由属于R而不属于S的所有元组组成
- 交 ∩ 由既属于R又属于S的元组组成
- 笛卡尔积 笛卡尔积是指两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X×Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。例如,如果X={1,2},Y={red,white},则X×Y={(1,red),(1,white),(2,red),(2,white)}。
4.3专门的关系运算
相关记号
默认库
1.选择
2.投影
3.连接
一般连接
等值连接(equijoin)
自然连接(Natural join)
外连接 如果把舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接(OUTER JOIN)。
左外连接 如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFT OUTER JOIN或LEFT JOIN)
右外连接 如果只把右边关系S中要舍弃的元组保留就叫做右外连接(RIGHT OUTER JOIN或RIGHT JOIN)。
4.除运算
五、SQL概述
5.1SQL的特点
综合统一
集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体。
可以独立完成数据库生命周期中的全部活动
用户数据库投入运行后,可根据需要随时逐步修改模式,不影响数据的运行。
数据操作符统一
高度非过程化
SQL只要提出“做什么”,无须了解存取路径。
存取路径的选择以及SQL的操作过程由系统自动完成。面向集合的操作方式
操作对象、查找结果可以是元组的集合
一次插入、删除、更新操作的对象可以是元组的集合以同一种语法结构提供多种使用方式
SQL是独立的语言
能够独立地用于联机交互的使用方式SQL又是嵌入式语言
SQL能够嵌入到高级语言(例如C,C++,Java)程序中,供程序员设计程序时使用
5.2SQL的组成
(1)数据操作语言(The Data Manipulation Language,DML):该SQL语句允许用户提出查询,以及插入、删除和修改行。本书这章中将介绍插入、删除和修改行的DML命令。
(2)数据定义语言(The Data Definition Language DDL):该SQL语句支持表的创建、删除和修改,支持视图和索引的创建和删除。完整性约束能够定义在表上,可以是在创建表的时候,也可以是在创建表之后定义约束。
(3)数据控制语言(Data Control Language,DCL):该SQL语句的目标是管理用户对数据库对象的访问。
(4)触发器和高级完整性约束:新的SQL标准包括对触发器的支持,当对数据库的改变满足触发器的条件时,DBMS就执行触发器。
(5)嵌入式和动态SQL:嵌入式的SQL特征使得可以从宿主语言(例如C或者COBOL)中调用SQL代码。动态的SQL特征允许在运行时构建查询。
(6)客户-服务器执行和远程数据库提取:这些命令控制一个客户应用程序如何连接到一个SQL数据库服务器上,或者如何通过网络来访问数据库的数据。
(7)事管务理:各种命令允许用户显式地控制一个事务如何执行。这些命令将在后面章节中介绍。
5.3视图的优点
1、视图能够简化用户的操作
2、视图使用户能以多种角度看待统一数据
3、视图对重构数据库提供了一定程度的逻辑独立性
4、视图能够对机密数据提供安全保护
5、适当利用视图可以更清晰的表达查询
六、数据库安全性
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。
6.1数据库安全性概述
数据库不安全因素
- 非授权用户对数据库进行恶意存取和破坏
- 数据库中的敏感信息泄露
- 安全环境的脆弱性(计算机系统,网络系统的安全性)
6.2用户身份鉴别
用户标识由用户名和用户标识号组成
6.3存取控制
6.4数据库connect、resource、DBA角色
6.5视图机制
把要保密的数据对无权存取这些数据的用户隐藏起来,对数据提供一定程度的安全保护
间接地实现支持存取谓词的用户权限定义
6.6审计
启用一个专用的审计日志将用户对数据库的所有操作记录在上面
审计员利用审计日志监控数据库中的各种行为,找出非法存取数据的人、时间和内容
C2以上安全级别的DBMS必须具有审计功能
审计功能是可选的:审计很费时间和空间 || DBA可以根据应用对安全性的要求,灵活地打开或关闭审计功能 || 审计功能主要用于安全性要求较高的部门
审计事件:
服务器事件:审计数据库服务器发生的事件
系统权限:对系统拥有的结构或模式对象进行操作的审计 ,要求该操作的权限是通过系统权限获得的
语句事件:对SQL语句,如DDL、DML、DQL及DCL语句的审计
模式对象事件:对特定模式对象上进行的SELECT或DML操作的审计