1.3 数据库系统结构
从数据库最终用户角度看(数据库系统外部的体系结构) ,数据库系统的结构分为:
单用户结构
主从式结构
客户/服务器
浏览器/应用服务器/数据库服务器多层结构等
从数据库管理系统角度看,数据库系统通常采用三级模式结构,是数据库系统内部的系统结构
1.3.1 数据库系统模式的概念
1 型和值的概念
型(Type):对某一类数据的结构和属性的说明
值(Value):是型的一个具体赋值
举例:
学生记录型:(学号,姓名,性别,系别,年龄,籍贯)
一个记录值:(900201,李明,男,计算机,22,江苏
2 模式(Schema)
数据库逻辑结构和特征的描述
是型的描述
反映的是数据的结构及其联系
模式是相对稳定的
3 实例(Instance)
模式的一个具体值
反映数据库某一时刻的状态
同一个模式可以有很多实例
实例随数据库中的数据的更新而变动
1.3.2 数据库系统的三级模式结构
① 模式(Schema)
模式(也称逻辑模式):数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,综合了所有用户的需求
注:一个数据库只有一个模式,模式的地位是数据库系统模式结构的中间层,与数据的物理存储细节和硬件环境无关,与具体的应用程序、开发工具及高级程序设计语言无关
② 外模式(External Schema)
外模式(也称子模式或用户模式):是数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
注:外模式的地位:介于模式与应用之间
模式与外模式的关系:一对多
外模式通常是模式的子集
一个数据库可以有多个外模式。反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求
对模式中同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同
外模式与应用的关系:一对多
同一外模式也可以为某一用户的多个应用系统所使用
但一个应用程序只能使用一个外模式
外模式是保证数据库安全的一个有力措施。每个用户只能看见和访问对应的外模式中的数据,数据库的其余数据是不可见的。
③ 内模式(Internal Schema)
内模式(也称存储模式):是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。
注:一个数据库只有一个内模式
!> 数据在数据库内部的表示方式:
记录的存储方式(顺序存储,按照B树结构存储, 按hash方法存储)
索引的组织方式
数据是否压缩存储
数据是否加密
数据存储记录结构的规定
最后再来回顾一下数据库系统的三级模式结构:
1.3.3 数据库的二级映像功能与数据独立性
三级模式是对数据的三个抽象级别
二级映象在 DBMS 内部实现这三个抽象层次的联系和转换
外模式/模式映像
模式/内模式映像
第二章 关系数据库
2.1 关系模型的基本术语及形式化定义
数据结构 —— 静态特性
数据操作 —— 动态特性
数据的约束条件
数据结构
1 数据结构:描述数据库的组成对象,以及对象之间的联系
2 两类对象:
与数据类型、内容、性质有关的对象
与数据之间联系有关的对象
3 数据结构是对系统静态特性的描述
数据操作
1 数据操作:对数据库中各种对象(型)的实例(值)允许执行的操作及有关的操作规则
2 数据操作的类型
检索
更新(包括插入、删除、修改)
3 数据模型对操作的定义
操作的确切含义
操作符号
操作规则(如优先级)
实现操作的语言
4 数据操作是对系统动态特性的描述。
数据的完整性约束条件
1 数据的完整性约束条件
一组完整性规则的集合。
完整性规则:是给定的数据模型中数据及其联系所具有的制约和储存规则
用以限定符合数据模型的数据库状态以及状态的变化,来保证数据的正确、有效、相容。
2 数据模型对约束条件的定义
反映和规定本数据模型必须遵守的基本的通用的完整性约束条件。例如在关系模型中,任何关系必须满足实体完整性和参照完整性两个条件。
提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件。
2.1.1 基本术语
1 域 Domain
一组具有相同数据类型的值的集合。
比如整数、字符串等。
2 笛卡尔积 Cartesian Product
笛卡尔积是域上的一种集合运算
定义有点晦涩,看下面一个例子就懂了
3 关系 Relation
笛卡尔积 D1×D2×…×Dn 的一个子集叫作域 D1, D2, …, Dn 上的一个关系。
学生(学号,姓名,年级)就是一个关系
如果只有 1 个属性,则称为单元关系/一元关系
如果有 2 个属性,则称为二元关系
4 主码 Primary Key
有一个或一组这样的属性,它的值能确定该关系中其他所有属性的值。
5 候选码 Candidate Key
能唯一标识元组的属性(组),其中选择其一作为主码。
6 主属性 Prime Attribute
候选码中的诸属性。
7 非主属性 Non-Key Attribute
不出现在任何候选码中的属性。
8 关系的型与值
关系(表)的型:关系的结构(字段名、字段个数、域等)
关系(表)的值:关系中具体的元组,也称关系的实例(Instance)。
2.1.2 关系的概念及性质
关系 Relation:笛卡尔积 D1×D2×…×Dn 的一个子集叫作域 D1, D2, …, Dn 上的一个关系。
学生(学号,姓名,年级)就是一个关系
如果只有 1 个属性,则称为单元关系/一元关系
如果有 2 个属性,则称为二元关系
2.1.3 关系模式
!> 关系数据库中,关系模式是型,关系是值 。
1 什么是关系模式
关系模式(Relation Schema)是型
关系是值
关系模式是对关系的描述
元组集合的结构
属性构成
属性来自的域
属性与域之间的映象关系
元组语义以及完整性约束条件
属性间的数据依赖关系集合
2 定义关系模式
关系的描述称为关系模式。
关系模式可以形式化地表示为:R(U,D,dom,F)
说明:
R 关系名
U 组成该关系的属性名集合
D 属性组 U 中属性所来自的域
dom 属性向域的映象集合
F 属性间的数据依赖关系集合
关系模式通常可以简记为:R (U) 或 R (A1,A2,…,An)
R ——关系名
A1,A2,…,An ——属性名
!> 注:域名及属性向域的映象常常直接说明为属性的类型、长度
3 关系模式与关系
关系模式
对关系的描述
静态的、稳定的
关系
关系模式在某一时刻的状态或内容
动态的、随时间不断变化的
关系模式和关系往往统称为关系,通过上下文加以区别
2.1.4 关系数据库
关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
(1)单一的数据结构—关系
关系模型的数据结构非常单一。在关系模型中,现实世界的实体以及实体间的各种联系均用关系来表示。在用户看来,关系模型中数据的逻辑结构是一张二维表。
(2)关系操作
关系模型中常用的关系操作包括:选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、交(Intersection)、差(Difference)等和查询(Query)操作和增加(Insert)、删除(Delete)、修改(Update)操作两大部分。
(3)关系的三类完整牲约束
关系模型允许定义三类完整性约束:实体完整性、参照完整性和用户定义的完整性。
2.2 关系的完整性
关系模型中可以有三类完整性约束:实体完整性、参照完整性和用户定义完整性。
其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。
关系模型的完整性规则是对关系的某种约束条件。任何关系在任何时刻都要满足这些语义约束
实体完整性
参照完整性
用户定义完整性
2.2.1 实体完整性
Entity Integrity
关系数据库中的每个元组应该是可区分的、唯一的。这样的约束条件用实体完整性来保证
实体完整性规则:每个关系都应有至少一个主属性,且主属性不能为空值
例如:选修(学号,课程号,成绩)关系中,学号和课程号不能为空值
!> 实体完整性规则规定基本关系的所有主属性都不能取空值,而不仅是主码整体不能取空值。
2.2.2 参照完整性
Referential Integrity
参照完整性规则:若属性 F 是基本关系R的外码,它与基本关系 S 的主码 Ks 相对应,则对于 R 中每个元组在 F 上的值必须为:
或者取空值
或者等于 S 中某个元组的主码值
2.2.3 用户定义完整性
User-defined Integrity
任何关系数据库系统都应支持实体完整性和参照完整性。除此之外,用户还可以自定义完整性约束。
用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。
例:选修(学号,课程号,成绩)成绩的取值范围在 0~100 之间
关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。