目录

数据库概论2数据库系统的结构和组成关系模型

数据库概论(2):数据库系统的结构和组成、关系模型

数据库概论

数据库系统的结构

模式(schema)

  • 是对数据库逻辑结构和特征的描述
  • 是型的描述,不涉及具体值
  • 模式是相对稳定的

数据库的三级模式结构

三级模式是对数据的三个抽象级别

https://i-blog.csdnimg.cn/blog_migrate/acc99db070c45d90132b5a0f6a5e2ca7.png

模式(逻辑模式)

外模式:数据库中全体数据的逻辑结构和特征的描述,所有用户的公共数据视图,一般,某个应用的数据库有一个模式

模式是数据库系统模式结构的中心

  • 与数据的物理存储细节和硬件环境无关
  • 与具体的应用程序、开发工具及高级程序设计语言无关

定义模式

  • DDL定义数据的逻辑结构,以某种数据模型为基础
  • 数据记录由哪些数据项构成,数据项的名字、类型、取值范围等定义数据之间的联系
  • 定义与数据有关的安全性、完整性要求

外模式

外模式(也称子模式或用户模式):数据库用户使用的局部数据的逻辑结构和特征的描述,数据库用户的数据视图,是与某一应用有关的数据的逻辑表示

外模式与模式的关系

  • 外模式通常是模式的子集、一个模式可以有多个外模式,反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求
  • 对模式中某一数据,在不同的外模式中结构、类型、长度、保密级别等都可以不同

外模式与应用的关系:一个外模式可以为多个应用系统所使用,一个应用程序只能使用一个外模式

外模式的用途

  • 每个用户只能看见和访问所对应的外模式中的数据,简化用户视图
  • 保证数据库安全性的一个有力措施

内模式(存储模式)

  • 是数据物理结构和存储方式的描述
  • 是数据在数据库内部的表示方式
    • 记录的存储方式(例如,顺序存储,堆存储,按hash方法存储等)
    • 索引的组织方式(B+树,Bitmap,Hash)
    • 数据是否压缩存储
    • 数据是否加密
    • 数据存储记录结构的规定一如定长/变长,记录是否可以跨页存放等

一个数据库只有一个内模式

数据库的两级映射

数据库管理系统(DBMS)内部提供二级映像

  • 外模式/模式映像
  • 内模式/模式映像

外模式/模式映像

对每一个外模式,有一个外模式/模式映像

  • 定义外模式与模式之间的对应关系
  • 映像定义通常包含在各外模式的描述中

保证数据的逻辑独立性

  • 当模式改变时,数据库管理员对外模式/模式,映像作相应改变,使外模式保持不变
  • 应用程序是依据数据的外模式编写的,应用程序不必修改,保证了数据,与程序的逻辑独立性,简称 数据的逻辑独立性

模式/内模式映象

定义了数据全局逻辑结构与存储结构之间的对应关系。如,说明某个逻辑记录对应何种存储结构。

**数据库中模式/内模式映象是唯一的。**该映象定义通常包含在模式描述中。

保证数据的物理独立性

  • 当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变。
  • 模式不变,则应用程序不变。保证了数据与程序的物理独立性,简称数据的物理独立性。

意义:

  • 保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序, 一般不需要修改。
  • 从程序为中心——发展为以数据为中心,具有了数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去。
  • 数据的存取由数据库管理系统管理简化了应用程序的编制,大大减少了应用程序的维护和修改

数据库系统的组成

硬件平台及数据库

数据库系统对硬件资源的要求

  • 足够大的内存
  • 足够的大的磁盘或磁盘阵列等外部设备
  • 较高的通道能力,提高数据传送率

软件

  • 数据库管理系统
  • 支持数据库管理系统运行的操作系统
  • 与数据库接口的高级语言及其编译系统
  • 以数据库管理系统为核心的应用开发工具
  • 为特定应用环境开发的数据库应用系统

人员

  • 数据库管理员
  • 系统分析员和数据库设计人员
  • 应用程序员
  • 最终用户

用户

用户是指最终用户(End User)。他们通过应用

系统的用户接口使用数据库。

  • 偶然用户
    • 不经常访问数据库,但每次访问数据库时往往需要不同的数据库信息
    • 企业或组织机构的高中级管理人员
  • 简单用户
    • 主要工作是查询和更新数据库
    • 银行的职员、机票预定人员、旅馆总台服务员
  • 复杂用户
    • 工程师、科学家、经济学家、科技工作者等
    • 直接使用数据库语言访问数据库,甚至能够基于数据库管理系统的应用,程序接口编制自己的应用程序

关系数据库

单一的数据结构—-关系:现实世界的实体以及实体间的各种联系均用关系来表示

关系模式

域是一组具有相同数据类型的值的集合

笛卡尔积

给定 一组域 D,D2,…,Dn,允许其中某些域是相同的。D,D2,…,D,的笛卡尔积为所有域的所有取值的任意组合

笛卡尔积可以看着是关系的“域”。

其实在某种程度上可以看做是全排列

关系

D1×D2×…×D,的子集叫作在域D,D2,…,Dn上的关系,表示为

(D1,D2, …,Dn)

  • R:关系名
  • n:关系的目或度(Degree)

元组

关系中的每个元素(d1,d2,…,dn)

叫作一个n元组( n-tuple)

或简称元组,通常用t表示。

属性

关系中不同列可以对应相同的域

为了加以区分,必须对每列起一个名字,称为属性(Attribute)n目关系必有n个属性

  • 候选码(Candidate key):若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。简单的情况:候选码只包含一个属性
  • 全码(All-key):最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)

