软考 系统架构设计师系列知识点之数据库基本概念(3)

接前一篇文章:软考 系统架构设计师系列知识点之数据库基本概念(2)

所属章节:

第6章. 数据库设计基础知识

第1节 数据库基本概念

6.1.2 数据模型

数据库的基础结构是数据模型是用来描述数据的一组概念和定义数据模型的三要素数据结构数据操作数据的约束条件

(1)数据结构

对象类型的集合,是对系统静态特性的描述。

(2)数据操作

对数据库中各种对象(型)的实例(值)允许执行的操作集合 ,包括操作操作规则。如操作由检索、插入、删除和修改,操作规则有优先级等。数据操作是对系统动态特性的描述。

(3)数据的约束条件

是一组完整性规则的集合。也就是说,对于具体的应用数据必须遵循特定的语义约束条件,以保证数据的正确、有效和相容。

按照不同的数据模型,可以将数据库的发展历史分为3个阶段。

(1)层次和网状数据库系统

层次模型采用树形结构表示数据与数据间的关系。在层次模型中,每个结点表示一个记录类型(实例),记录之间的联系用结点之间的连线表示,并且根结点以外的其它结点有且仅有一个双亲结点。上层和下一层类型的联系是1 : n联系(包含1 : 1联系)。

采用网络结构表示数据间联系的数据模型称为网状模型。在网状模型中,允许一个以上的结点无双亲,或者一个结点可以有多于一个的双亲。

网状模型是一个比层次模型更具有普遍性的数据结构,层次模型是网状模型的一个特例。网状模型可以直接地描述现实世界,因为去掉了层次模型的两个限制,允许两个结点之间有多种联系(称之为复合联系)。需要说明的是,网状模型不能表示记录之间的多对多联系,需要引入联结记录来表示多对多联系。

层次或网状模型,底层的数据结构均可用图来表示。二者的共同特点如下:

  • 支持三级模式的体系结构;
  • 用存取路径来表示数据之间的联系;
  • 独立的数据定义语言;
  • 导航的数据操纵语言。

(2)关系数据库系统

关系模型(Relation Model)是目前最常用的数据模型之一。关系数据库系统采用关系模型作为数据的组织方式,在关系模型种用表格结构表达实体集以及实体集之间的联系 ,其最大特色是描述的一致性 。关系模型是由若干个关系模式组成的集合。一个关系模式相当于一个记录型,对应于程序设计语言种类型定义的概念。关系是一个实例,也是一张表,对应于程序设计语言中变量的概念。变量的值随时间可能会发生变化,类似地,当关系被更新时,关系实例的内容也发生了变化。

由于关系模型比网状、层次模型更为简单灵活,因此在数据库领域中,关系数据库的使用已相当普遍。

(3)第三代数据库系统

层次、网状和关系数据库系统的设计目标源于商业事务处理,面对当前层出不穷的新型应用显得力不从心。从20世纪80年代开始,出现了许多新型应用,数据管理出现了许多新的数据模型,如面向对象模型、语义数据模型、XML数据模型、半结构化数据模型等。数据模型的发展,需要数据库系统支持日益复杂的数据类型。其中最经典的是No SQL(Not Only of SQL)运动。

No SQL一词最早出现于1998年,是Carlo Strozzi开发的一个轻量、开源、不提供SQL功能的关系数据库。2009年,Last.fm的John Oskarsson发起了一次关于分布式开源数据库的讨论,来自Rackspace的Eric Evans再次提出了No SQL的概念,这时的No SQL主要指非关系型、分布式、不提供ACID的数据库设计模式。2009年在亚特兰大举行的讨论会是一个里程碑,其口号是"select fun, profit from real_world where relational=false;"。因此,对No SQL最普遍的解释是"非关联型的",强调Key-Value Stores和文档数据库的优点,而不是单纯地反对RDBMS。

随着互联网Web 2.0网站的兴起,传统的关系型数据库在处理Web 2.0网站、特别是超大规模和高并发的SNS类型的Web 2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点,得到了非常迅速的发展。No SQL数据库的产生就是为了面对大规模数据集合和多重数据种类带来的挑战,特别是大数据应用难题。

至此,"6.1.2 数据模型"的全部内容就讲解完了。更多内容请看下回。

相关推荐
好奇的菜鸟3 小时前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
tan180°3 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
满昕欢喜3 小时前
SQL Server从入门到项目实践(超值版)读书笔记 20
数据库·sql·sqlserver
Hello.Reader4 小时前
Redis 延迟排查与优化全攻略
数据库·redis·缓存
简佐义的博客5 小时前
破解非模式物种GO/KEGG注释难题
开发语言·数据库·后端·oracle·golang
爬山算法5 小时前
MySQL(116)如何监控负载均衡状态?
数据库·mysql·负载均衡
老纪的技术唠嗑局8 小时前
OceanBase PoC 经验总结(二)—— AP 业务
数据库
阿里云大数据AI技术9 小时前
OpenSearch 视频 RAG 实践
数据库·人工智能·llm
m0_6239556611 小时前
Oracle使用SQL一次性向表中插入多行数据
数据库·sql·oracle
掘金-我是哪吒11 小时前
分布式微服务系统架构第158集:JavaPlus技术文档平台日更-JVM基础知识
jvm·分布式·微服务·架构·系统架构