1.1 数据库基础
如果需要快速、安全地处理大量数据,则必须使用数据库管理系统。任何基于数据库编程的程序,其业务逻辑实质上都是对数据的处理操作。数据库管理系统也是一种软件,主要负责存储和管理网站所需的内容数据,例如文字、图片等。
1.1.1 数据库基本概念
1.数据库(DB)
数据库(DataBase,DB)是存放数据的仓库,按照数据结构来组织、存储和管理数据的仓库。
1.1.1
按照数据库类型划分,可以分为关系型数据库和非关系型数据库。
● 关系型数据库:以表的形式存储数据,表与表之间有很多复杂的关联关系。关系型数据库遵循结构化查询语言(Structured Query Language,SQL)标准和ACID原则。常见关系型数据库有MySQL、SQLServer、Oracle等。
● 非关系型数据库(Not Only SQL,NoSQL):是分布式、非关系型、不保证遵循ACID原则的数据存储系统。常见非关系数据库有Redis(键值对存储)、HBase(列存储)、MongoDB(文档型数据库)、InfoGrid(图数据库)。
2.数据库管理系统(DBMS)
数据库管理系统(DataBase Management System,DBMS)是一种操纵和管理数据库的软件,用于建立、使用和维护数据库;能够提供数据录入、修改、查询操作;具有数据定义、数据操作、数据存储与管理、数据维护、通信等功能,且能够允许多用户使用。
常用的数据库管理系统如下。
● Oracle:甲骨文公司的产品,是目前较流行的关系型数据库管理系统之一,主要面向大型企业。
● SQL Server:微软公司的关系型数据库管理系统,为中小型企业和单位提供服务,界面友好,易学易用。
● DB2:IBM公司开发的关系型数据库管理系统,也主要面向大中型企业。
● MySQL:由Oracle旗下的瑞典公司MySQL AB开发,是流行的关系型数据库管理系统。MySQL具有体积小、速度快、总体拥有成本低,源码开放的特点,中小型网站的开发一般都选择MySQL作为网站数据库。
● OceanBase:阿里数据库,是蚂蚁金服完全自主研发的金融级分布式关系数据库。
● PolarDB:阿里云数据库,是阿里巴巴自主研发的下一代关系型分布式云数据库,兼容MySQL、PostgreSQL、Oracle语法,存储容量最高可达100TB,单库可扩展至16个节点,适用于企业多样化的应用场景。
3.数据库系统(DBS)
数据库系统(DataBase System,DBS)包括数据库管理系统、数据库、应用系统和用户(DBA、应用程序员、终端用户)。数据库系统组成结构如图1-1所示。
图1-1 数据库系统组成结构
1.1.2 关系数据库介绍
关系数据库是一些相关的表和其他数据库对象的集合。
1.1.2
1.关系表
在关系数据库中,数据保存在二维表格中,称为表(Table)。一个关系型数据库包含多个数据表,每个表又包含行(记录、元组)、列(字段、属性)。
例如:学生个人信息包括学号、姓名、性别、出生日期,可以用二维表格显示学生信息,如图1-2所示。
图1-2 关系表
2.表之间的关系
表与表通过公共字段(键)建立关联,“键”分为主键和外键。主键保证表中数据的唯一性;外键关联另一张表中的数据,保证数据的完整性。表与表之间有以下三种类型的关系:一对一关系(1:1)、一对多关系(1:n)、多对多关系(m:n)。
(1)一对一关系(1:1)
A表中的一条记录在B表中仅有一条记录与之对应;反之,B表中的一条记录在A表中也仅有一条记录与之对应,如图1-3所示。
图1-3 一对一关系(1:1)
(2)一对多关系(1:n)
A表中的一条记录在B表中有多条记录与之对应;反之,B表中的一条记录在A表中仅有一条记录与之对应,如图1-4所示。
图1-4 一对多关系(1:n)
(3)多对多关系(m:n)
A表中的一条记录在B表中有多条记录与之对应;反之,B表中的一条记录在A表中也有多条记录与之对应,如图1-5所示。
图1-5 多对多关系(m:n)
如上,数据库设计时通过增加一张表将一个多对多的关系转化为两个一对多的关系。
3.其他数据库对象
关系数据库除了包含表,还包含其他数据库对象(索引、视图、存储过程、触发器、用户等),如图1-6所示。
图1-6 其他数据库对象
1.1.3 关系数据库设计
1.设计步骤
1)需求分析:根据需求制定任务目标,确定需要处理的数据对象及属性,确定对象关系。
2)概念结构设计:在需求分析基础上,获得实体关系模型,绘制E-R图。
3)数据库逻辑设计:依据E-R图,设计表格(确定表的列)。
4)数据库物理设计:创建数据库、创建表格及其他数据库对象。
5)数据库性能优化:改进读写性能。
1.1.3
2.需求分析
需求描述:设计一个学生选课数据库记录学生选课情况,以及课程结课后的学生成绩。
(1)制定任务目标
● 需要维护学生信息。
● 需要维护课程信息。
● 需要记录选课信息。
● 需要记录成绩。
(2)确定需要处理的数据对象
● 学生。
● 课程。
● 选课信息。
(3)确定对象的属性
● 学生:学生编号(主属性)、学号、姓名、性别、出生日期、班级。
● 课程:课程编号(主属性)、课程名称、学分。
● 选课信息:学生编号、课程编号、成绩。
(4)确定对象之间的关系
一个学生选修多门课,一门课被多个学生选修,学生和课程之间存在多对多的关系。
3.实体-关系模型(E-R图)
实体-关系模型(E-R图)是指从现实世界中抽象出实体类型和实体之间的联系,描述现实世界中实体对象之间的关系。
● 实体:是指要处理的数据对象,用矩形表示,矩形内部填写实体名(对象名称)。
● 属性:指对象的属性,用椭圆形表示,内部填写属性名,并用无向边与实体连接。
● 关系:指实体之间的关系,用菱形表示,内部填写关系名,并用无向边与实体连接,无向边上标注关系的类型(1:1、1:n、m:n)。
学生选课数据库E-R图如图1-7所示。
图1-7 学生选课数据库E-R图
说明:实体具有属性,关系也可以具有属性;加横线的属性为主属性;为了简洁,可以省略部分属性的标注。
4.表设计
表设计的原则如下。
● 一个表描述一种实体或者实体间的关系。
● 避免表之间出现重复字段。
● 字段应该是原始数据或者基本数据元素。
● 表中应该有主键来唯一标识表中的记录。
● 用外键保证表之间的关系。
学生选课数据库表设计如图1-8所示。
图1-8 学生选课数据库表设计