1.数据模型
- 1.数据模型 推荐度:
- 相关推荐
1.数据模型
数据模型
数据模型是对现实世界数据特征的抽象。也就是说数据模型是用来描述数据组织数据和对数据进行操作的。通俗来讲,数据模型就是现实世界的模拟。数据模型是数据库系统的核心和基础。数据模型应满足三方面要求:
(1)能比较真实的模拟现实世界;
(2)容易理解;
(3)便于在计算机上实现。
1、两类数据模型
数据模型分为两类(两个不同的层次):
(1)概念模型(信息模型)
它是按用户的观点来对数据和信息建模,用于数据库设计。
(2)逻辑模型和物理模型
逻辑模型主要包括:层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型。它是按计算机系统的观点来对数据和信息建模,用于 DBMS 实现。
物理模型是对数据最底层的抽象,它描述数据在系统(硬盘)上的表示方法和存取方法。
关系如下图所示:
(3)信息世界中的基本概念
(1)实体(Entity)
客观存在且可以相互区别的事物称为实体。可以是具体的人、事、物或抽象概念。
(2)属性(Atrribute)
实体所具有的某一特性称为属性。一个实体可以由很多个属性来描述。
(3)码(Key)
可以唯一的标识实体的属性称为码。
(4)实体型(Entity Type)
用实体名和它的属性名集合来抽象和刻画同类实体称为实体型。
(5)实体集(Entity Set)
同一类型实体的集合称为实体集。
(6)联系(Relationship)
现实世界中事物内部以及事物之间的联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。
实体内部的联系:指组成实体的各属性之间的联系。
实体之间的联系:指不同实体集之间的联系。实体之间的联系有一对一(1:1)、一对多(1:n)和多对多(n:n)等多种类型。即:
(4)实体 - 联系方法
概念模型的一种表示方法:实体 - 联系方法。
用 E - R 图来描述现实世界的概念模型;
E - R 方法也称为 E - R 模型。
完整的 E - R 联系图
2、数据模型的组成要素
数据模型是严格定义的一组概念的集合,它精确的描述了系统的静态特征、动态特征和完整性约束条件。由三部分组成:
(1)数据结构:描述系统的静态特征;
(2)数据操作:描述系统的动态特征;
(3)完整性约束:完整性约束条件。
(2.1)数据结构
数据结构是刻画数据模型性质最重要方面,因此常用数据结构的类型来命名数据模型。
【例】层次结构 —— 层次模型、网状结构 —— 网状模型、关系结构 —— 关系模型
数据结构描述数据库的组成对象以及对象之间的联系,即描述的内容有两类:
(1)与对象的类型、内容、性质有关的;
(2)与数据之间联系有关的对象。
【例】如图:一个网状数据模型示例图
记录:
学生 —— 由学号、姓名及所在的专业系名组成;
课程 —— 由课程号、课程名以及学分组成;
选课 —— 由学生的学号、课程的课程号以及成绩组成。
SET TYPE:
S - SC —— 学生记录和学生选课记录之间的联系;
C - SC —— 课程记录和课程课程号记录之间的联系。
(2.2)数据操作
数据操作是对数据库中各种对象的实例允许执行的操作的集合,包括操作以及有关的操作规则。数据操作的类型主要有查询、更新(包括插入、删除、修改)两大类操作。数据操作语言定义数据操作的确切含义、符号、优先级别。实现数据操作的语言:
查询语言 —— Query Language
更新语言 —— Insert、Delete、Update
(2.3)数据的完整性约束条件
数据的完整性约束条件是一组完整性规则的集合。完整性规则:给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容。
数据模型对完整性约束条件的定义:反映和规定必须遵守的基本的通用的完整性约束条件。 提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件。
3、常用的数据模型
(1)格式化模型:
层次模型;
网状模型。
格式化模型中数据结构的单位:基本层次联系
(2)关系模型;
(3)对象模型:
面向对象数据模型;
对象关系数据模型。
(4)半结构化数据模型;
(5)非结构化数据模型、图模型 ......
4、层次模型
层次模型的定义:满足以下两个条件的基本层次联系的集合为层次模型。
(1)有且只有一个结点没有双亲结点,这个结点称为根节点;
(2)根以外的其它结点有且只有一个双亲结点。
层次模型用树形结构来表示各类实体以及实体之间的联系。表示方法:
实体型:用记录类型描述,每个结点表示一个记录类型(实体)。
属性:用字段描述,每个记录类型可以包含很多个字段。
联系:用结点之间的连线表示记录类型(实体)之间的一对多的父子关系。
(4.1)层次模型的数据结构
特点:
(1)结点的双亲是唯一的;
(2)只能直接处理一对多的实体联系;
(3)任何记录值只有按其路径查看;
(4)没有一个子女记录值能够脱离双亲记录值而独立存在。
【例1】教员学生层次数据库模型。
教员学生层次数据库模型
【例2】教员学生层次数据库的一个值。
教员学生层次数据库的一个值
(4.2)层次模型的数据操纵和完整性约束
层次模型的数据操纵:
查询;
插入;
删除;
更新。
层次模型的完整性约束条件:
(1)无相应的双亲结点值就不能插入子女结点值;
(2)若删除双亲结点值,则相应的子女结点值也被同时删除;
(3)更新操作时,应更新所以相应记录,来保证数据的一致性。
(4.3)层次模型的优缺点
优点:
(1)层次模型的数据结构比较简单清晰;
(2)查询效率高,性能优于关系模型,不低于网状模型;
(3)层次数据模型提供了良好的完整性支持。
缺点:
(1)结点之间的多对多联系表示不自然;
(2)对插入和删除操作的限制多,应用程序的编写比较复杂;
(3)查询子女结点必须通过双亲结点;
(4)层次数据库的命令(语言)趋于程序化。
5、网状模型
网状模型的定义:满足以下两个条件的基本层次联系的集合。
(1)允许一个以上的结点无双亲;
(2)一个结点可以由多于一个的双亲。
网状数据库系统用网状结构来表示各类实体以及实体之间的联系。表示方法与层次数据模型相同:
实体型:用记录类型描述,每个结点表示一个记录类型(实体)。
属性:用字段描述,每个记录类型可以包含很多个字段。
联系:用结点之间的连线表示记录类型(实体)之间的一对多的父子关系。
(5.1)网状模型的数据结构
特点:
(1)允许多个结点没有双亲结点;
(2)允许一个结点有多个双亲结点;
(3)允许两个结点之间有多种联系;
(4)要为每个联系命名,并且指出与该联系有关的双亲记录和子女记录。
多对多联系在网状模型的表示:间接表示多对多联系,将多对多联系分解成一对多联系。
【例】
学生/选课/课程的网状数据模型 学生和课程之间是多对多联系,可以表示为:
一个学生可以选修多门课程;(一对多联系)
某一课程可以被多个学生选修。(一对多联系)
引进一个学生选课的联结记录:
选课(学号,课程号,成绩)
(5.2)网状模型的数据操纵和完整性约束
网状模型一般来说没有层次模型那样严格的完整性约束条件,但具体的网状数据库系统对数据操纵都加了一些限制,提供了一定的完整性约束。
【例如】
(1)支持码的概念:唯一标识记录的数据项的集合,取唯一的值;
(2)保证一个联系中双亲记录与子女记录之间是一对多联系;
(3)可以定义双亲记录和子女记录之间某些约束条件。
完整性约束条件不严格:
(1)允许插入尚未确定双亲结点值的子女结点值;
(2)允许只删除双亲结点值。
导航式的查询语言和增删改操作语言。
(5.3)网状模型的优缺点
优点:
(1)能够更为直接地描述现实世界,如一个结点可以有多个双亲;
(2)具有良好的性能,存取效率较高。
缺点:
(1)结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握;
(2)DDL、DML语言复杂,用户不容易使用;
(3)记录之间联系是通过存取路径实现的,应用程序必须选择存取路径, 加重了程序员的负担。
6、关系模型
关系模型是最重要的一种数据模型,关系数据库系统采用关系模型作为数据的组织方式。计算机厂商推出的数据库管理系统几乎都支持关系模型。
(6.1)关系模型的数据结构
在用户的观点下,关系模型中数据的逻辑结构是一张二维表。
关系模型中的一些基本概念:
(1)关系(Relation):一个关系对于通常说的一张表。
(2)元组(Tuple):表中的一行即为一个元组。
(3)属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名字即为属性名。
(4)主码(Key):也称码键。是表中的某个属性组,它可以唯一缺的一个元组。
(5)域(Domain):是一组具有相同数据类型的值的集合。
属性的取值范围来自某个域。
(6)分量:元组中的一个属性值。
(7)关系模式:对关系的描述
关系名(属性1,属性2,......,属性 n)
例:学生(学号,姓名,年龄,性别,系名,年级)
关系必须是规范的,满足一定的规范条件。最基本的规范条件:关系的每一个分量必须是一个不可再分的数据项,不允许表中还有表。
关系术语 | 一般表格的术语 |
关系名 | 表名 |
关系模式 | 表头(表格的描述) |
关系 | (一张)二维表 |
元组 | 记录或行 |
属性 | 列 |
属性名 | 列名 |
属性值 | 列值 |
分量 | 一条记录中的一个列值 |
非规范关系 | 表中有表 |
(6.2)关系模型的数据操纵和完整性约束
数据操作是集合操作,操作对象和操作结果都是关系。
查询;
插入;
删除;
更新。
存取路劲对用户隐蔽,用户只要指出 “ 找什么 ”,不需要详细说明 “ 怎么找 ”。这提高了数据的独立性,提高了用户生产率。
关系的完整性约束条件:
(1)实体完整性;
(2)参照完整性;
(3)用户定义的完整性。
(6.3)关系模型的优缺点
优点:
(1)建立在严格的数学概念的基础上;
(2)概念单一:
实体和各类联系都用关系来表示;
对数据的检索结果也是关系。
(3)关系模型的存取路径对用户透明:
具有更高的数据独立性,更好的安全保密性;
简化了程序员的工作和数据库开发建立的工作。
缺点:
(1)存取路径对用户透明,查询效率往往不如格式化数据模型;
(2)为提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的难度。
- Java 接口+继承
- 配置JKD环境变量
- ConcurrentHashMap原理,在JKD7和JDK8版本的区别
- centos5
- Markdown Pad出现HTML渲染错误(HTML Rendering Error)的解决方法,Markdown Pad弹窗报错
- 51单片机实现BMP280气压计海拔高度解析(附代码)
- NFS存储服务器
- 文件服务器——NFS
- python安装cpickle
- Emgucv使用中常用函数总结
- 反爬虫原理与绕过实战
- python thinker 简易计算器
- MVC设计模式及Sprint MVC设计模式
- Android与MVC设计模式
- SQL语句执行顺序及书写建议
- 【Android开发】App消息中心构建
- 将列表(含字典)数据写入Excel
- 结构体嵌套结构体
- 迷宫 (二)
- CRC查表法——表的由来及Java实现CRC8校验算法