一、数据模型
**定义:**数据模型是一个描述数据、数据联系、数据语义、以及数据一致性约束的工具集合。它是数据库的核心与基础。
例如:关系模型、实体—联系模型、基于对象的数据模型。
目的:表达数据并使数据容易理解。
数据类型基本要素
1. 数据操作
- 对数据库各种对象的实例允许操作的集合(包括操作及相关的操作规则)
- 两大类操作:
——检索、更新(包括插入、删除、修改)
——数据操作必须定义 操作的确切含义、操作符号、操作规则(如优先级)及实现操作的语言 - 数据操作是对系统动态特性的描述。
2. 数据约束条件
- 是一组完整性规则的结合
- 数据模型应该反映和规定本数据模型必须遵守的基本的通用的完整性约束条件
- 数据模型还应提供定义完整性约束条件的机制
——以反映具体应用所涉及的数据必须遵守的特定的语义约束条件
3. 数据结构
- 与数据类型、内容、性质有关的对象
——如网状模型中的数据项、记录,关系模型中的域、属性、关系等 - 与数据之间联系有关的对象
- 数据结构是对系统静态特征的描述。
其中数据模型有:
逻辑数据模型—层次数据模型
逻辑数据类型—无网状数据类型
逻辑数据类型—关系数据类型
关系数据类型优点:
- 数据结构简单、操作灵活
- 支持关系与集合运算操作
- 支持广泛使用的SQL数据库操作语言标准
- 拥有众多的软件厂商产品与用户
关系数据模型局限:
- 只用于结构化数据的组织与存储管理
- 支持的数据类型较简单
- 难以支持互联网广泛应用的非结构化数据和复杂数据管理
二、关系数据模型
实体、关系的概念
实体(entity)——是指包含有数据特征的事物对象在概念模型世界的中的抽象名称。 例如:在企业信息系统中,人员信息可以使用“雇员(EMPLOYEE)”实体名称表示,并用实体模型符号可视化表示如下。
关系(relation)——是指具有关系特征、用于存放实体数据的二维表。关系也常称为关系表。在关系模型中,使用“关系”来存储“实体”中的数据。
如上图其中关系特征(特点)为:
- 表中每行存储实体的一个实例数据
- 表中每列包含实体的一列属性数据
- 表中单元格只能存储单个值
- 不允许有重复的行和列
- 行、列顺序可任意
关系实例:是由命名的若干列和行组成的表格,是关系在特定时刻的内容
关系数据模型数据结构
相关概念;
键:
- 能唯一区分不同元组的属性或属性组合
- 也称为关键字、码
- 关键字的属性值不能取空值(也就是里面内容不能为空)
主键:(primary key)
- 当一个关系中有多个候选键的时候,则从中选定一个作为关系的主键
- 每个关系有且只有一个主键
候选键
- 凡能够唯一区分不同元组的属性或属性组合
- 主属性:包括在候选键中的属性
- 非主属性:不包括在候选键中的属性
外键
- 某个属性或属性组合并非该关系的键,但却是另一个关系的主键,称此属性或属性组合为本关系的外键。
其中病人病号在病人信息表中、医生编号在医生信息表中,所以这两个可以作为外键。
关系数据库
- 在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据库。
- 建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。
- 关系数据库中的数据内容
关系数据库的对象组织:
- 用户表:存储用户的应用数据
- 系统表:存储数据库系统自身数据
- 视图:通过虚拟表实现数据查询处理
- 索引:通过目录数据结构支持快速的数据查询
- 约束:对关系表及其数据施加规则
- 存储过程:在数据库内部实现特定功能程序的数据处理
- 触发器:在数据库内部实现数据操作事件触发自动执行的过程程序
以下为关系数据的一些模型
三、关系
3.1 域、笛卡尔积和关系
- 域是一组具有相同类型的值得集合。
例如:
① 自然数、整数、实数
② 长度小于25字节的字符串
③ 指定长度的字符串的集合
④ {‘男’,‘女’} - 笛卡尔积
笛卡尔积的表示方法
① 笛卡尔积可表示为一张二维表
② 表中的每行对应一个元组,表中的每列对应一个域
关系定义
例如:
关系的性质:
3.2 关系性质and关系模式和关系的区别
3.3 关系完整性
三类完整性约束
- 实体完整性和参照完整性
关系模型必须遵守的两个约束条件
称为关系的两个不变性,应该由关系系统自动支持。 - 用户定义的完整性
应用领域需要遵循的约束条件,体现了具体领域中的语义约束
空
- 代表当前不知道或是对这个元组不可用的一个属性值。
- 空是处理不完整或异常数据的一种方法。
- 空并不等于零值或空格所组成的字符串 。
实体完整性规则(Entity integrity)
- 基本关系的所有主关键字对应的主属性都不能取空值
例如:
Doctor(Dno,Dname,Dsex,Dage,Deptno,Dlevel,Dsalary)中Dno是主关键字,则Dno属性都不能为空
SelectCourse(Sno,Cno,Record)中Sno,Cno不能为空 - 实体完整性是针对表中行的完整性,要求表中所有行都有唯一标识符。
关系间的引用
在关系模型中实体及实体间的联系都是用关系来描述的,因此可能存在着关系与关系间的引用。
外码(外键)
参照完整性规则
-
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
或者取空值( F的每个属性值均为空值)
或者等于S中某个元组的主码值① 参照完整性属于表间规则
② 对于永久关系的相关表,在更新、插入或删除记录时,如果只改其一不改其二,就会影响数据的完整性
四、关系代数
4.1 介绍
- 关系代数是一种抽象的查询语言,它用于对关系的运算来表达查询
*运算对象是关系
*运算结果亦为关系 - 关系代数的运算符有两类:集合运算符和专门的关系运算符
*传统的集合运算:从关系的“水平”方向即行的角度进行。其中有:并、差、交、笛卡尔积
*专门的关系运算:不仅涉及行而且涉及列。其中有:选择运算、投影运算、连接运算、除运算
4.2 传统集合运算
并运算:
差运算:
交运算
笛卡尔积
4.3 专门的关系运算
选择运算:
投影运算:
连接运算
自然连接:
左连接
右连接
除法运算——象级
除法运算