任何技术都不是凭空产生的,而是有着对应的发展需求,数据的管理技术也不例外。数据管理技术发展至今,主要经历了3个阶段,分别是人工管理阶段、文件系统阶段和数据库系统阶段。
在20世纪50年代中期以前,计算机主要用于科学计算,硬件方面没有磁盘等直接存取设备。
从20世纪50年代后期到60年代,数据以文件为单位保存在外存储器上,由操作系统管理。
从20世纪60年代后期开始,为了提高数据管理的效率,数据库技术应运而生,由此进入了数据库系统阶段。
数据库(Database,DB)是按照数据结构来组织、存储和管理数据的仓库。
数据库是一个存在于计算机存储设备上的数据(Data)集合,该集合中的数据按照一定的数据模型进行组织、描述和存储。可以把数据库看作是按照一定的格式存储数据的仓库,也可看作是电子化的文件柜,用户可以对文件中的数据进行增加、删除、修改、查找等操作。
数据库管理系统是一种介于用户和操作系统之间的数据库管理软件,它可以对数据库的建立、维护、运行进行管理,还可以对数据库中的数据进行定义、组织、存取。
数据库系统是指由数据库及其管理软件组成的系统,它是为适应数据处理的需要而发展起来的一种较为理想的数据处理系统。
数据库系统由数据库、数据库管理系统、数据库应用程序等组成。
图片描述了数据库系统的组成部分,其中用户是使用数据库的主体,用户通过数据库应用程序与DBMS进行通信,进而管理 DBMS中的数据。在数据管理过程中,DBMS提供了对数据的组织、存取、管理和维护等功能,数据库提供了对数据的存储功能。
数据模型(Data Model)是数据库系统的核心和基础,它是对现实世界数据特征的抽象,为数据库系统的信息表示与操作提供一个抽象的框架。
(1)数据结构:数据结构用于描述数据库系统的静态特征,主要研究数据本身的类型、内容、性质以及数据之间的联系等。
(2)数据操作:数据操作用于描述数据库系统的动态行为,是对数据库中对象实例允许执行的操作集合,数据操作主要包含检索和更新(插入、删除和修改)两类 。
(3)数据约束:数据约束是指数据与数据之间所具有的制约和存储规则,这些规则用以限定符合数据模型的数据库状态及其状态的改变,以保证数据的正确性、有效性和相容性。
用树形结构来表示数据之间的联系,它的数据结构类似一棵置的树,有且仅有一个根节点,其余的节点都是非根节点。
用网状结构来表示数据之间的关系,网状模型的数据结构允许有一个以上的节点无双亲和至少有一个节点可以有多于一个的双亲。
以数据表的形式组织数据,实体之间的关系通过数据表的公共属性表示,结构简单明了,有逻辑计算、数学计算等坚实的数学理论做基础。
用面向对象的思维方式与方法来描述客观实体,它继承了关系数据库系统已有的优势,并且支持面向对象建模,支持对象存取与持久化,支持代码级面向对象数据操作。
概念数据模型是对信息世界的建模,它能够全面、准确的描述信息世界。
常用术语:
(1)实体(Entity) :实体是指客观存在并可相互区分的事物。
(2)属性(Attribute) :属性是指实体所具有的某一特性,一个实体可以由若干个属性来描述。 (3)联系(Relationship) :这里所说的联系是指实体与实体之间的联系,有一对一、一对多、多对多三种情况。
(4)实体型(Entity Type) :实体型即实体类型,通过实体名(如学生) 及其属性名集合(如“学号、学生姓名、学生性别”)来抽象描述同类实体。
(5)实体集(Entity Set) :实体集是指同一类型的实体集合,如全校学生就是一个实体集。
E-R图也称为实体-联系图(Entity Relationship Diagram) ,是一种用图形表示的实体联系模型,由Peter Chen于1976年提出。E-R图提供了表示实体、属性和联系的方法,用来描述现实世界的概念模型。E-R图通用的表示方式如下。 实体:用矩形表示,将实体名写在矩形框内。 属性:用椭圆框表示,将属性名写在椭圆框内。实体与属性之间用实线连接。 联系:用菱形框表示,将联系名写在菱形框内,用连线将相关的实体连接,并在连线旁标注联系的类型,联系的类型分为一对一(1∶1)、一对多(1∶n)、多对多(m∶n)。
关系模型由IBM公司研究员Edgar Frank Codd于1970年发表的论文中提出,经过多年的发展,关系模型已经成为目前广泛使用的数据模型之一。
关系(Relation) ,关系一词与数学领域有关,它是基于集合的一个重要概念,用于反映元素之间的联系和性质。
属性(Attribute) ,二维表中的列称为属性,每个属性都有一个属性名。
元组(Tuple) ,二维表中的每一行数据称为一个元组。
域(Domain) ,域是指属性的取值范围。
关系模式(Relation Schema) ,关系模式是关系的描述, 通常可以简记为关系名(属性1,属性2,…,属性n)。
键(Key),在二维表中,若要唯一标识某一条记录,需要用到键(又称为关键字、码)。
为了保证数据库中数据的正确性和相容性,需要对关系模型进行完整性约束。
域完整性:域完整性是保证数据库字段取值的合理性。
实体完整性:实体完整性要求关系中的主键不能重复,且不能取空值。
参照完整性:参照完整性定义了外键和主键之间的引用规则,要求关系中的外键要么取空值,要么取参照关系中的某个元组的主键值。
用户自定义完整性:用户自定义完整性是用户针对具体的应用环境定义的完整性约束条件,由DBMS检查用户自定义的完整性。
关系模型几乎是数十年来整个数据模型领域的重要支撑,基于关系数据模型组织数据的数据库管理系统,一般称为关系型数据库。
Oracle是由甲骨文(Oracle)公司开发的一款关系型数据库管理系统,在数据库领域一直处于领先地位。
Microsoft SQL Server广泛应用于电子商务、银行、保险、电力等行业。
IBM Db2是由IBM公司研制的一款大型关系型数据库管理系统。
MySQL是以客户端/服务器模式实现的,支持多用户、多线程。
随着互联网Web 2.0的兴起,关系数据库在处理超大规模和高并发的Web 2.0网站的数据时,存在一些不足,需要采用更适合解决大规模数据集合、多重(种?)数据种类的数据库,通常将这种类型的数据库统称为非关系型数据库(Not Only SQL,No SQL)。非关系型数据库的特点在于数据模型比较简单,灵活性强,性能高。
键值数据库类似传统语言中使用的哈希表。可以通过Key来添加、查询或者删除数据。
面向文档数据库将数据以文档形式存储,每个文档是一系列数据项的集合。
列存储数据库,以列簇式存储,将同一列数据存在一起。列存储数据库查找速度快,可扩展性强。
图形数据库允许将数据以图的方式存储。以图的方式存储数据时,实体会被作为顶点,而实体之间的关系则会被作为边。
SQL(Structured Query Lanaguage,结构化查询语言)是应用于关系数据库的程序设计语言,主要用于管理关系型数据库中的数据,如存取数据、查询数据、更新数据等。
SQL是IBM公司于20世纪70年代开发出来的,并在20世纪80年代被美国国家标准学会(American National Standards Institute,简称ANSI)和国际标准化组织(International Organization for Standardization,简称ISO)定义为关系型数据库语言的标准。
(1)数据定义语言(DDL)
数据库定义语言主要用于定义数据库、表等数据库对象,其中包括CREATE语句、ALTER语句和DROP语句。
(2)数据操作语言(DML)
数据操作语言主要用于对数据库的数据进行添加、修改和删除操作,其中包括INSERT语句、UPDATE语句和DELETE语句。
(3)数据查询语言(DQL)
数据查询语言主要用于查询数据,也就是指SELECT语句,使用SELECT语句可以查询数据库中一条数据或多条数据。
(4)数据控制语言(DCL)
数据控制语言主要用于控制用户的访问权限,其中包括GRANT语句、REVOKE语句、COMMIT语句和ROLLBACK语句。
数据库是存储和管理数据的仓库,但数据库并不能直接存储数据,数据是存储在表中的。
在存储数据的过程中一定会用到数据库服务器,所谓的数据库服务器就是指在计算机上安装一个数据库管理程序。