数据库的基本概念

由于数据库常常在面试中会被问道,现特将数据库的一些基本概念整理如下:

数据库的4个基本概念

数据、数据库、数据库管理系统和数据库系统是数据库技术密切相关的4个概念。

数据(data):数据是数据库中存储的基本对象。通常定义数据为:描述事物的符号记录称为数据。描述事物的符号可以是数字,也可以是文字、图形、图像、音频、视频等,数据有多种表现形式,它们都可以经过数字化后存入计算机。数据的含义称为数据的语义,数据与其语义是不可分的。

数据库(DataBase,DB):顾名思义,数据库即是存放数据的仓库。严格来讲,数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。概括的说,数据库具有永久储存、有组织和可共享三大特点。

数据库管理系统(DataBase Mangement System,DBMS):数据库管理系统是定位于用户与操作系统之间的一层数据管理软件。数据库管理系统和操作系统一样是计算机的基础软件,也是一个大型复杂的软件系统。主要包括以下几个方面的功能:

(1)数据定义功能:数据库管理系统提供数据定义语言,用户可通过它来方便地对数据库中的数据对象的组成与结构进行定义。

(2)数据组织、存储和管理:数据库管理系统要分类组织、存储和管理各种数据,包括数据字典、用户数据、数据的存取路径等等。要确定以何种文件结构和存取方式在存储级别上组织这些数据,如何实现数据之间的联系。数据组织和存储的基本目标是提高存储空间利用率和方便存取,提供多种存取方法(如索引查找、hash查找、顺序查找等)来提高存取效率。

(3)数据操纵功能:数据库管理系统还提供数据操纵语言,用户可以使用它操纵数据,实现对数据库的基本操作,如查询、插入、删除和修改等。

(4)数据库的事务管理和运行管理:数据库在建立、运用和维护时由数据库管理系统统一管理和控制,以保证事务的正确运行,保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复。

(5)数据库的建立和运行管理:数据库的建立和维护功能包括数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监视、分析功能等。这些功能通常是由一些实用或管理工具完成的。

(6)其他功能:其他功能包括数据库管理系统与网络中其他软件系统的通信功能,一个数据库管理系统与另一个数据库管理系统或文件系统的数据转换功能,异构数据库之间的互访和互操作功能等。

数据库系统(DataBase System,DBS):数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。

数据库系统的特点

(1)数据结构化:数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数据库系统与文件系统的本质区别。所谓整体结构化是指数据库中的数据不再仅仅针对某一个应用,而是面向整个组织或企业;不仅数据内部是结构化的,而且整体都是结构化的,数据之间是具有联系的。也就是说,不仅要考虑某个应用的数据结构,还要考虑整个组织的数据结构。在数据库系统中,不仅数据是整体结构化的,而且存取数据的方式也很灵活,可以存取数据库中的某一个或一组数据项、一个记录或一组记录;而在文件系统中,数据的存取单位是记录,粒度不能细到数据项。

(2)数据的共享性高、冗余度低且易扩充

数据共享可以大大减少数据冗余,节约存储空间。数据共享还能够避免数据之间的不相容性与不一致性。不一致性是指统一数据不同副本的值不一样。

(3)数据独立性高

数据独立性是借助数据库管理数据的一个显著优点,它已成为数据库领域中一个常用术语和重要概念,包括数据的物理独立性逻辑独立性物理独立性是指用户的应用程序与数据库中数据的物理存储是相互独立的。也就是说,数据在数据库中怎样存储是由数据库管理系统管理的,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变时应用程序不用改变。逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。即数据的逻辑结构改变时用户程序也可以不变。数据独立性是由数据库管理系统提供的二级映像功能来保证的。

(4)数据由数据库管理系统统一管理和控制

数据库的共享将会带来数据库的安全隐患,而数据库的共享是并发的共享,即多个用户可以同时存取数据库中的数据,甚至可以同时存取数据库中同一个数据,这又会带来不同用户间相互干扰的隐患。另外,数据库中数据的正确与一致也必须得到保障。为此,数据库管理系统化还必须提供一下几个功能:1.数据的安全性保护:数据的安全性是指保护数据以防不合法使用造成的数据泄密和破坏。2.数据的完整性检查:数据的完整性是指数据的正确性、有效性和相容性。完整性检查将数据控制在有效的范围内,并保证数据之间满足一定的关系。3.并发控制:当多个用户的并发进程同时存取、修改数据库时,可能会发生相互干扰而得到错误的结果或使得数据库的完整性遭到破坏,因此必须对多用户的并发操作加以控制和协调。4.数据库恢复:计算机系统的硬件故障、软件故障、操作员的失误以及故意破坏也会影响数据库中的数据的正确性,甚至造成数据库部分或全部数据的丢失。数据库管理系统必须具有将数据库从错误状态恢复到某一已知的正确状态的功能,这便是数据库的恢复功能。

