1. 数据库概述
数据库
数据库(Database, DB)是存放数据的仓库,它可以按照某种数据结构对数据进行存储和管理。只不过这些数据存在一定的关联,并按照一定的格式存放在计算机上。从广义上讲,数据不仅包含数字,还包括文本、图像、音频和视频等。数据库是事务处理、信息管理等应用系统的基础。
数据库系统
数据库系统(Database System, DBS)是一个复杂的系统,是采用了数据库技术的计算机系统。数据库系统不仅是对一组数据进行管理的软件,还是存储介质、处理对象和管理系统的集合体,由数据库、硬件、软件和数据库管理员组成。
数据库管理系统
数据库管理系统是位于操作系统和用户之间的一个数据管理软件,它按照一定的数据模型科学地组织和存储数据,并能够对数据进行获取及维护。提到数据库管理系统,不禁会想到另一个与之相似的概念---数据库系统(DBS),数据库系统是实现有组织地、动态地存出大量关联数据,方便多用户访问的计算机软件、硬件和数据资源组成的系统,是采用数据库技术的计算机系统。数据库管理系统是指数据库系统中对数据进行管理的软件系统,是数据库系统的核心组成部分,包括对数据库的定义、查询、更新及各种控制,都是通过DBMS进行的。DBMS总是基于各种数据模型而建立的,有层次型、网状型、关系型和面向对象型等多种模型。
数据模型
数据模型是数据库系统的核心和基础,是关于描述数据与数据之间的联系、数据的语义、数据一致性约束的概念性工具的集合。
- 数据结构:是对系统静态特征的描述,描述对象包括数据的类型、内容、性质和数据之间的相互作用关系。
- 数据操作:是对系统动态特征的描述,是对数据库各种对象实例的操作。
- 完整性约束:是完整性规则的集合,它定义了给定数据模型中数据及其联系所具有的制约和依存规则。
结构化查询语言(Structured Query Language),即SQL语言,是一种应用于关系数据库查询的结构化语言,最早是由 Boyce 和 Chamberlin 在1974年提出的,成为 SEQUEL 语言。SQL是一种介于关系代数和关系演算之间的语言,具有丰富的查询功能,同时具有数据定义和数据控制功能,是集数据定义、数据查询和数据控制于一体的关系数据语言。SQL语言的功能包括数据查询、数据操纵、数据定义和数据控制4个部分。SQL语言简洁、方便、实用,为完成其核心功能只用了6个动词-----SELECT、CREATE、INSERT、UPDATE、DELETE和GRANT(REVOKE)。SQL语言还是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言作为数据输入与管理的接口。SQL语言语句可以嵌套,这是他具有极大的灵活性和强大的功能。
2. 数据库的体系结构
数据库三级模式结构
数据库系统的三级模式结构是指模式、外模式和内模式。下面分别进行介绍:
- 模式
- 外模式
- 内模式
三级模式之间的映射
- 外模式/模式映射
- 模式/内模式映射
数据库中只有一个模式和一个内模式,所以模式/内模式的映射是 唯一的,它定义了数据库的全局逻辑结构和存储结构之间的对应关系。当数据库的存储结构被改变时,数据库管理员对模式/内模式映射做相应的改变,可以使模式保持不变,应用程序相应德也不做变动。这样,保证了数据与程序的物理独立性。
3. E--R图
E--R图(Entity-Relationship Diagram)也称“实体--关系图”,用于描述显示世界的事物,以及事物与事物之间的关系。其中E表示实体,R表示关系。它提供了表示实体类型、属性和关系的方法。
实体和属性
在数据库领域中,客观世界中的万物都被称为实体。实体既可以是指客观存在并可相互区别的事物,例如高山、流水、学生、老师等,又可以是一些抽象的概念或地理名词,例如精神生活、物质基础、吉林省、北京市等。实体的特征(外在表现)称为属性,通过属性可以区分同类实体。例如,一本书可以具备下列属性:书名、大小、封面颜色、页数、出版社等,并且根据这些属性可以在一堆图书中找到所要的图书。
关系
在客观世界中,实体并不是孤立存在的,通常还存在一些联系。在E-R图中,可以使用关系表示实体间的联系。通常使用菱形表示实体间的联系,在菱形框内写明联系名,并且使用无向边将其与有关的实体连接起来。同时,还需要在无向边旁标上关系的类型。
在通常情况下,实体间存在以下3种联系:
- 一对一关系。一对一关系是指两个实体A和B,如果A中的每一个值在B中至多有一个实体值与其对应,反之亦然,那么称A和B为一对一关系。在E-R图中,使用(1:1)表示。
- 一对多关系。一对多关系是指两个实体A和B,如果A中的每一个值在B中有多个实体值与其对应,反之在B中每一个实体值在A中至多有一个实体值与其对应,那么称A和B为一对多关系。在E-R图中,使用(1:n)表示。
- 多对多关系。多对多关系是指两个实体A和B,如果A中的每一个值在B中有多个实体值与其对应,反之在B中每一个实体值在A中有多个实体值与其对应,那么称A和B为多对多关系。在E-R图中,使用(m:n)表示。
- 先设计局部的E-R图,再把每一个局部的E-R图综合起来,生成总体的E-R图。
- 属性应该存在于且只存在与某一个实体或者关系中。这样可以避免数据冗余。
- 实体是一个单独的个体,不能存在于另一个实体中。
- 同一个实体在同一个E-R图中智能出现一次。
4. 数据库设计步骤
在设计出E-R图后,就可以根据该E-R图生成对应的数据表,具体步骤如下:
- 为E-R图中的每一个实体创建一张对应的数据表;
- 为每张数据表定义主键(一般情况下,会将作为唯一标识的编号作为主键)或者外键;
- 创建新数据表表示多对多关系;
- 为字段选择合适的数据类型;
- 定义约束条件(可选)。
定义约束条件
在设计数据库时,还需要为数据表设置一些约束条件,从而保证数据的完整性。常用的约束条件有以下6种:
- 主键约束:用于约束唯一性和非空性,通过为表设置主键实现。一张数据表中只能有一个主键。在数据录入过程中主键字段必须唯一,并且不能为空。
- 外键约束:需要建立两张数据表间的关系,并且引用主表的字段。外键字段的数据要么是主键字段的某个值,要么为空。在建立关系时,主表和子表通过外键关联。
- 唯一性约束:用于约束唯一性,可以通过为表设置唯一性约束实现。满足唯一性约束的字段可以为空。
- 非空约束:用于约束表中的某个字段不能为空。
- 检查约束:用于检查字段的输入值是否满足指定的条件。如果输入的数据和指定的字段类型不匹配,那么该数据将不能被写入到数据库中。对于这个约束,一般的数据库管理系统都会自动检查。
- 默认值约束:用于为字段设置默认值。当输入数据时,如果该字段没有输入任何内容,那么会自动填入指定的默认值。