因为笔者还处于学习阶段,如有错误,欢迎多多指正。
数据模型
数据模型是数据库系统的核心和基础
两类数据模型
- 概念模型;逻辑模型和物理模型
- 人们总是把现实世界中抽象为信息世界,然后将信息世界转换为机器世界
概念模型
也称信息模型,是按用户的观点来对数据和信息建模的,主要用于数据库设计。
- 信息世界中的基本概念
1.实体:客观存在并可相互区别的事物称为实体。
2.属性:实体所具有的某一特性。
一个实体可以有若干个属性,但是研究某一实体记录时,关心的是那些感兴趣的属性。不可再细分的属性称为原子属性,可以再细分的称为可分属性。
属性具有型和值得分别,每个属性还有一定的变化范围,称为值域。
3.码:唯一标识实体的属性集称为码。
4.实体型:用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。
5.实体集:同一类型实体的集合称为实体集。
6.联系:实体之间的联系通常是指不同实体集之间的联系。实体之间的联系有一对一,一对多,多对多等。
实体内部的联系通常是指组成实体的各属性之间的联系。
实体之间的联系是指不同实体集之间的联系,根据参与联系的实体集的数目不同,把联系分为二元联系和多元联系。
三个世界所用术语及其对应关系
现实世界 | 信息世界 | 计算机世界 |
实体集 | 实体记录集 | 表 |
实体 | 实体记录 | 记录 |
实体特征 | 属性 | 字段 |
实体标识符 | 标识属性 | 关键字 |
- 概念模型的一种表示方法:实体-联系方法
E-R方法(E-R模型)
数据字典是关于数据库中的数据的描述,即元数据,而不是数据本身。
数据字典通常由数据项、数据结构、数据流、数据存储和处理过程几部分,其中数据项是数据的最小单位。
1.数据项
2.数据结构:反映了数据之间的组合关系
3.数据流
4.数据存储
5.处理过程 - 概念结构设计
概念模型:概念模型是各种数据模型的共同基础,它比数据模型更独立于机器,更抽象,从而更加稳定。
E-R模型
1.实体之间的联系
2.E-R图
实体型用矩形表示,属性用椭圆形表示,联系用菱形表示
联系也是一个实体型,也可以有属性。
绘制E-R图的步骤:
第一步:通过对现实世界的分析、抽象,找出实体集及其属性。
第二步:找出实体集联系的属性。
第三步:找出实体集联系的属性。
第四步:绘制E-R图。绘制E-R图一般先绘制局部E-R图,然后绘制全局E-R图。
数据模型的组成要素
- 数据模型通常由数据结构、数据操作和数据的完整性约束三部分组成
1.数据结构
数据结构描述数据库的组成对象以及对象之间的联系。
数据结构是所描述的对象类型的集合,是对系统静态特性的描述。
2.数据操作
数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。具体有增删改查。
数据操作是对系统动态特性的描述。
3.数据的完整性约束
数据的完整性约束条件是一组完整性规则。
逻辑模型
逻辑模型主要包括层次模型、网状模型、关系模型、面向对象模型和对象关系模型、半结构化数据模型等,它是按计算机系统的观点对数据建模,主要用于数据库管理系统的实现。
物理模型是对数据最底层的抽象,描述系统内部的表示方式和存取方法,或在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的。
- 常见的数据模型:层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化模型
1.层次模型
层次模型用树形结构来表示各类实体以及实体间的联系。
层次模型只能处理一对多的实体联系。
2.网状模型
3.关系模型
是建立在严格地数学概念的基础上的,是一张二维表。
(1)关系模型的数据结构:
关系模型中的一些术语:关系、元组、属性、码、域、分量、关系模式
关系:一张关系对应通常说的一张表。
元组:表中的一行即为一个元组。
属性:表中的一列即为一个属性。
码:也叫码键,表中的某个属性组,可以用来唯一确定一个元组。
域:是一组具有相同数据类型的值的集合。
分量:元组中的一个属性值。
关系模式:对关系的描述,一般表示为 关系名(属性1 属性2…属性n)
关系模型的关系必须是规范化的,关系的每一个分量必须是一个不可分的数据项。
(2)关系模型的数据操纵与完整性约束:
数据操纵:查询、插入、删除和更新数据。
关系的完整性约束条件:实体完整性、参照完整性和用户定义的完整性。
关系模型中的数据操纵都是集合操作,操作对象和操作结果都是关系
(3)关系模型的优缺点:
优点:
(1):建立在严格地数学概念的基础上
(2):关系模型的概念单一,不管是实体还是实体之间的联系都是关系表示,对数据的检索和更新结果也是关系,所以数据结构简单,清晰,用户易懂难用。
(3):关系模型的存取路径对用户不透明,具有很高的数据独立性,更高的安全保密性。
缺点:
(1):由于存取路径是相对用户隐蔽的,所以查询效率不如格式化数据模型。
(2):为了提高性能,数据库管理系统必须对用户的查询请求进行优化。增加数据库开发难度。