1.6 数据抽象与数据模型
——数据抽象
现实世界→信息世界→计算机(数据)世界
- 概念模型:也称信息模型,是按用户的观点,把现实世界中的客观对象抽象成的某种信息结构,主要用于数据库设计。(独立于计算机系统;独立于具体的DBMS支持的数据模型)
——实体
实体:客观存在并可相互区分的事物。
实体集:性质相同的同类实体的集合。
属性: 实体具有的某一特性。
码:能将一个实体与其它实体区分开来的属性集合。
- 一对一联系(1:1):班级——班长
- 一对多联系(1:n):班级——学生
- 多对多联系(m:n):学生——课程
定义:主要用于DBMS的实现,是数据库系统的核心和基础。
三要素:数据结构,数据操作,完整性约束
数据结构:如何表示实体及联系。抽象出一些模型:层次模型 网状模型 关系模型 面向对象模型
- 层次模型:树形结构表示联系 ,不能直接表示多对多联系。
- 网状模型:有向图来表示联系。
- 关系模型:用二维表来表示联系
1.7数据库系统的三级模式结构
三级模式:外模式(子模式)——模式(逻辑模式)——内模式(存储模式)
-
模式是数据库中全体数据的逻辑结构和特征的描述, 所有用户的公共数据视图
- 模式是型的描述,不涉及具体值,是相对稳定的。
- 外模式通常是模式的子集
- 模式与外模式的关系:一对多
- 外模式与应用的关系:一对多
- 一个数据库只有一个模式,也只有一个内模式
- 定义外模式与模式之间的对应关系
- 映象定义通常包含在各自外模式的描述中
- 定义了数据全局逻辑结构与存储结构之间的对应关系。
- 映象定义通常包含在模式描述中。
作用:三级模式二级映像结构保证了数据的逻辑独立性和物理独立性
1.7 关系模型与关系运算简述
——关系模型
- 是从表(Table)及表的处理方式抽象出来的, 是在对传统表及其操作严格定义基础上,引入集合理论与数理逻辑提出的
- 是数据库的三大经典数据模型之一
——关系运算
关系代数示例:基于集合的运算
元组演算示例:基于逻辑的运算
域演算示例:基于示例的运算
1.8 关系与关系模型
——关系的严格定义
关系就是“表”
行(元组;记录);表头(模式)
“列”的取值范围“域(Domain)”:
- 一组值的集合,这组值具有相同的数据类型
- 如整数的集合、字符串的集合、全体学生的集合
- 再如, 由8位数字组成的数字串的集合,由0到100组成的整数集合
- 集合中元素的个数称为域的基数
- 一组域D1 , D2 ,…, Dn的笛卡尔积的子集
- 数据模型中的关系必须是有限集合。
- 每列起一个名字,该名字即为属性名。
- 不同列名的列值可以来自相同域。
关系模式:用R(A1 , A2 , … , An )来描述关系,这种描述叫关系模式。关系模式是关系的结构。或R(A1 :D1 , A2 :D2 , … , An :Dn ); A为列名。
关系的特性:
- 列名不能相同
- 行/列位置可互换
- 任意两个元组不能完全相同
- 关系中的一个属性组,其值能唯一标识一个元组,而其任意一个子集不能
- 一个关系可以有多组候选码。
- 所有属性组成的候选码称为“全码(all-key)”
- 当有多个候选码时,选定一个作为主码。
- 主码应该选择那些值从不或很少变化的属性(组)
主属性:包含在候选码中的属性。
外码(Foreign Key)/外键:
- 关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的主码相对应,则称这个属性组为R的外码或外键。
- R 称为参照关系
- S 成为被参照关系(目标关系)
——关系模型
数据结构:关系
数据基本操作:插入、删除、修改、查询(并 交 差 选择 投影 连接 除)
三个完整性约束:实体、参照、用户自定义完整性。
- 实体完整性:关系的主属性不能取空值。
- 参照完整性:如果关系R1的外码Fk与关系R2的主码Pk相对应,则R1中的每一个元组的Fk值或者等于R2中某个元组的Pk 值,或者为空值。
- 用户自定义完整性:用户针对具体的应用环境定义的完整性约束条件。
1.9 关系代数运算
概述:是一种集合化的操作,提供了一系列的关系代数操作:并、差 、广义笛卡尔积、交、选择、投影、连接和关系除等
——关系代数基本操作
并差交参与运算的关系要满足“相容性”
相容性:关系R与关系S存在相容性,当且仅当: (1) 关系R和关系S的属性数目必须相同;(2) 对于任意i,关系R的第i个属性的域必须和关系S的第i个属性的域相同。R和S满足并相容性要求n = m 且 Domain(Ai) = Domain(Bi)
——关系代数之集合操作:并
![](https://img-blog.csdnimg.cn/e0dca73192454629b301abe2b43e3993.png)
![](https://img-blog.csdnimg.cn/c17c4da907914c7e85faca208ba6bc34.png)
——关系代数之集合操作:差
![](https://img-blog.csdnimg.cn/7fbfdc6be52f4d19b4486a1ff9ce145c.png)
示例一:
示例二:查询只参加体育队而未参加文艺队的学生信息:
——关系代数之集合操作:交
![](https://img-blog.csdnimg.cn/00b90ee682e34170a7bd59543457c389.png)
示例一:
示例二:查询既参加体育队又参加文艺队的学生信息:
——关系代数之集合操作:广义笛卡尔积
![](https://img-blog.csdnimg.cn/8e851478ec83424d9888208ed845ffd0.png)
R×S与S×R结果一样
示例一:
示例二:
同名属性,加“表名.”前缀进行区分
——关系代数之纯关系操作:更名
——关系代数之纯关系操作:赋值
赋值给数据库中的关系:实现增、删、改操作
——关系代数之纯关系操作:选择
示例一:
示例二:查询除了年龄大于20的3系同学以外的所有学生:
!书写选择条件要注意运算符的优先次序,优先级如下!
- 自高至低为: 括弧,算术运算符,比较运算符 ,非 ,交 ,并
示例:
——关系代数之纯关系操作:投影
投影操作从给定关系中选出某些列组成新的关系
投影运算可以对原关系的列在投影后重新排列
示例一:
如果投影后有重复元组,则应去掉
示例二:查询所有学生的姓名和年龄:
示例三:投影与选择操作一起使用的示例:查询所有在3系就读的19岁以上的学生的学号和姓名
——关系代数之纯关系操作: θ-连接