[TOC]
课程介绍
数据库系统概述
基本概念
数据库的四个基本概念:
数据:
- 对客观事物的符号表示。
- 在计算机科学中是指所有输入到计算机中并被计算机程序处理的符号的总称。
- 描写事物的符号有多种形式,可以是数字、文字、图形、图像和声音,但它们是经过数字化后存入计算机的。
- 数据是数据库中存储的基本对象。
数据库:
数据库是长期存放在计算机内、有组织的、可共享的数据集合。
数据库中的数据按一定的数据模型组织、描述和存储,且具有较小的冗余度、较高的数据独立性和易扩展性,并可为多个用户共享。
数据库管理系统:
数据库管理系统是用于建立、使用和维护数据库的软件。
“建立”:如何定义、组织和存储数据
“使用”:查询、插入、删除和修改数据
“维护”:保证数据的安全性、完整性
数据库管理系统的位置: 操作系统之上,离不开操作系统。
数据库系统:
数据处理:是对各种形式的数据进行收集、存储、加工、管理和传播的一系列活动的总和。
数据管理:是指数据的分类、组织、编码、存储、维护、检索等操作,是数据处理的核心。
数据管理技术的发展阶段
- 人工管理阶段
- 文件系统阶段
- 数据库系统阶段
- 高级数据库技术阶段
人工管理阶段
特点:
数据不长期保持
应用程序管理数据
没有专有的软件对数据进行管理,(应用程序要规定的数据的逻辑结构和物理结构,包括存储结构,存取方法,输入方式)。
数据不具有独立性
数据的逻辑结构或物理结构发生变化后,必须对应用程序做相应的修改
数据不共享
数据面向程序,即一组数据对应一个程序,当多个应用涉及相同数据时,程序之间有大量的冗余数据。
文件系统阶段
特点:
- 数据可长期保存
- 由文件系统管理数据
- 数据共享性差,冗余度大
- 数据独立性差
数据库系统阶段
数据管理技术进入数据库阶段的标志,是1960年代
末发生的三件大事:
●1968年,美国IBM公司推出层次模型的IMS系统
●1969年,美国数据系统语言协会(CODASYL)的数据库任
务组(DBTG)发表关于网状模型的DBTG报告(1971年通
过)
●1970年,美国IBM公司的E.F. Codd提出关系模型,奠定
了关系数据库的理论基础。
特点:
数据模型不仅描述数据本身的特点,还描述数据之间的联系。整体数据结构化。不仅数据是结构化的,存取数据的方式也灵活。
数据共享性高,冗余度低,易扩充
数据是面向整个系统,不是面向应用的,所以多应用多用户可共享数据,减少冗余,避免数据的不一致性。容易增加新的应用,易于扩充。
数据独立性高——包括物理独立性和逻辑独立性
指数据在磁盘上的物理存储改变和逻辑结构改变,应用程序可能可以不用变。
数据独立性由DBMS的二级映像功能保证。数据与程序独立,把数据的定义从程序中分离,简化程序的编制、维护和修改工作。
数据由DBMS统一管理和控制
DBMS提供四个方面的数据控制功能:
数据的恢复、并发控制
数据完整性和数据安全性
数据库系统与传统文件系统的根本区别
在文件系统中,记录内部有了某些结构,但记录之间没有联系。数据库系统实现整体数据结构化。
“整体结构化”是指:
数据库中的数据不再仅仅针对某个应用,而是面向全组织(企业);
不仅数据内部是结构化的,而且整体是结构化的,数据之间是具有联系的。
数据存取对象层级类型不同
在文件系统中,数据的最小存取单位一般是记录,粒度不能细到数据项。
数据库系统中可以存取数据库中某一个数据项,一组数据项,一个记录,一组记录。
高级数据库技术阶段
20世纪80年代开始
分布式数据库
并行数据库
面向对象数据库
XML数据库
大数据——集群分布式存储并行处理
数据模型
模型:
用于指导最终产品制造的初步作品或结构。
用于测试和完善最终产品作品或结构。
一种系统、理论或现象的模式描述,用于说明其已知或推导出的属性,并用于研究其进一步的特性。
用于模仿或比较的案例性东西
模型:用于对现实世界特征的进行模拟和抽象的事物。
数据模型:是现实世界数据特征的抽象。
从用途的角度进行定义: 数据模型是用于描述现实世界,指导数据的设计、存储,并作为数据设计结果的检验标准的模型。
►数据模型应满足三个要求:
• 真实地模拟现实世界
• 容易理解
• 便于计算机上实现
►数据模型相关概念
● 数据模型的层次
○ 概念、逻辑、物理;高层、中间层、低层
○ OLTP层、数据集成层、 ODS或近线层、数据仓库层或离线层
● 数据模型的描述工具
● 数据模型的通用性
● 行业数据模型、 企业级数据模型
● 主题数据模型、 Featuring、 Model Embeeding, 自动建模、 …
数据模型的三个组成部分
- 数据结构:是所研究对象类型的集合,即对实体类型和实体间联系的表达和实现,是系统静态特征的描述。
- 数据操作:是指对数据库中各对象允许执行的操作的集合,包括检索和更新两类,是系统动态特征的描述。(操作是否归入数据模型有争议)。
- 数据完整性约束:给出数据及其联系应具有的制约和依存规则,保证数据的正确、有效、相容。有实体完整性、参照完整性和用户定义完整性。
数据模型相关的三个世界或领域
- 现实世界:存在于人脑之外的客观世界
- 信息世界:人们通过头脑对现实世界进行抽象,并通过描述工具以实体、实体集、属性、实体标识符等形式尽可能真实准确地描述现实世界。
- 机器世界:信息世界的信息在机器世界中的表示。以数据形式存储字段、记录、文件、关键码。
现实世界中客观对象的抽象过程
概念模型
►概念模型的功能
● 在信息世界里对现实世界进行建模
● 表达现实世界中的概念
● 表达概念之间的关系
● 表达业务领域的语义知识
►对概念模型的要求
● 具有很强的表达能力–能力强
● 易于理解—容易懂
● 简单—容易画
定义:为了正确直观地反映客观事物及其联系,对所研究的信息世界,按用户观点对数据和信息建模型,称之为概念模型。
特点:
- 是独立于计算机系统的模型,完全不涉及信息在系统中的表示
- 用于建立信息世界的数据模型,是现实世界的第一层抽象
- 强调语义表达功能,概念简单、清晰,易于用户理解,是用户和DB设计人员之间交流的语言,是DB设计人员进行数据库设计的工具。
信息世界的术语
实体:可以相互区别的客观事物和概念的抽象,如人,学生,教师,…
属性:对实体某一特征的描述,如学号,姓名,年龄,…
域:属性定义域,属性的取值范围,如年龄[0,200]
实体的码、实体标识符:能唯一标识每个实体的属性集,如:学号
实体型:实体模式,实体类型
用实体名及其属性名的集合来抽象刻画同类实体,称为实体型
学生(学号,姓名)
实体集:性质相同的同类实体的集合
联系,关系:实体内部的联系、实体之间的联系
实体内部的联系:实体各属性之间的联系
实体之间的联系:通常指不同实体集之间的联系
机器世界的术语
记录:字段的有序集合(实体)
文件:同一类记录或不同类记录集合(实体集)
关键码,主键,主码:能唯一标识文件中每条记录的字段或字段集(实体标识符)
字段:标识实体属性的命名单位,亦称数据项(属性)
实体集之间的联系
1:1(一对一联系)
1:n(一对多联系)
m:n(多对多联系)
一对一联系
A中任意实体至多对应B中的一个实体,反之B中的任意实体至多对应A中的一个实体。
1:n 一对多联系
对于A中的每一个实体,B中有n个实体与之对应,反之B中的任意实体至多对应A中的一个实体。
m:n多对多联系
如果A中每个实体,实体集B中有n个实体与之联系,反之,B中的任一个实体,A中也有m个实体与之联系。
常用的概念模型——实体联系模型
Entity relationship model,简称ER模型,是由美籍华人陈平山于1976年提出的。ER图提供了表示实体、属性和联系的方法。
ER模型的三要素(三个基本语义)
a. 实体:表示客观事物
b.属性:表示客观事物的特征(属性)
c.联系:客观事物之间的联系
ER图表示方法:
用矩形表示实体
用椭圆表示属性
用菱形表示实体间的联系
属性和实体间、实体和联系间用线段连接(同时在线段边上标上联系的类型)
逻辑数据模型
定义:
直接面向数据库的逻辑结构,它是对现实世界的第二层抽象,这类模型不涉及具体物理平台,仅描述结构, 涉及到计算机系统和数据库管理系统的类型。
层次数据模型
层次数据模型按树型结构组织数据,它是以记录类型为结点,以结点间联系为边的有序树。
层次模型的基本特点:
- 层次模型适合行政机构,家族关系等一对多关系的
描述。如果要表示多对多的关系,必须分解(冗余
结点法和虚拟结点法)成两个一对多的关系。 - 任何一个给定的记录值只有按其路径查看时,才能
显出它的全部意义,没有一个子女记录值能脱离双
亲记录值而独立存在。
层次模型的数据操纵
• 数据操作要满足模型的完整性约束条件
- 插入操作:如果没有相应的双亲结点, 不能插入子结点
- 删除操作:如果删除双亲结点, 则相应的子女结点也被同时删除
- 修改操作: 应修改所有相应的记录, 以保证数据的一致性.
层次模型的存储结构
层次数据库需要存储两类内容:
既要存储数据本身
还要存取数据之间的层次联系
将数据和数据之间联系结合在一起存储
有两种方法存储:
1. 邻接法
2. 链接法
- 邻接法:按层次树前序遍历顺序把所有记录依次邻接存放。
- 链接法:用指针反映数据之间的层次联系
层次模型的优缺点:
优点:
- 记录之间的联系通过指针实现,查询效率较高。
- 提供了良好的完整性支持
缺点:
- 只能表示记录间的一对多联系,而多对多的联系会出现数据冗余。
- 结构严格、复杂、因此编程复杂
- 对插入和删除操作的限制比较多
- 查询子女结点必须通过双亲结点
网状数据模型
用有向图结构表示实体及实体间联系的数据模型,它是以记录类型为结点,以结点间联系为边(适合于多对多关系)
网状数据模型必须满足两个条件:
- 允许一个以上的结点无双亲结点
- 一个结点可以有多于一个双亲结点
网状数据模型的操纵和完整性约束:
网状数据模型没有层次数据模型那样严格的完整性约束条件,但对数据操纵也有限制,提供了完整性约束。
- 支持记录码的概念,码时唯一标识记录的数据项集合
- 保证联系中双亲记录和子女记录之间是一对多的联系(要表示多对多关系,必须引入联结记录)
- 可以支持双亲记录与子女记录之间某些约束条件(必须有双亲才能插子女,删双亲连同删子女)
网状数据模型的存储结构:
网状数据模型的存储结构中关键是如何实现记录之间的联系。常用的方法是链接法:
网状数据模型的优缺点:
优点:
- 在两个结点之间可以有两种或多种联系。
- 记录之前的联系通过指针实现,M:N联系也容易实现,存取(查询)效率较高。
缺点:
结构比较复杂,编程复杂,程序员必须熟悉数据库的逻辑结构,不利于用户掌握。
层次与网状数据模型的最大缺点
缺点:联系通过指针实现
带来的问题:
数据分布分散
数据插入、修改操作麻烦
要求程序员熟悉底层结构
应用程序编写负担重
需要有更好的解决策略:
抛弃指针策略
联系或关系用数据来体现
数据存在,关系就得到体现
关系数据模型
用二维表来表示实体集,用外键表示实体间的联系,这样的数据模型称为关系数据模型。
关系模型中的一些术语:
关系:一个关系对应通常说的一张表
元组:表中的一行即为一个元组
属性:表中的一列即为一个属性
主码:表中某个属性组,可以唯一确定一个元组
域:属性的取值范围
分量:元组中的一个属性值
关系模式:二维表的表头那一行
关系数据模型中数据的逻辑结构是一张二维表
关系模型的数据操纵:查询、插入、删除、修改
关系的完整性约束条件:实体完整性、参照完整性、用户定义完整性
关系的存储结构:文件
关系型数据库的特点:
关系数据库采用关系数据模型作为数据的组织方式
关系的特点:
- 一个关系表中不存在两个元组在各个分量上完全相同
- 行的次序无关
- 列的次序无关
- 每个分量必须是不可分的量
关系数据模型的优缺点:
优点:
关系模型建立在严格的数学概念基础上。
关系模型概念单一,无论实体还是实体之间的联系都用关系表示,检索结果也是关系。结构简单,清晰,用户易懂易用。
关系模型的存取路径对用户透明,具有更高的数据独立性,更好的安全保密性。
缺点:
由于存取路径对用户透明,查询效率往往不如非关系数据模型高。
关系数据模型和层次、网状数据模型的最大差别:用关键码而不是用指针导航数据。
面向对象数据模型
数据库系统结构
数据库系统内部的架构:
实现三级模式结构
提供两级映像功能
数据库系统模式的概念:
型:是指对某一类数据的结构和属性的说明
值:是型的一个具体赋值
模式:是数据库中全体数据的逻辑结构和特征的描述。模式反映的是数据的结构及其联系
实例:是模式的一个具体值。反映的是数据库某一时刻的状态。同一模式有很多实例。
!
数据库系统的三级模式结构:
外模式(用户模式)
外模式是最接近于用户的一级模式,是用户与DBS的接口。
外模式又称用户视图,是用户看到和使用的局部数据的逻辑结构和特征的描述。
是与某一应用有关的数据的逻辑表示。
用户的所有操作都是针对用户视图进行。
- 外模式又称为“子模式”或“用户模式”,是模式的子集。
- 一个数据库可以有多个外模式
- 每个用户必须使用一个外模式,一个外模式可以有数个不同的用户使用。
- 一个应用程序只能使用一个外模式。
优点:
- 接口简单、使用方便
- 保证数据的独立性
- 增强了数据的安全保密性(每个用户只能看到对应外模式中的数据,其余数据不可见)
模式(逻辑模式)
介于用户级和物理级之间,是所有用户的公共数据视图(全局的数据视图),是数据库管理员看到和使用的数据库。
模式不涉及到存储结构、硬件环境、访问技术等细节,也不涉及应用程序、开发工具、程序设计语言等。
模式是数据库中全部数据的逻辑结构和特征的描述,不仅要描述概念记录类型,还要描述记录间的联系、操作、数据的完整性和安全性等。
一个数据库可有多个不同的用户视图,每个用户视图由数据库某一部分数据的抽象表示所组成。
一个数据库只存在一个DBA视图,即一个数据库只有一个模式。
内模式(存储模式)
是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。
定义所有的内部记录类型、索引和文件的组织方式,以及数据控制方面的细节。
一个数据库只有一个内模式。
三级模式、二级映像
两级映像
数据的组织由DBMS管理,用户抽象地处理数据,而不关心数据在计算机中的表示和存储方式。为了实现三层之间的联系和转换,数据库管理系统在三层之间提供了两级映像。
模式/内模式映像
存在与模式与内模式之间
外模式/模式映像
存在与外模式和模式之间
两级映像保证数据库系统的数据具有较高的逻辑独立性和物理独立性。
模式/内模式映像
在模式和内模式之间存在模式/内模式映像,用于定义模式和内模式之间的对应性。定义了数据库全局逻辑结构与存储结构之间的对应关系
数据库只有一个模式,也只有一个内模式,所以模式/内模式映像是唯一的。
模式/内模式映像一般由系统内部的模式描述体现。
外模式/模式映像
在外模式和模式之间存在 外模式/模式映像,用于定义外模式和模式之间的对应关系。
每一个外模式,数据库系统都有一个外模式/模式映像吗?
是的
外模式/模式映像一般是在外模式中描述的。
!
数据库系统两级独立性
三个抽象级间通过两级映像(根据一定的对应规则)进行相互转换,使得数据库的三级形成一个统一整体,保证了数据的独立性。
什么是数据独立性?
是指与数据间相互独立,不受影响。
分为两级:逻辑独立性、物理独立性。
物理独立性
如果数据库的内模式(存储结构)要进行修改,那么DBA对模式/内模式映像也要进行相应的修改,从而使模式尽可能保持不变。
对内模式的修改尽量不影响模式,当然,对于外模式和应用程序的影响更小,应用程序不必修改,保证数据与程序的物理独立性。称为数据库的物理独立性。
逻辑独立性
如果数据库的模式要进行修改,那么DBA对各个外模式/模式映像也要进行相应的修改,使外模式尽可能保持不变。
对模式的修改尽量不影响外模式,从而应用程序不必修改,这样保证数据与程序的逻辑独立性。称为数据库的逻辑独立性。
逻辑独立性与物理独立性关系
数据库模式依赖于全局逻辑结构,独立于外模式,独立于存储设备。
数据库外模式面向具体应用程序,独立于存储模式和存储设备。应用程序依赖于特定的外模式,与数据库的模式和存储结构独立。
二级映像保证数据库外模式的稳定性,从而保证应用程序的稳定性。
数据与程序之间的独立性,使得数据的定义和描述从程序中分离出去,数据的存取由DBMS管理,简化了程序的编制,减少程序的维护和修改。
数据库系统的组成
- 数据库
- 硬件:包括CPU、内存、外存、I/O设备、数据通道等设备
- 软件:DBMS、OS、各种与数据库接口的高级语言及编译系统、应用开发工具、数据库应用系统
- 人员:数据库管理员、系统分析员、数据库设计人员、应用程序员、最终用户。
(a) 数据库管理员(DBA)的职责为:
① 模式定义,决定数据库中信息内容和结构
② 内模式定义,决定数据库的存储结构和存取策略
③ 根据要求修改数据库的模式和内模式
④ 对数据库访问权限的定义,保证数据安全性
⑤ 完整性约束条件的说明
⑥ 监控数据库的使用和运行(处理出现的问题)
⑦ 数据库的改进和重组重构(改进数据库设计)
(b) 系统分析员的责任是
负责应用系统的需求分析和规范说明,确定系统的硬件软
件配置,参与数据库系统的概要设计。
(c) 数据库设计人员的责任是
负责数据库中数据的确定,各级模式的设计,参加用户需
求调查和系统分析,进行数据库设计。
(d) 应用程序员的责任是
负责设计和编写应用系统的程序模块、调试和安装。
(e) 用户—最终用户
最终用户通过应用系统的用户接口使用数据库。 常用的接口方式有浏览器、菜单驱动、表格操作、图形显示等,以简明直观的表示方式显示数据。
数据库管理系统
数据库管理系统(DBMS)是指数据库系统中管理数据的软件系统,是DBS的核心组成部分。对数据库的一切操作(定义、查询、更新及各种控制),都是通过DBMS进行的。
DBMS总数基于某种数据模型,根据数据模型的不同,DBMS可以分成层次性、网状型、关系型、面向对象型、对象关系型等。
DBMS的主要功能:DBMS提供数据定义语言(DDL)定义数据库的三级结构,包括外模式、模式、内模式及相互之间的映像,定义数据的完整性、安全控制等约束。
数据字典管理功能:数据库系统中存放三级结构定义的数据库称为数据字典。
数据库的操作功能(数据库存取):DBMS提供数据操作语言(DML)实现对数据库中数据的操作,基本的数据操作。
- 数据库的保护功能(数据库运行处理)
DBMS对数据库的保护主要通过四个方面实现:
数据库的恢复
数据库的并发控制
数据库的完整性控制
数据库的安全性控制
数据库的存储管理
DBMS的一个模板应该是简化和促进数据的访问。DBMS的存储管理子系统提供了数据库中数据和应用程序的一个界面,与磁盘中数据打交道的是OS中的文件系统。
DBMS存储管理子系统的职责是把各种DML语句转换成低层的文件系统命令,起到数据的存储、检索和更新的作用。
数据库的维护功能
DBMS还有许多实用程序提供给DBA运行DBS时使用。这些实用程序起着数据库维护的功能。主要的实用程序有四个:
- 数据装载程序
- 备份程序
- 文件重组织程序
- 性能监控程序
DBMS的系统结构
最上层:接口层
DBMS一般按不同用户的需要提供多种用户接口,如交互式SQL接口、嵌入式SQL接口、自然语言查询接口等。用这些语言书写的应用程序经接口软件处理后,抽出其中数据库语言语句,转化成一种最基本的数据库语言,如SQL,交语言处理层处理。
第二层:语言处理层
语言处理层对数据库语言的各类语句进行语法分析、视图转换、安全性检查、完整性检查、查询优化等,通过对下层基本模块的调用,生成可执行的代码。
第三层:数据存取层
该层处理的对象是单个元组, 它将上层的集合操作转换为单记录操作, 执行扫描、 排序、 元组的查找、 插入、 修改、 删除、 封锁等基本操作, 完成数据记录的存取、 存取路径维护、 事务管理、 并发控制和恢复等工作。
第四层:数据存储层
该层处理的对象是数据页和系统缓冲区, 执行文件的逻辑打开、关闭、 读页、 写页、 缓冲区读和写、 页面淘汰等操作, 完成缓冲区管理、 内外存交换、 外存的数据管理等功能。
用户访问数据的过程
(1) 用户通过应用程序向RDBMS发出调用数据库数据的命令, 如SELECT命令, 命令中给出一个关系名和查找条件。
(2) RDBMS先对命令进行语法检查, 检查通过后进行语义检查和用户存取权限检查。 具体做法是: RDBMS读取数据字典, 检查是否存在该关系及相应字段, 该用户能否读取它们等。 确认语义正确、存取权限合法后便决定执行该命令, 否则拒绝执行。
(3) RDBMS执行查询优化。 优化器要依据数据字典中的信息进行优化, 并把该命令转换成一串单记录的存取操作序列。 (4) RDBMS执行存取操作序列(反复执行以下各步,直至结束)。
(5) RDBMS首先在缓冲区中查找记录,若找到满足条件的记录则转(10),否则转(6)。
(6) RDBMS查看存储模式,决定从哪个文件、用什么方式读取哪个物理记录。
(7) RDBMS根据(6)的结果, 向操作系统发出读取记录的命令。
(8) 操作系统执行读数据的有关操作 。
(9) 操作系统将数据从数据库的存储区送至系统缓冲区。
(10) RDBMS根据查询命令和数据字典的内容导出用户
所要读取的记录格式。
(11) RDBMS将数据记录从系统缓冲区传送到应用程序A
的用户工作区。
(12) RDBMS将执行状态信息,如成功读取或不成功的
错误指示,例外状态信息等返回给应用程序A。
关系数据库
教学内容
关系数据模型
关系的三类完整性约束
基于关系运算的关系代数语言
要求掌握
关系数据模型的结果
关系的完整性定义
五种基本关系运算和四种组合关系运算
用关系代数语言表达查询
教学重点及难点
关系代数
CODD关于关系数据库的12条准则
关系数据模型的思想由IBM公司的E.F.Codd于1970年在他一系列论文中提出,以后的几年里陆续出现了以关系数据模型为基础的数据库系统,称为关系数据库系统。
所有的数据包括普通用户数据和数据结构信息(元数据)都必须以表格的形式展示给用户
目的:提高用户的效率;统一标准后,便于供应商在此基础上方便地编写与数据库交互的应用软件;3.方便管理员,提高管理效率。
在计算机中访问数据的方法可能有很多,但是关系型数据库必须保证能够让用户通过表名、主键和列名能访问到任意一个数据项。
这种方法不同传统的面向计算机的寻址方法,使用户访问数据变得非常容易,使用户不需要关注细节数据访问方法。
在许多应用中经常有缺失值或不适用的信息,例如在网站注册时,许多数据项运行用户不填或暂时不填,有些数据项对某些用户不适用。即这些数据项需要记录为无数据,即为空值,英文称为NULL value。
这条规则要求RDBMS应该具有系统化的统一处理空值的方法。
动态指数据目录会不断更新。
在线值用户可以快速获得数据目录信息。
基于关系型模型指数据目录信息也和普通的数据一样,也以关系模型的形式保存与访问。
数据目录指关于数据的结构信息,RDBMS中的数据字典中的内容。
所有的数据库必须给用户提供操作语言实现各种功能,包括数据定义、数据操纵、数据完整性保证、数据库事务控制等。
此规则要求数据库通过向用户提供视图的概念,并希望能通过视图来访问或修改数据。
数据库管理系统必须能让用户在高层次上处理数据——即以表集的方法而不是单表中单行的方式去处理数据:目的在于简化用户对数据库中的数据的访问,将对高层命令的进行优化的责任交给DBMS厂商。
数据库必须提供数据的物理独立性
物理层即数据库的实现层
保证用户不需要考虑底层访问与存储数据的方法
保证数据管理系统在底层对数据进行调整或修改,不会影响用户在上层对数据的存取
数据库应提供数据的逻辑独立性——只是理想
数据库语言必须能够支持对用户输入数据进行合规性检查,以保证数据库的完整性。
分布独立性规则:用户完全不需要知道数据库是否是分布式的(即数据库的不同部分位于多个地点)
这条规则实现起来成本高,许多数据库并不支持。
质问那时的厂商:你的DBMS是否只需要通过SQL就可以做到想做的事,而不是还需要用你们原来的底层语言
关系数据模型
用二维表来表示实体集,用外键来表示实体间的联系,这样的数据模型称为关系数据模型。
关系数据结构及形式化定义
关系
关系模型中单一的数据结构——关系
关系的逻辑结构——二维表
关系模型依赖于集合代数
域
域是一组具有相同数据类型的值的集合。例:
整数
实数
介于某个取值范围的整数
指定长度的字符串集合
笛卡尔积
关系
● D1×D2×…×Dn的子集称作在域D1, D2, …, Dn上的关系,表示为
● R(D1, D2, …, Dn)
●R:关系名
●n:关系的目或度(Degree)
●n元关系,一元关系(Unary relation),二元关系(Binary
relation)
元组与二维表
元组
关系中的每个元素是关系中的元组,通常用t表示。
关系的表示
关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。
属性
关系中不同列可以对应相同的域
为了加以区分,必须对每列起一个名字,称为属性
n目关系必有n个属性
特殊的属性集
候选码:若关系中的某一属性组的值能唯一地标识一个元组,则称改属性组为候选码(键)
主码,主键:从候选码中由人为选定一个作为主码
外键:如果关系R的某一个或一组属性不是本身的码,而是另一个关系S的主码,则称该属性或属性组是R的外键(外码)
属性类别
主属性:候选码的诸属性。
非主属性:不包含在任何候选码中的属性。
全码:关系模式的所有属性是该关系模式的候选码,称为全码。
关系的性质
一个关系中不存在两个元组在各个分量(或属性)上完全相同
行的次序无所谓
列的次序无所谓
每个分量必须是不可分的量
列的分量是同一类型的数据,来自同一域
最基本的规范化要求
关系模型要求关系必须规范化,即满足一定的规范条件。规范条件中最基本的一条是:关系的每一个分量必须是一个不可分的数据项。
三类关系
关系有三类:基本表、查询表、视图表
基本表:实际存在的表,是实际存储数据的逻辑表示。
查询表:查询结果对应的表。
视图表:由基本表或其他视图表导出的虚表,不对应实际存储的数据。
关系模式
关系是元组的集合,关系模式指出元组集合的结构,以及关系遵循的完整性约束条件。
关系模式是类型,一个具体的关系是对应的关系模式的一个值。
关系模式的组成成分: 属性集U、域集D、属性与域之间来源关系集DOM,属性间的依赖关系集F
关系模式的形式化表示:R(U,D,DOM,F)
关系的完整性
关系的完整性规则是对数据的约束。
关系模型提供三类完整性规则:实体完整性、参照完整性和用户定义的完整性。
实体完整性规则
基本关系R的主属性不能取空值。
参照完整性规则
定义 主—外码之间的引用规则。不引用不存在的实体。所属性集K是关系模式R1的主键,K也是关系模式R2的外键,K的取值或为空,或等于R1关系中的某个主键值。R1为被参照关系(目标关系),R2为参照关系。
用户定义完整性
针对不同的应用环境而定义的约束条件。
关系模型提供定义和检验这类完整性的机制,不一定非用程序完成。
案例
关系模型的形式定义
关系代数
关系数据库的数据操作分为查询和更新
关系代数查询语言
关系查询语言根据其理论基础不同分成两大类:
关系代数语言:是用关系(集合)运算来表达查询要求的DML语言。
关系演算语言:用谓词演算来表达查询要求的DML语言。
各种关系查询语言均属于“非过程性”语言,关系代数语言的非过程性较弱。
传统的集合运算
专门的关系运算
选择
投影
连接
自然连接
象集
除法
关系代数操作
外连接的定义
本章总结
关系模型的基本概念
键
关系模型的三类完整性规则
关系代数
传统的集合运算
扩充的关系运算
关系数据库标准语言
SQL概述
SQL语言是结构化查询语言,Structured Query Language,简称SQL,是介于关系代数和关系演算之间的语言。
SQL的特点
综合统一
SQL集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体。
基于SQL可以独立完成数据库生命周期中的全部活动:
定义关系模式,插入数据,建立数据库
对数据库 中的数据进行查询和更新
数据库重构和维护
数据库安全性、完整性控制等
数据模型的统一性带来了数据操作符的统一性,每一种操作都只需要一种操作符。
高度非过程化
非关系数据模型的数据操纵语言“面向过程”,必须制定存取路径。
SQL只要提出“做什么”,无须了解存取路径——怎么做
存取路径的选择以及SQL的操作过程由系统自动完成。
面向集合的操作方式
非关系数据模型采用面向记录的操作方式,操作对象是一条记录
SQL采用集合操作方式——关系代数、集合代数
操作对象、查找结果可以是元组的集合
一次插入、删除、更新操作的对象可以是元组的集合
以同一种语法结构提供多种使用方式:
SQL是独立的语言:能够独立地以联机交互的方式使用
SQL又是嵌入式语言:SQL能够嵌入到高级语言程序中,供程序员设计程序时使用。
语言简洁,易学易用:SQL功能极强,完成核心功能只用了9个动词。
SQL语言性质
- SQL语言是一种关系数据库语言:提供数据的定义、查询、更新和控制等功能。
- SQL语言不是一个应用程序开发语言:只提供对数据库的操作能力,不能完成屏幕控制、菜单管理、报表生成等功能,可称为应用开发语言的一部分。
- SQL语言不是一个DBMS:它是DBMS为用户提供的交互语言。
关系数据库的体系结构
SQL语言的分类
- 数据定义语言(DDL)
- 查询语言(QL)
- 数据操纵语言(DML)
- 数据控制语言(DCL)
数据定义
创建、修改或删除数据库中各种对象,包括SQL模式、基本表、视图、索引等。
按照指定的组合、条件表达式或排序检索已经存在的数据库中的数据,不改变数据库中数据。
命令:
SELECT…FROM…WHERE…
SQL数据定义部分包括对下列对象的创建和撤销操作:
SQL模式
基本表
视图
索引
SQL提供的基本数据类型
数值型
integer(int):长整数
smallint:短整数
numeric(p,d):定点数,共p位(不包括小数点),右边d位
real:取决于机器精度的浮点数
double precision:取决于机器精度的双精度浮点数
float(n):浮点数,精度至少为n位数字
字符型
char(n)固定长度为n的字符串
varchar(n)最大长度为n的可变长字符串
日期/时间型
date:日期(年,月,日),格式YYYY-MM-DD
time:时间(小时、分、秒),格式:HH:MM:SS
不同平台SQL语言类型名称有所差异,总体都差不多。