概述
数据库(database): 一个相关联数据的集合。它可以代表现实中某些具体的领域,在逻辑上将相关联的数据整合起来,从而实现一个具体的目的。
数据库管理系统(database management system, DBMS): 一个允许用户进行创建和维护数据库的程序的集合。它一般是一个通用软件系统(general-purpose software system),旨在实现以下过程:
- 定义(defining): 指定数据类型、结构以及约束条件;
- 组织(constructing): 在某种存储介质中组织、存储和管理数据;
- 操作(manipulating): 检索和操作数据;
- 共享(sharing): 多个用户或多个程序同时使用数据。
常见的几种关系型数据库管理系统(relational DBMSs)包括 Oracle, IBM DB2, Microsoft's Access, Microsoft's SQL Server, MySQL, postgreSQL 等等。
数据库系统(database system): 由数据库和其管理软件组成的系统,属于信息系统的组成成分。它主要提供高效的请求查询服务以及更新执行服务。
数据库的发展历史
- 层次型数据库(Hierarchical Databases): 最早研制成功的数据库系统(19世纪60年代),最成功的典型是IMS(Information Management System),由IBM公司研制成功。
- 网状型数据库(Network Databases): 层次型数据库的拓展,从树状结构变成网状结构(19世纪60年代末)。
- 关系型数据库(Relational Databases): 采用关系模型来组织数组,以行和列的形式存储数据,以便于用户理解。
- 面向对象数据库(Object-Oriented Databases):也称为对象数据管理系统,出现于19世界80年代,以面向对象编程语言为驱动,如 C++、Java, 用于实现存储以及共享复杂的结构化对象。
- XML数据库: 一种支持对 XML 格式文档进行存储和查询等操作的数据管理系统。19世纪90年代 XML 成为 Web 数据交换的标准,该数据库适用于稀疏数据、深度嵌套数据和混合内容。
- NoSQL数据库: NoSQL = Not Only SQL。泛指非关系型数据库,不使用 SQL 作为查询语言,具有水平可拓展性的特征。自2009年起,在工业上取得重大发展。
使用数据库的优势
我们日常工作中,常用的文件管理系统一般采用的是简单的树状结构,存储大量独立而不相关的文件。相比而已,数据库系统从逻辑上将相关文件数据集合起来,统一进行综合管理。一般来说,数据库系统在以下几个环节具备优势:
- 数据冗余(Data redundancy): 数据库系统能把控内部的数据冗余以确保数据的一致性以及节省存储空间。
- 数据完整性(Data integrity): 数据库管理系统能自动补齐一些完整性约束。
- 数据安全(Data security): 数据库管理系统对数据进行集中管理,能确保数据库访问是通过授权的通道进行的。
- 并发事务(Concurrent transactions)
- 备份和恢复服务(Backup and recovery services)
- 数据的独立性(Data independence)
- 等等。。。。。。
三级ANSI / SPARC体系结构
美国国家标准协会的计算机与信息处理委员会中的标准计划与需求委员会(ANSI-SPARC Architecture (American National Standards Institute, Standards Planning And Requirements Committee)提出了数据库的标准体系结构,如下图所示。
该三级体系结构主要分为:
- 外部模式(External level): 属于用户或应用程序视图,描述应用程序中使用的数据库的重构部分;
- 概念 / 逻辑模式(Conceptual / logical level): 属于用户社区视图,描述什么数据存储在数据库中以及数据之间的关系(该内容独立于它们的物理存储结构);
- 内部模式 (Internal level): 属于系统实现视图,描述数据如何存储在数据库中(如物理存储结构)。
在三级体系结构的基础上,可以总结出一些派生原则,主要针对的是数据的独立性。
- 逻辑数据的独立性(Logical data independence): 无需更改外部模式或应用程序,即可更改概念 / 逻辑模式。
- 如果添加或删除实体,只引用其余数据的外部模式不应受到影响。
- 物理数据的独立性(Physical data independence): 更改内部模式而无需更改概念 / 逻辑模式。
- 如果重新组织了物理文件,不必更改概念 / 逻辑模式。
笼统来讲,当模式在某一层发生变化时,下一层的模式保持不变,只更改两个级别之间的映射。
参考概念
在数据库操作中会使用到很多数学上的概念以及运算,常用的包括集合(Set)、元组(Tuple)、集合的笛卡尔积(Cartesian Product of Sets)。具体可以参考维基百科上的说明。
集合(Set)
- https://zh.wikipedia.org/wiki/%E9%9B%86%E5%90%88_(%E6%95%B0%E5%AD%A6)
- https://en.wikipedia.org/wiki/Set_(mathematics)
元组
笛卡尔积
- https://zh.wikipedia.org/wiki/%E7%AC%9B%E5%8D%A1%E5%84%BF%E7%A7%AF
- https://en.wikipedia.org/wiki/Cartesian_product