基本关系的性质

  • 列是同质的(Homogeneous)
  • 不同的列可出自同一个域
  • 列的顺序无所谓,,列的次序可以任意交换
  • 任意两个元组的候选码不能相同
  • 行的顺序无所谓,行的次序可以任意交换
  • 分量必须取原子值

关系与关系模式

  • 关系模式:对关系的描述静态的、稳定的
  • 关系:关系模式在某一时刻的状态或内容动态的、随时间不断变化的
  • 关系模式和关系往往笼统称为关系

关系完整性约束

实体完整性 (Entity Integrity)关系的主属性不能取空值

空值就是“不知道”或“不存在”或“无意义”的值(主码)

参照完整性

在关系模型中实体及实体间的联系都是用关系来描述的自然存在着关系与关系间的引用。(主码中有其他码的组成)

外码

设F是基本关系R的一个或一组属性,但不是关系R的码(主码中的其他码)

如果F与基本关系S的主码K相对应,,则称F是R的外码

  • 基本关系R称为参照关系(Referencing Relation)
  • 基本关系S称为被参照关系(Refereenced Relation)或目标关系(Target Relation)

参照完整性规则

  • 若属性(或属性组)F是基本关系R的外码它与基本关系S的主码K相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
    • 或者取空值(F的每个属性值均为空值)
    • 或者等于S中某个元组的主码值
  • 针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
  • 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不需由应用程序承担这一功能

关系代数

关系代数语言:用对关系的运算来表达查询要求

关系演算语言:用谓词来表达查询要求

  • 元组关系演算语言
    • 谓词变元的基本对象是元组变量
    • 代表:APLHA,QUEL
  • 域关系演算语言
    • 谓词变元的基本对象是域变量
    • 代表:QBE
  • 具有关系代数和关系演算双重特点的语言
    • 代表:SQL (Structured Query Language)

传统计算

并、差、笛卡尔积、交(在此不做介绍,可自行查阅)

关系运算

选择

又称限制,给定满足条件的诸元组:选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运算

https://i-blog.csdnimg.cn/blog_migrate/14c379b09c5a78d272bc99440723218c.png

投影

投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行),是从列的角度进行的运算

https://i-blog.csdnimg.cn/blog_migrate/280b5eacdeb519b2e0e86e70509118d5.png

连接

  • 等值连接:运算符为“=”的连接运算称为等值连接

  • 自然连接(Natural join):自然连接是一种特殊的等值连接

    两个关系中进行比较的分量必须是相同的属性组在结果中把重复的属性列去掉

    https://i-blog.csdnimg.cn/blog_migrate/d7f1ebebc6ef1eb95222f15812bb02e5.png

    • 悬浮元组(Dangling tuple)两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时 被舍弃了,这些被舍弃的元组称为悬浮元组。
  • 外连接(Outer Join):如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(Null),就叫做外连接

    • 左外连接(LEFT OUTER JOIN或LEFT JOIN),只保留左边关系R中的悬浮元组
    • 右外连接(RIGHT OUTERJOIN或RIGHT JOIN),只保留右边关系S中的悬浮元组

外连接有些难以理解的童鞋可以查看该

除运算

给定关系R(X,Y)和S (Y,z),其中X,Y,Z为属性组。R中的Y与S中的Y出自相同的域集。

R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在×属性列上的投影:

https://i-blog.csdnimg.cn/blog_migrate/fb7e17b94f1f94cfbee9ffca37890588.png

关系演算

这个我就略过了,用的比较少

标准语言SQL

SQL(Structured Query Language),结构化查询语言,是关系数据库的标准语言

语言特点

综合统一

集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体。

可以独立完成数据库生命周期中的全部活动:

  • 定义和修改、删除关系模式,定义和删除视图,插入数据,建立数据库;
  • 对数据库中的数据进行查询和更新;数据库重构和维护
  • 数据库安全性、完整性控制,以及事务控制嵌入式SQL和动态SQL定义

高度非过程化

  • 非关系数据模型的数据操纵语言“面向过程”,必须指定存取路径。
  • SQL只要提出“做什么”,无须了解存取路径。
  • 存取路径的选择以及SQL的操作过程由系统自动完成。

面向集合的操作方式

  • 非关系数据模型采用面向记录的操作方式,操作对象是一条记录
  • SQL采用集合操作方式
  • 操作对象、查找结果可以是元组的集合
  • 一次插入、删除、更新操作的对象可以是元组的集合

以同一种语法结构提供多种使用方式

  • SQL是独立的语言能够独立地用于联机交互的使用方式SQL又是嵌入式语言
  • SQL能够嵌入到高级语言(例如C,C++,Java)程序中,供程序员设计程序时使用

核心单词

https://i-blog.csdnimg.cn/blog_migrate/889027d9b729a5cf8aefbde06bb0c92f.png

支持数据库三级模式

https://i-blog.csdnimg.cn/blog_migrate/6c416dcf74009245ef64b507e00346b4.png

基本表

  • 本身独立存在的表
  • SQL中一个关系就对应一个基本表
  • 一个(或多个)基本表对应一个存储文件
  • 一个表可以带若干索引

存储文件

  • 逻辑结构组成了关系数据库的内模式
  • 物理结构对用户是隐蔽的

视图

  • 从一个或几个基本表导出的表
  • 数据库中只存放视图的定义而不存放视图对应的数据
  • 视图是一个虚表
  • 用户可以在视图上再定义视图