在计算机中,和我们的操作系统一样,有一套软件。这种软件用于管理我们存储的数据,这个软件称为数据库管理系统(DBMS),而我们平时说的数据库,指的就是这个数据库管理系统。在我们的生活中,处处都有数据的身影。而我们每天都在产生着数据,这些数据在计算机中怎么存储呢?总不能随便乱放吧,这样,如果我们在需要的时候要获取这些数据,那么不是得找死人啊。要是可以把那些数据进行分类,并进行管理,那么就可以对这些数据进行有效的利用。而数据库管理系统就是担当这个重任,用于对数据的管理。当然,数据库管理系统的能力是很强大的,不只是这些。
有些人可能觉得,我在文件夹中保存数据,通过不同的目录结构来对数据进行组织,也可以达到对数据的有效管理。但是,数据库的出现,除了要对数据进行有效的组织,关键是为了解决如下的问题:
数据库系统是一些相关联的数据和一组访问数据库和修改数据库的程序的集合。数据库系统提供给用户抽象的视图,并且隐藏了低层的存储细节。
数据库为了方便对数据的检索,对数据进行分层次来屏蔽复杂性
数据抽象对数据分为3层:
特定时刻存储存储在数据库中的信息集合称为数据库的一个实例,而数据库的总体设计称为数据库模式。这个有点抽象,形象的说,类比C语言,模式就相当于是定义的一个变量,而实例就相当于是变量存储的值,而变量的值在不同的时刻是不同的。
对于数据库的不同抽象层次,数据库的模式可以分为物理模式,对应了数据库层次中的物理层;逻辑模式对应了数据库抽象层次中的逻辑层;而对于视图层次,则可以分为多个子模式,对应了多个视图。
数据库结构的基础是数据模型。数据模型是一个描述数据,数据联系,数据语义以及一致性约束的概念工具集合。数据模型提供了一种描述物理层,逻辑层以及视图层数据库设计的方式。
数据模型可以被分为:
数据操纵语言(DML)是一种使用户可以访问或操作那些通过一定的数据模型组织起来的数据的语言。
数据操纵语言可以分为:
查询是要求对信息进行检索的语句。DML中涉及信息检索的部分称为查询语言。
数据库模式是通过一系列定义来说明的,这些定义由一种称作数据定义语言(DDL)的特殊语言来定义的。数据库系统使用的存储结构和访问方式是通过一系列特殊的DDL语句来说明,这种特殊的DDL称作数据存储和定义语言。这些语言定义了数据库模式的实现细节,而这些细节对用户来说通常是不可见的。
存储在数据库中的数据值必须满足一些一致性约束,约束条件包括:
在关系数据库中,关系是通过表来表示的。在一个表中,每一行代表一个联系,而一个关系就是由许多的联系组成的集合。表的概念和数学上的关系的概念是密切相关的。在数学中,一个元组就是一组值得序列,在n个值之间的联系可以在数学上用关于这些值得一个n元组表示。
这样,在关系模型中,关系用来指代表,而元组用来指代行,属性就是表中的列。
对于每一个属性,都存在一个允许取值的集合,称为该属性的域。
在数据库中,数据库模式就相当于编程语言中定义的变量,而数据库实例就相当于是这个变量保存的值。在不同的时刻,数据库中保存的内容是可能改变的,而数据库的逻辑定义一般是不会被改变的。
一般来说,关系模式由属性序列以及各属性对应的域组成。关系实例由数据库中存储的内容组成。
在数据库中,必须有一种可以区分给定关系中的不同的元组的方法。也就是说,一个元组的属性值必须是能够唯一区分元组的。
超码是一个或多个属性的集合,这些属性的组合可以使得我们在一个关系中唯一地标识一个元组。在一个超码中,可能包含了无关紧要的属性,如果对于一些超码,他们的任意真子集都不能成为超码,这样的最小超码称为候选码。
当数据库的设计者在候选码中选中了一个码用来在一个关系中区分不同的元组,那么这个被选中的候选码就被称为主码。
一个关系模式R1,在它的属性中包含了另一个关系模式R2的主码,那么这个属性在R1上被称为是一个参照R2的外码。关系R1也称为这个外码依赖的参照关系,R2被称为外码的被参照关系。在参照关系和被参照关系上的约束被称为参照完整性约束。参照完整性约束要求在参照关系中,任意一个元组在特定属性上的取值必然等于被参照关系中某个元组在特定属性上的取值。
参考:《Database System Concepts》
原文:http://www.cnblogs.com/now-fighting/p/3585176.html