1.1 关系数据库基础
如果需要快速、安全地处理大量数据,就必须使用数据库管理系统。任何基于数据库编程的程序,其业务逻辑实质上都是对数据的处理操作。数据库管理系统也是一种软件,主要负责存储和管理网站所需的内容数据,例如文字、图片等。
1.1.1 数据库的基本概念
1)数据库(DB):存放数据的仓库。相互关联的数据集合。
2)数据库管理系统(DBMS):管理数据库的计算机软件。具体完成以下功能。
● 定义数据的存储结构。
● 存储和维护数据(增加/删除/修改/查询)。
● 维护数据库的安全性、完整性、可靠性。
3)数据库系统(DBS):数据库管理系统+数据库+应用程序+用户(DBA、应用程序员、终端用户),如图1-1所示。
图1-1 数据库系统DBS
1.1.2 数据管理的发展历史
1.人工管理阶段
20世纪50年代中期以前,计算机主要用于科学计算,无磁盘、无数据管理。
此阶段的特点是:数据不长期保存;系统中没有对数据进行管理的软件,由应用程序管理数据,数据是面向程序的,数据不具有独立性;数据不能共享。
2.文件管理阶段
20世纪50年代后期到60年代中期,计算机主要用于数据处理初期,产生外存——磁盘,操作系统对数据以文件形式管理。
此阶段的特点是:程序与数据有了一定的独立性,程序和数据分开存储,有了程序文件和数据文件的区别;数据文件可以长期保存;但数据冗余度大,缺乏数据独立性。
3.数据库系统阶段
20世纪60年代后期以来,计算机主要用于大量数据处理。
此阶段的特点是:数据库技术能有效地管理和存取大量的数据,避免了以上两阶段的缺点,实现数据共享,减少数据冗余;采用特定的数据模型;具有较高的数据独立性;有统一的数据管理和控制功能。
数据库系统又经历了三个阶段:层次数据库、网状数据库和关系数据库。关系数据库基于数学上严格的关系理论,使用简单,是目前最成熟的数据库。
常见的关系型数据库管理系统有下面几种。
● 桌面型关系数据库:FoxBase、Visual FoxPro、Access等。
● 大型关系数据库:Oracle、SQL Server、MySQL、DB2、Sybase ASE等。
1.1.3 关系数据库的介绍
关系数据库是一些相关的表和其他数据库对象的集合。其包含以下三层含义。
1)关系数据库中,保存数据的二维表格称为表(TABLE)。一个关系型数据库包含多个数据表,每个表又包含行(记录、元组)、列(字段、属性),如图1-2所示。
图1-2 表的结构
2)表与表之间相互关联。表与表通过公共字段建立关联,公共字段称为“键”。“键”分为主键和外键。
● 主键:唯一确定表中记录的列或者列组合。主键值必须唯一且不为空。例如,教师表的“教师编号”、部门表的“部门编号”。
● 外键:表中的列是另外一个表的主键,此列就是外键。例如,部门表的“部门编号”是主键,教师表的“部门编号”是外键,如图1-3所示。
图1-3 表与表的关系
表与表之间的关系分为以下三种类型。
● 一对一关系(1:1):A表中的一条记录在B表中仅有一条记录与之对应;反之,B表中的一条记录在A表中也仅有一条记录与之对应。例如,教师表与某月教师工资表之间具有一对一关系。
● 一对多关系(1:n):A表中的一条记录在B表中有多条记录与之对应;反之,B表中的一条记录在A表中仅有一条记录与之对应。例如,部门表A与教师表B之间具有一对多关系。
● 多对多关系(m:n):A表中的一条记录在B表中有多条记录与之对应;反之,B表中的一条记录在A表中也有多条记录与之对应。例如,学生表与课程表之间具有多对多关系。
数据库设计中通过增加一个表将一个多对多的关系转化为两个一对多的关系,例如学生表、课程表、成绩表,如图1-4所示。
图1-4 学生成绩关系图
3)关系数据库除了包含表,还包含其他数据库对象(索引、视图、存储过程、触发器、用户等)。
1.1.4 关系数据库的设计
1.设计步骤
1)需求分析:调研需求分析(信息需求、处理需求、安全性需求、完整性需求),确定需要处理的数据对象。
2)概念结构设计:在需求分析基础上,获得实体关系模型,绘制E-R图。
3)数据库逻辑设计:依据E-R图,设计表格(确定表的列)。
4)数据库物理设计:使用数据库命令具体实现逻辑设计确定好的表格和其他数据库对象。
5)数据库性能优化:改进读写性能。
2.实体-关系模型(E-R图)
1)实体:用矩形表示。矩形内部填写实体名。
2)属性:用椭圆形表示。内部填写属性名,并用无向边与实体连接。
3)关系:用菱形表示。内部填写关系名,并用无向边与实体连接,无向边上标注关系的类型(1:1、1:n、m:n)。
学生选课数据库E-R图如图1-5所示。
图1-5 学生选课数据库E-R图
说明:实体具有属性,关系也可以具有属性。为了简洁,可以省略部分属性的标注。
3.设计原则
1)一个表描述一种实体或者实体间的关系。
2)避免表之间出现重复字段。
3)字段应该是原始数据或者基本数据元素。
4)表中应该有主键来唯一标识表中的记录。
5)用外键保证表之间的关系。