总结:数据库是长期存储在计算机内有组织、大量、共享的数据集合。它可以供各种用户共享,具有最小冗余度和较高的数据独立性。数据库管理系统在数据库建立、运用和维护时对数据库进行统一控制,以保证数据的完整性和安全性,并在多用户同时使用数据库时进行并发控制,在发生故障后对数据库进行恢复。

数据库系统的三级模式结构

(1)模式:也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。模式实际上是数据库数据在逻辑级别上的视图。一个数据库只有一个模式。数据库管理系统提供模式数据定义语言(模式DDL)来严格定义模式。

(2)外模式:也称子模式或用户模式,它是数据库用户(包括应用程序和最终程序)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示,外模式通常是模式的子集。一个数据库可以有多个外模式。外模式是保证数据库安全性的一个有力措施。每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据是不可见的。数据库管理系统提供外模式数据定义语言(外模式DDL)来严格定义外模式。

(3)内模式:也称存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。

数据库的二级映像功能

(1)外模式/模式映像:模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。对应于同一个模式可以有任意多个外模式。对于每一个外模式,数据库系统都有一个外模式/模式映像,它定义了该外模式与模式之间的对应关系。这些映像定义通常包含在各自外模式的描述中。当模式改变时,由数据库管理员对各个外模式/模式的映像作相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。

(2)模式/内模式映像:数据库中只有一个模式,也只有一个内模式,所以模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。当数据库的存储结构改变时,由数据库管理员对模式/内模式映像作出相应改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序的物理独立性,简称数据的物理独立性。

数据与程序之间的独立性使得数据的定义和描述可以从应用程序中分离出去。另外,由于数据的存取由数据库管理系统管理,从而简化了应用程序的编制,大大减少了应用程序的维护和修改。

事务

事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元。事务处理技术主要包括数据库恢复技术和并发控制技术。数据库恢复机制和并发控制是数据库管理系统的重要组成部分。

所谓事务是用户定义的一个数据库的操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。一般将来,事务与程序的区别在于一个程序中包含多个事务。

事务的开始与结束可以由用户显式控制。如果用户没有显式的定义事务,则由数据库管理系统按默认规定自动划分事务。在SQL中,定义事务的语句一般有三条:BEGIN TRANSACTION;COMMIT;ROLLBACK;事务通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。COMMIT表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据库的更新重新写回到磁盘上的物理数据库中去,事务正常结束。ROLLBACK表示回滚,即在事务运行过程中发生了某种故障,事务不能正常继续执行,系统将事务对数据库的所有已完成的操作全部撤销,回滚到事务开始时的状态。

事务的ACID特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持续性(Durability)

(1)原子性:事务是数据库的逻辑工作单位,事务中包括的诸多操作要么都做,要么都不做。

(2)一致性:事务执行的结果必须是使数据库从一个一致状态变到另一个一致状态。因此当数据库中只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统运行发生故障,有些事务尚未完成就被迫中断,这些未完成的事务对数据库所做的修改有一部分已经写入物理数据库,这时数据库就处于一种不正确的状态,或者说不一致的状态。

(3)隔离性:一个事务的执行不能被其他事务干扰,即一个事务的内部操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。

(4)持续性:持续性也称永久性,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。

事务是恢复和并发控制的基本单位,保证事务的ACID特性是事务管理的重要任务。事务的ACID特性可能遭到的破坏的因素有:

(1)多个事务并发运行时,不同事务的操作交叉执行。此种情况下,数据库管理系统必须保证多个事务的交叉运行不影响这些事务的原子性。

(2)事务在运行过程中被强行停止。此种情况下,数据库管理系统必须保证被强行终止的事务对数据库和其他事务没有任何影响。

索引

当表的数据量比较大时,查询操作会比较耗时。建立索引是加快查询速度的有效手段。数据库索引类似于图书后面的索引,能快速定位到需要查询的内容。用户可以根据应用环境的需要在基本表上建立一个或多个索引,已提供多种存取路径,加快查找速度。

数据库索引有多种类型,常见索引包括顺序文件上的索引、B+树索引、散列索引、位图索引等。顺序文件上的索引是针对按指定属性值升序或降序存储的关系,在该属性上建立一个顺序索引文件,索引文件由属性值和相应的元组指针组成。B+树索引是将索引属性组织成B+树形式,B+树的叶结点为属性值和相应的元组指针。B+树索引具有动态平衡的优点。散列索引是建立若干个桶,将索引属性按照其散列函数映射到相应桶中,桶中存放索引属性值和相应的元组指针。散列索引具有查找速度快的特点。位图索引是用位向量记录索引属性中可能出现的值,每个位向量对应一个可能值。

