数据库·简述
数据库DB
一、数据库系统概论
基本概念
数据库的四个基本概念:数据、数据库、数据库管理系统、数据库系统
- 数据DATA:描述事物的符号记录,数据的含义称为数据的语义,数据与其语义不可分
- 数据库DB:长期存储在计算机内、有组织的、可共享的大量数据的集合,数据库中的数据按一定数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性、易扩展性
- 数据库管理系统DBMS:位于操作系统和用户之间的一层数据管理软件,包括:数据定义、组织、存储、管理、操纵;数据库的事务管理、运行管理、建立、维护;其他;
- 数据库系统DBS:由数据库、数据库管理系统、应用程序、数据库管理员DBA组成的存储、管理、处理和维护的系统
数据库技术发展
人工管理阶段、文件系统阶段、数据库系统阶段
数据库系统特点
- 数据结构化:是与文件系统的本质区别
- 数据的共享性高、冗余度低且易扩充
- 数据独立性高
- 数据由数据库管理系统统一管理和控制:安全性保护、完整性保护、并发控制、数据库恢复
数据模型:是对现实世界数据特征的抽象,是数据库系统的核心和基础
两类数据模型
- 第一类概念模型(信息模型):按用户的观点对数据和信息建模,主要用于数据库设计——面向用户
- 第二类逻辑模型:包括层次模型、网状模型、关系模型、面向对象模型、对象关系模型、半结构化模型;是按计算机系统的观点对数据建模——面向设计人员
- 第二类物理模型:是对数据最底层的抽象,面向计算机系统
概念模型
基本概念
- 实体:客观存在并且可相互区别的事物
- 属性:实体具有的某一特性
- 码:唯一标识实体的属性集
- 实体型:用实体名及属性名集合来抽象和刻画同类实体
- 实体集:同一类型实体的集合
- 联系:实体之间的联系通常是指不同实体集之间的联系,一对一、一对多、多对多等类型
一种表示方法:实体-联系方法
- E-R模型
组成要素:数据模型通常由数据结构、数据操作、数据的完整性约束条件组成
- 数据结构:描述数据库的组成对象以及对象之间的关系
- 数据操作:对数据库中的各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则(SQL)
- 数据的完整性约束条件:是一组完整性规则,保证数据的正确、有效和相容,任何关系需满足实体完整性和参照完整性(DBMS自动完成,之外的由设计人员完成,用户自己的完整性也需设计人员完成);在某个表中某一个属性不能重复且不能为空
常用数据模型
- 层次模型(非关系模型)
- 网状模型(非关系模型)
- 关系模型(表)
- 面向对象模型(对象)
- 对象关系模型
- 半结构化模型
层次模型
早期的数据组织方式,IBM的IMS,在数据库中定义满足
- 有且只有一个结点没有双亲结点,这个结点叫根结点
- 根以外的其他结点有且只有一个双亲结点
层次模型更像是一颗倒立的树
网状模型
- 允许一个以上的结点无双亲
- 一个结点可以有多于一个的双亲
层次模型中子女结点与双亲结点的联系是唯一的,网状模型不唯一
关系模型
IBM E.F.Codd
数据结构
- 关系:一个关系对应一个表
- 元组:表中的一行
- 属性:表中的一列
- 码:表中某个属性组,可以唯一确定一个元组
- 域:一组有相同数据类型的集合
- 分量:元组的一个属性值
- 关系模式:关系的描述(关系名(属性1,属性2,...,属性n))
要求关系必须规范化,每一个分量必须是一个不可分的数据项
数据库系统的结构
- 单用户结构
- 主从式结构
- 分布式结构
- 客户-浏览器结构
- 浏览器-应用服务器、数据库服务器多层结构
系统模式的概念
在数据模型中有“型”和“值”的概念,型是指对某一类数据的结构和属性的说明,值是型的一个具体赋值
模式是数据库中全体数据的逻辑结构和特征的描述,涉及型的描述,不涉及具体的值
模式是相对稳定的,而实例是相对变动的
数据库系统的三级模式:外模式、模式、内模式
- 模式:又称逻辑模式或用户模式,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据试图,是与某一用户有关的数据的逻辑表示
- 外模式:通常是模式的子集,一个数据库可以有多个外模式,如果不同的用户在应用需求、看待的数据方式、对数据保密的要求等方面存在差异,则其外模式描述是不同的;同一模式也可以为某一用户的多个应用系统所使用,但一个应用程序只能使用一个外模式
- 内模式:又称存储模式或物理模式,一个数据库只有一个内模式,是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式
数据库二级映像功能与数据独立性
- 外模式/模式映像:模式描述的是数据全局逻辑结构,外模式描述的是数据的局部逻辑结构,对于每一个外模式,数据库系统都有一个外模式/模式映像,定义了外模式与模式之间的对应关系,通常包含在各自的外模式描述中;当模式改变时,有数据库管理员对各个外模式/模式的映像做相应改变,可使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性
- 模式/内模式映像:数据库只有一个模式,也只有一个内模式,模式/内模式是唯一的,定义了数据全局逻辑结构与存储结构之间的对应关系;当数据库的存储结构发生改变,由数据库管理员对模式/内模式映像作相应改变,可使模式保持不变,从而应用程序不必改变,保证了数据与程序的物理独立性,简称数据的物理独立性
数据库系统的组成
- 硬件平台&数据库
- 软件
- 人员
二、关系数据库
《Communications of the ACM》E.F.Codd
关系数据结构及形式化定义:单一的数据结构,在用户看来逻辑结构是一张二维表
- 域:一组具有相同数据结构的值的集合
- 笛卡尔积:域上的一种集合运算
- 关系:
关系模式:必须指出这个元组集合的结构,即由哪些属性构成,属性来自哪些域,属性和域之间的映像关系
关系模式是静态的、稳定的,而关系是的动态的、随时间变化的;
关系数据库:有型和值的区分
- 型:关系数据库模式,是对关系数据库的描述
- 值:关系模式在某一时刻对应的关系的集合
关系操作
基本操作:查询、插入、删除、修改
查询:选择、投影、连接、除、并、差、笛卡尔积;{选择、投影、并、差、笛卡尔积}是5种基本操作
关系操作的特点:集合操作方式,一次一集合操作;非关系模型的数据操作为一次一记录方式
关系数据语言:关系代数、关系演算
- 关系代数:用对关系的运算来表达查询要求
- 关系演算:用谓词来表达查询要求,按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算
SQL(Structured Query Language)是集查询、数据定义语言、数据操纵语言和数据控制语言DCL(Data Control Language)于一体的关系数据语言
- 关系代数语言:ISBL
- 关系演算语言:元组关系演算语言:ALPHA、QUEL;域关系演算语言:QBE
- 关系代数&关系演算-语言:SQL
关系的完整性:是对关系的某种约束条件,有三类约束:
实体完整性:若属性A是基本关系R的主属性,则A不能取空值;关系数据库中每个元组是可区分的,是唯一的,这点用实体的完整性来保证
实体完整性规则说明:
(1)实体完整性是针对基本关系而言,一个基本表对应现实世界的一个实体集
(2)现实世界中的实体是可区分的,即它们具有某种唯一标识
(3)关系模型中以主码作为唯一性标识
(4)主码中的属性即主属性不能取空值
参照完整性:定义外码与主码之间的引用规则
参照完整性规则
用户定义的完整:与现实语义相结合
关系代数:抽象的查询语言,使用对关系的运算来表达查询[运算对象、运算符、运算结果];按运算符分为传统的集合运算和专门的关系运算
传统的集合运算(二目运算):并、差、交、笛卡尔积
\(\large{R}\):
A | B | C |
---|---|---|
\(a_1\) | \(b_1\) | \(c_1\) |
\(a_1\) | \(b_2\) | \(c_2\) |
\(a_2\) | \(b_2\) | \(c_1\) |
\(\large{S}\): | ||
A | B | C |
-- | -- | -- |
\(a_1\) | \(b_2\) | \(c_2\) |
\(a_1\) | \(b_3\) | \(c_2\) |
\(a_2\) | \(b_2\) | \(c_1\) |
\(\large{R\cup S}\): | ||
A | B | C |
-- | -- | -- |
\(a_1\) | \(b_1\) | \(c_1\) |
\(a_1\) | \(b_2\) | \(c_2\) |
\(a_2\) | \(b_2\) | \(c_1\) |
\(a_1\) | \(b_3\) | \(c_2\) |
\(\large{R\cap S}\): | ||
A | B | C |
-- | -- | -- |
\(a_1\) | \(b_2\) | \(c_2\) |
\(a_2\) | \(b_2\) | \(c_1\) |
\(\large{R\times S}\): | ||
R.A | R.B | R.C |
-- | -- | -- |
\(a_1\) | \(b_1\) | \(c_1\) |
\(a_1\) | \(b_1\) | \(c_1\) |
\(a_1\) | \(b_1\) | \(c_1\) |
\(a_1\) | \(b_2\) | \(c_2\) |
\(a_1\) | \(b_2\) | \(c_2\) |
\(a_1\) | \(b_2\) | \(c_2\) |
\(a_2\) | \(b_2\) | \(c_1\) |
\(a_2\) | \(b_2\) | \(c_1\) |
\(a_2\) | \(b_2\) | \(c_1\) |
专门的关系运算:选择、投影、连接、除运算
(1)设关系模式为R(\(A_1\),\(A_2\),\(\dots\),\(A_n\)),它的一个关系为R
\(t\in R\)表示t是R的一个元组
t\([A_i]\)表示元组中相应的属性\(A_i\)的一个分量
(2)若\(A=\{A_{i1}, A_{i2}, \dots, A_{ik}\}\) ,其中\(A_{i1}, A_{i2}, \dots, A_{ik}\)是\(A_1, A_2, \dots, A_n\)中的一部分,则\(A\)称为属性列或属性组
\(t[A]=(t[A_{i1}], t[A_{i2}], \dots, t[A_{ik}])\)表示元组\(t\)在属性列\(A\)上诸多分量的集合
\(\overline{A}\)则表示\(A=\{A_{1}, A_{2}, \dots, A_{n}\}\)中去掉\(A=\{A_{i1}, A_{i2}, \dots, A_{ik}\}\)后剩余的属性组
(3)\(R\)为\(n\)目关系,\(S\)为\(m\)目关系,\(t_r\in R, t_s \in S\),\(\widehat{t_r t_s}\) 为元组的连接(串接)
是一个\(n+m\)的元组
(4)给定一个关系\(R(X,Z)\),\(X\)和\(Z\)为属性组
\(t[X]=x\),\(x\)在\(R\)中的象集:\(Z_x=\{t[Z]|t\in R, t[X]=x\}\)
表示R中属性组X上的值为x的诸多元组在Z上的分量集合
\(\large{R}\)
\(x\) | \(Z\) |
---|---|
\(x_1\) | \(Z_1\) |
\(x_1\) | \(Z_2\) |
\(x_1\) | \(Z_3\) |
\(x_2\) | \(Z_2\) |
\(x_2\) | \(Z_3\) |
\(x_3\) | \(Z_1\) |
\(x_3\) | \(Z_3\) |
\(x_1\)在\(R\)中的象集\(Z_{x_1}=\{Z_1, Z_2, Z_3\}\)
\(x_2\)在\(R\)中的象集\(Z_{x_2}=\{Z_2, Z_3\}\)
\(x_3\)在\(R\)中的象集\(Z_{x_3}=\{Z_1, Z_3\}\)
(1)选择(限制):在关系\(R\)中选择满足条件的诸多元组
\(\sigma_{F}(R)=\{t|t\in R \cap F(t)='True'\}\) \(F(t)=X_1 \theta Y_1\) \(\theta\):比较远算符
(2)投影:关系\(R\)选择出若干属性列组成新的关系
\(\prod_A(R)=\{t[A|t \in R\}\) \(A\)是\(R\)的属性列
投影之后不仅取消原关系中的某些列,而且还可能取消某些组
查询关系Student在所在属性上的投影\(\large{\prod_{Sdept}(Stud)}\)
\(\LARGE{b = \prod_{Sdept}(a)}\)
\(\LARGE{a}\)
Sname | Sdept |
---|---|
Nick | CS |
Cay | CS |
John | MA |
West | IS |
\(\LARGE{b}\)
Sdept | -- |
---|---|
CS | -- |
MA | -- |
IS | -- |
(3)连接(\(\theta\)连接):从两个关系的笛卡尔积中选取属性间满足一定条件的元组
\(R\mathop{\bowtie}\limits_{A \theta B} S =\{\widehat{t_r t_s}|t_r \in R \cap t_s \in S \cap t_r[A] \theta t_s[B]\}\)