写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。
本文关键字:数据库、模型、层次模型、网状模型、关系模型
数据库领域的产生是源于对数据高效、便捷的管理需要,数据库的演变也经历了几个阶段。
最初计算机的用途主要是用于解决数据的计算问题,所以数据不需要长期保存。并且当时还没有类似于磁盘的,可以直接存取的硬件设备,也没有操作系统和可用于数据管理的软件,所以数据主要是通过穿孔卡片来存储。当时的数据管理就是对所有的这些穿孔卡片进行物理的存储和处理,好吧,这真的很物理。
从数据的管理和利用的角度上来看,这种管理方式最要命的问题就是数据是面向应用的,无法共享。即使两个计算任务或程序用到了相同的数据,也必须各自定义、各自组织,从而导致出现了大量重复的数据。
从1951年开始,陆续出现了类似于磁带驱动器、磁盘等硬件存储设备,并可以使用操作系统中的数据管理软件进行操作,引发了数据管理的革命。使用磁盘进行存储的最大好处是可以按需的存取数据,而穿孔卡片和磁带只能顺序存取数据。
这一阶段的数据管理相对轻松了些,由于有了软件和硬件的支持,所以对数据的存取操作相对简单。由于程序可以通过文件路径和名称就可以完成对数据的访问,不需要再关心数据的真正存储位置(磁盘上具体的部位),自此数据便有了物理结构和逻辑结构的区别,此时对于数据的读取基本上以记录为单位。
到了19世纪60年代,计算机被使用的越来越广泛,对于数据管理、数据共享方面的要求也越来越高,传统的文件系统已经远远不能满足使用上的需要。于是,能够统一管理和共享数据的数据库管理系统(DBMS)应运而生。
在数据库系统阶段,由于要对数据进行高效的管理,除了提供数据存储的功能外,在进行数据读取时,不仅要能描述数据本身,还要能够描述数据与数据之间的关系,这就需要依赖数据模型来实现。同时,数据和应用程序彼此独立,并依据模型将重复数据减少到最低程度,从而降低数据的冗余度。除此之外,由于数据是由DBMS来进行管理,所以还提供了数据安全、完整性保证、数据备份、数据恢复等功能。
数据模型是数据库系统的核心和基础,通常由数据结构、数据操作和数据约束3部分组成。
数据结构是所研究的对象(如表、视图等)类型的集合,在数据库系统中通常按照数据结构的类型来命名数据模型。传统的数据模型有层次模型、网状模型和关系模型。
通常数据结构主要描述数据的类型、内容、性质以及数据间的联系等,是目标类型的集合。目标类型是数据库的组成成分,一般可分为两类:数据类型和数据类型之间的联系。数据结构是数据模型的基础,数据操作和约束都基本建立在数据结构上,不同的数据结构具有不同的操作和约束。
数据操作是指对数据库中各种对象(如表、视图等)的实例(具体的某个表、视图等)允许执行的操作的集合,数据库主要有检索(查)和更新(增、删、改)两大类操作。
数据约束主要描述数据结构内数据间的语法、词义联系、他们之间的制约和依存关系,以及数据动态变化的规则,以保证数据的正确、有效和相容,是完整性规则的集合,这对于数据来说是一个很重要的要求。
数据库领域的发展已经有了半个多世纪的历史,可划分为三代数据库。
第一代数据库的代表是1969年IBM公司研制的层次模型DBMS以及19世纪70年代由美国数据库系统语言协商CODASYL下属数据库任务组DBTG提议的网状模型DBMS。
第二代数据库的主要特征是支持关系模型,也被称之为RDBMS,最早在1970年由IBM公司的研究员E.F.Codd提出,代表产品为Sysem R。
第三代数据库将为更加丰富的数据模型和更强大的数据管理功能为特征,以提供传统数据库系统问难以支持的新应用。它必须支持面向对象,具有开答放性,能够在多个平台上使用。
最早出现的是网状模型,网状模型的基本结构是一个不加任何限制条件的无向图。优点是能明确而方便地表示数据间的复杂关系;数据冗余小。缺点在于网状结构的复杂,增加了用户查询和定位的困难;需要存储数据间联系的指针,使得数据量增大;数据的修改不方便。在关系型数据库出现之前,网状DBMS要比层次DBMS用的普遍,在数据库发展史上也占有重要地位。
层次型数据库管理系统是紧随网络型数据库出现的,层次模型的基本结构是树形结构。优点是存取方便且速度快;结构清晰,容易理解;数据修改和数据库扩展容易实现;检索关键属性十分方便。缺点是结构呆板,缺乏灵活性;同一属性数据要存储多次,数据冗余度较高。
关系模型为非格式化的结构,用单一的二维表的结构表示实体及实体之间的联系。优点在于结构特别灵活,概念单一,满足所有布尔逻辑运算和数学运算规则形成的查询要求;能搜索、组合和比较不同类型的数据;增加和删除数据非常方便;具有更高的数据独立性、更好的安全保密性。缺点是数据库大时,查找满足特定关系的数据费时;对空间关系无法满足。