索引虽然能够加快数据库的查询速度,但是需要占用一定的存储空间,当基本表更新时,索引要进行相应的维护,这些都会增加数据库的负担,因此要根据实际应用的需要有选择地创建索引。

creat unique index Stusno on Student(Sno):为Student表按学号升序建立唯一索引

creat unique index Coucno on Course(Cno):为Course表按课程号升序建立唯一索引

creat unique index Scno on SC(Sno ASC,Cno DESC):为SC表按学号升序和课程号降序建立唯一索引

范式

关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。一般而言,数据库的范式有六种不同程度的要求,即第一范式、第二范式、第三范式、巴斯范式、第四范式和第五范式。

第一范式(1NF):

所谓第一范式(1NF)是指在关系模型中,对于添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项,即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。简而言之,第一范式就是无重复的域。

说明:在任何一个关系数据库中,第一范式(1NF)是对关系模式设计的基本要求,一般设计中都必须满足第一范式(1NF)。不过有些关系模型中突破了1NF的限制,这种称为非1NF的关系模型。换句话说,是否必须满足1NF的最低要求,主要依赖于所使用的关系模型。

第二范式(2NF)

在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)。

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分。选取一个能区分每个实体的属性或属性组,作为实体的唯一标识。例如在员工表中的身份证号码即可实现每个一员工的区分,该身份证号码即为候选键,任何一个候选键都可以被选作主键。在找不到候选键时,可额外增加属性以实现区分,如果在员工关系中,没有对其身份证号进行存储,而姓名可能会在数据库运行的某个时间重复,无法区分出实体时,设计辟如ID等不重复的编号以实现区分,被添加的编号或ID选作主键。(该主键的添加是在ER设计时添加,不是建库时随意添加)

第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是在第一范式的基础上属性完全依赖于主键。

第三范式(3NF)

在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)。

第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性,也就是在满足2NF的基础上,任何非主属性不得传递依赖于主属性。

巴斯-科德范式(BCNF)

Boyce-Codd Normal Form(巴斯-科德范式)

在3NF基础上,任何非主属性不能对主键子集依赖(在3NF基础上消除对主码子集的依赖)

巴斯-科德范式(BCNF)是第三范式(3NF)的一个子集,即满足巴斯-科德范式(BCNF)必须满足第三范式(3NF)。通常情况下,巴斯-科德范式被认为没有新的设计规范加入,只是对第二范式与第三范式中设计规范要求更强,因而被认为是修正第三范式,也就是说,它事实上是对第三范式的修正,使数据库冗余度更小。这也是BCNF不被称为第四范式的原因。某些书上,根据范式要求的递增性将其称之为第四范式是不规范,也是更让人不容易理解的地方。而真正的第四范式,则是在设计规范中添加了对多值及依赖的要求。

视图

视图是从一个或几个基本表中导出的表。它与基本表不同,是一个虚表。数据库中只存储视图的定义,而不存储视图对应的数据,这些数据仍存放在原来的基本表中。所以一旦基本表中的数据发生变化,从视图中查询出来的数据也就随之改变了。视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。视图一旦定义,就可以和基本表一样被查询、删除,也可以在一个视图上再定义一个新的视图,但是对视图的更新(增、删、改)操作则有一定的限制。由于视图是不实际存储数据的虚表,因此对视图的更新最终还是转换为对基本表的更新。为防止用户通过视图对数据进行增删改时,有意无意地对不属于视图范围内的基本表数据进行操作,可在定义视图时加上with check option子句,这样当用户在视图上增删改数据时,关系数据库管理系统会检查视图定义中的条件,若不满足条件则拒绝执行该操作。

视图的作用

1.视图能够简化用户的操作

视图机制使用户可以将注意力集中在所关心的数据上。如果这些数据不是直接来自基本表,则可以通过定义视图使数据库看起来结构简单、清晰,并且可以简化用户的数据查询操作。例如,那些定义了若干张表连接的视图就将表与表之间的连接操作对用户隐蔽起来了,即用户所做的只是对一个虚表的简单查询,而这个虚表的来源用户则无须了解。

2.视图使用户能够以多种角度看待同一数据

视图机制能使不同地用户以不同的方式看待同一数据,当许多不同种类的用户共享一个数据库时,这种灵活性是非常重要的。

3.视图对重构数据库提供了一定程度的逻辑独立性

4.视图能够对机密数据提供安全保护

5.适当利用视图可以更清晰地表达查询

你可能感兴趣的:(数据库,数据库)