数据库原理
绪论
-
请解释数据库的四个基本概念
-
数据
数据(Data)是描述事物的符号记录,是数据库中存储的基本对象。
-
数据库
数据库(Data Base DB)是长期存储在计算机内,有组织的,可共享的大量数据的集合。
-
数据库管理系统
数据库管理系统(Data Base Management System DBMS)位于用户和操作系统之间的一层数据管理软件;是基础软件,是一个大型复杂的软件系统。
-
数据库系统
数据库系统(Data Base System)是指在计算机系统中引入数据库后的系统构成。
包括:DB 数据库、DBMS 数据库管理系统、APP 应用程序、DBA 数据库管理员、用户
-
-
数据管理发展阶段有哪些?
- 人工发展阶段
- 文件系统阶段
- 数据库系统阶段
-
数据库系统阶段的优点
数据高度化集成,数据共享性好,数据冗余少、易扩充,数据和程序独立性高
独立性包括:
- 物理独立性
- 逻辑独立性
-
数据模型是什么?分为哪些?
数据模型是对现实世界数据特征的抽象。
- 概念模型
- 逻辑模型和物理模型
-
信息世界中的基本概念有哪些?
- 实体:客观存在并可相互区别的事物,如学生
- 属性:实体具有的属性,用于区分实体,如学号,姓名,性别等
- 码:唯一标识实体的属性集合,用于更好的区分实体,如学号是学生的码
- 实体型:用实体名和属性名集合来抽象、刻画。如学生(学号,姓名,性别,……)
- 实体集:同型实体叫实体集,如全体学生
- 实体联系:有一对一,一对多,多对多等
- 概念模型的表示方法:实体-联系方法
-
数据模型的组成要素是什么?
-
数据结构(静态)
描述系统的静态特性,它是刻画数据模型性质的重要方面
-
数据操作(增删改查)
-
数据完整性约束条件
是一组完整性规则,描述数据及其联系所具有的制约和依存关系
-
-
常用的逻辑数据模型有哪些?
-
层次模型(树形)
-
网状模型(网状)
-
关系模型
-
其他模型
包括面向对象模型、对象关系数据模型、半结构化数据模型
-
-
关系模型的数据结构是怎样的?
- 关系:表
- 元组:表中的一行为一个元组
- 属性:表张的一列为一个属性
- 码:唯一确定一个元组
- 域:一组具有相同数据类型的值的集合,如年龄在0-120岁之间、性别在男女之间
- 分量:元组中的一个属性值(单元格)
- 关系模式:关系名(属性1,属性2,……)
-
试描述数据库的三级模式结构
-
模式与实例
- 模式:对数据库逻辑结构和特征的描述,是型的描述(模式是相对稳定的)
- 实例:数据库某一时刻的状态,模式的具体值,同一个模式可以有很多实例
-
三级模式结构
-
外模式(用户模式、子模式)
与某一应用有关的数据的逻辑表示,如视图
-
模式(逻辑模式)
是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图
-
内模式(存储模式)
是数据物理结构和存储方式的描述,如聚簇和索引
-
-
二级映像
- 外模式-模式映像:保证数据与程序的逻辑独立性
- 模式-内模式映像:保证数据与程序的物理独立性
-
数据与程序的逻辑独立性与物理独立性
- 逻辑独立性:模式改变,外模式和应用程序不变
- 物理独立性:数据存储结构改变,模式、外模式、应用程序不变
-
-
数据库系统的组成
包括硬件平台及数据库、软件、人员
-
数据库管理员的职责
- 决定数据库中的信息内容与结构(决定存什么)
- 决定数据库的存储结构、存取策略(决定怎么存)
- 定义数据的安全性要求、完整性约束条件(保证数据的安全与完整)
- 监控数据库的使用和运行(管理)
- 数据库的改进、重组和重构(维护)
关系数据库
关系模型的三个组成部分?
- 关系数据结构
- 关系操作集合
- 关系完整性约束
关系数据结构
-
域:一组具有相同数据类型的值的集合(可能取多个列);
域的基数:一个域中允许的不同取值的个数称为这个域的基数;
-
笛卡尔积:给定一组域$D_1,D_2,…,D_n$,允许其中某些域相同,它们的笛卡尔积为:
$$D_1×D_2×…×D_n=\{ (d_1,d_2,…,d_n)|d_i\in D_i,i=1,2,…,n \}$$
简而言之,笛卡尔积是各域中元素的全部排列组合。
把笛卡尔积看作域,则它的基数是各子域的基数的积,即$D_1×D_2×…×D_n$的基数$$ M=\prod_{i=0}^{m}m_i$$
其中每个元素$(d_1,…,d_n)$叫一个n元组,简称元组(对应行),其中的每个值称为分量(对应单元格)。
-
关系:$D_1×D_2×…×D_n$的子集叫做在域$D_1,D_2,…,D_n$上的关系,表示为$R(D_1,D_2,…,D_n)$,其中R是关系的名字,n是关系的目或度。
关系是笛卡尔积的有限子集。
候选码:关系中的某一属性值能唯一的标识一个元组,而其子集不能,则称该属性组位候选码。
主码:从候选码中选定一个作为主码。
非主属性/非码属性:不包含在任何候选码中的属性。
全码:关系模式的所有属性都是这个关系模式的候选码。
-
关系的三种类型
-
基本表/基本关系
是实际存在的表,实际存储数据的逻辑表示
-
查询表
查询结果对应的表
-
视图表
由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据
-
-
基本关系的6条性质
-
列同质(每一列中的分量都是同一类型的数据,来自同一个域);
-
不同的列可以出自同一个域,每一个列称为一个属性,不同的属性要给予不同的属性名。
例如域名为:人名,那么选课表中至少需要定义导师属性名、学生属性名两种属性名。
-
列的顺序无所谓;
-
候选码是区分元组(行)的,因此不能相同;
-
行的顺序无所谓;
-
分量(单元格)必须取原子值,是不可再分的数据项。
-
-
关系模式是四元组$R(U,D,DOM,F)$,其中:
- R是关系名;
- U为组成该关系的属性名集合(各个列);
- D为U中属性所来自的域(取值范围);
- DOM为属性向域的映像集合(某些属性属于同一个域);
- F为属性间数据的依赖关系集合(属性间的关系);
-
关系数据库的型与值
- 型:关系数据库模式,是对关系数据库的描述,是静态的,稳定的;
- 值:关系模式在某一时刻对应的关系的集合,是动态的,随时间变化的;
关系操作集合
-
关系模型中常有的查询操作有哪些?
- 选择:筛选满足条件的元组(行)
- 投影:筛选去除不需要的属性(列)
- 连接:根据查询需要,将多个表连接到一起
- 除:同时从行和列的角度进行运算
- 并:求合并的元组
- 差:求在A表而不在B表中的元组
- 交:求共同的元组
- 笛卡尔积:略
其中基本操作是选择、投影、并、差、笛卡尔积。
-
关系运算记号
- 设关系模式$R(A_1,A_2,…,A_n)$,它的某关系设为$R$,$t\in R$表示$t$是$R$的一个元组,$t[A_i]$表示元组$t$中相应于属性$A_i$的一个分量。
- $A=\{ A_{i1},A_{i2},…,A_{ik} \}$,其中$\{A_{i1},A_{i2},…,A_{ik}\}$是$\{A_{1},A_{2},…,A_{n}\}$中的一部分,则$A$称为属性列或属性组。$t[A]=(t[A_{i1}],t[A_{i2}],…,t[A_{ik}])$表示元组$t$中属性列$A$上诸分量的集合,$\bar{A}$表示$\{A_{1},A_{2},…,A_{n}\}$去掉$\{A_{i1},A_{i2},…,A_{ik}\}$后剩余的属性组。
- $R$是n目关系,$S$是m目关系,$t_r\in R,t_s\in S$,$\mathop{t_rt_s}\limits^{\frown}$称为元组的连接或串接。
- 给定一个关系$R(X,Z)$,$X,Z$为属性组,当$t\left [X \right]=x$时,$x$在$R$中的象集定义为$Z_x={t\left [Z\right ]|t\in R,t\left [X\right ]=x}$
-
除运算
设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。
给定关系$R(X,Y)$和$S(Y,Z)$,其中$X,Y,Z$为属性组,$R.Y$和$S.Y$可以有不同的属性名,但必须出自相同的域集。
则$R\div S={t_r[X]|t_r\in R\wedge\sqcap_Y(S)\subseteq Y_x}$
即结果P是R中满足条件的元组在X属性列上的投影,条件是:元组在X上的分量值x的象集包含S在Y上投影的集合。
关系完整性约束
关系完整性约束包括了实体完整性,参照完整性,用户自定义完整性。
- 实体完整性:主属性不可以取空值;
- 参照完整性:外码要么取空值要么取参照关系中某个元组定义的主码值
- 用户自定义的完整性
关系数据库标准语言
SQL概述
SQL是什么?主要特点是什么?
SQL for Structured Query Language,是结构化查询语言;
SQL的主要特点如下:
-
综合统一
SQL集数据定义、数据操纵、数据查询、数据控制于一体;
-
高度非过程化
提出做什么而不必关心怎么做
-
面向集合
-
以同一种语法提供多种操作方式
独立用于联机交互或嵌入到高级语言之中;
-
简洁
使用9个动词完成SQL的全部操作
SQL功能 动词 数据查询 SELECT 数据定义 CREATE,DROP,ALTER 数据操纵 INSERT,UPDATE,DELETE 数据控制 GRANT,REVOKE
数据定义
-
数据库对象的层次结构
graph LR A[数据库管理系统]-->|多个|B[数据库] B-->|多个|C[模式] C-->|多个|D[表] C-->|多个|E[视图] C-->|多个|F[索引]模式实质上是命名空间。
-
模式定义
-
模式删除
-
基本表定义
-
基本表数据类型