目录
一、数据库基础
1、什么是数据库
2、数据库的基本概念
2.1、数据库的发展
2.2、数据库管理系统
2.3、数据库系统
2.4、数据模型
2.5、关系数据模型结构
2.6、RDBMS常用专业术语
3、SQL语言简介:
3.1、SQL的分类
4、MySQL数据库
4.1、MySQL数据库的连接
4.2、MySQL命令的基本语法
4.3、MySQL常用命令
二、数据库基础设计
1.数据库设计的基本概念
2.需求设计
3.概念结构设计
3.1、实体
3.2、联系类型
3.3、E-R图中的主要构件(主要矩形,菱形和线段)
3.4.1、属性的分类:
4.逻辑结构设计:
4.1、规范化:
4.1.1、规范化理论
4.1.2、范式
5.数据库物理设计和运行维护
5.1、物理结构设计(做好数据库对数据库进行实现):
5.2、数据库的实施、运行与维护:
一、数据库基础
1、什么是数据库
所谓的数据库(Database),顾名思义,就是存储数据的仓库,严格来说是按照数据结构来组织、存储和管理数据的仓库。
2、数据库的基本概念
2.1、数据库的发展
数据管理技术的发展经历了以下四个阶段:人工管理阶段、文件系统阶段、数据库阶段和高级数据库技术阶段。
1.人工管理阶段:硬件设备简单,软件方面也没有操作系统。
2.文件系统阶段:数据以文件为单位存储在外存中,且由操作系统统—管理,数据仍然面向程序,数据与程序的依赖性强。
3.数据库系统阶段:采用数据模型表示复杂的数据结构,对数据进行统一管理和控制,数据和程序独立。
2.2、数据库管理系统
数据库管理系统(DBMS)是一种操纵和管理数据库的大型软件,它按一定的数据模型组织数据。
其集数据定义功能(定义数据库中的数据对象)、数据操作功能(现对数据的追加、删除、更新、查询等操作)、数据完整性、数据库安全保护功能、数据库的并发控制功能、数据库系统的故障恢复功能、在网络环境下访问数据库功能于一身,并提供方便有效的存储数据信息的接口和工具。
RDBMS:关系型数据库管理系统是SQL的基础,同样也是所有现代数据库系统的基础,比如 MS,SQL Server,IBM DB2,Oracle, MySQL以及Microsoft Access。
RDBMS 中的数据存储在被称为表(tables)的数据库对象中。表是相关的数据项的集合,它由列和行组成。
2.3、数据库系统
数据、数据库、数据库管理系统与操作数据库的应用程序,加上支撑它们硬件平台、软件平台和与数据库有关人员一起构成一个完整的数据库系统(DBS)。
数据库程序员:对数据的增加修改查询删除是基本功。
数据库系统管理员(DBA , Database Administrator)通过提供的工具对数据库进行管理,包括数据库设计,权限控制等。
2.4、数据模型
数据模型是数据库的系统模型,为数据库系统的信息表示与操作提供了一个抽象的框架,采用的数据模型主要有三种:层次模型、网状模型和关系模型。
层次数据模型(优点较多):以树形层次结构组织数据。其结构简单、清晰、明朗,容易看到各实体间的联系,查询效率高,数据修改和数据库扩展容易实现。但结构呆板,不灵活,节点间横向联系弱。
网状数据模型:用有向图表示实体之间的联系。方便表示现实世界中的复杂关系,结构没有严格限制,比较灵活。但是由于随着应用环境的扩大,数据结构会越来越复杂,不易使用。
关系数据模型(贴近现实,能很好描绘):使用关系表表示实体间的联系。非常贴近现实世界,容易理解,数据表间相对独立,互不影响,根据数据表之间的关联可进行多表操作。但是维护数据一致性和读写性能较差。
2.5、关系数据模型结构
关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。
关系型数据结构中,数据是用二维表格的形式来组织的。关系操作集合:增加、删除,修改,查询(增删改查)等。
三种约束完整性:实体完整性、参照完整性以及用户定义完整性。
①实体完整性:实体完整性是指实体的主属性不能取空值,例如区分每个人的身份证,区分学生的学号。(存入的数据应完好的反应现实情况)
②参照完整性:关系中不允许引用不存在的实,例如学生不能属于不存在的班级。
③用户自定义完整性:用户定义完整性是针对某一个具体关系的约束条件,不同的应用有着不同的具体要求,这些约束条件就是用户根据需要自己定义的。例如,性别取值范围为男、女。
2.6、RDBMS常用专业术语
数据库(database):存储数据表的集合。
数据表(table):存储数据内容,是类似于电子表格一样的二维表格。
字段(属性):包含了相同类型的数据,是数据表中的列(column)。
记录(元组):代表一组相关的数据,是数据表中的行(column)。
域(值域):属性的取值范围。
主键(primary key):主键是唯一的,用于唯一标识一个元组,一个数据表中只能包含一个主键。
外键(foreign key):外键用于关联两个表。
冗余:数据的重复存储,降低了性能,但是提高了数据的安全性。
复合键(组合键):将多个列作为一个索引键,一般用于复合索引。
查询:使用特定的条件来查找特定的数据。
3、SQL语言简介:
SQL:结构化查询语言 (Structured Query Language)
关系型数据库主要是⽤SQL语句进行操作,SQL使我们有能⼒访问数据库,其类似于操作系统命令。
SQL可以创建数据库、数据表、视图、索引和存储过程等多种数据库对象,以及面向数据库数据表中数据的增删查改等操作,还可以设置表、视图和存储过程的访问权限。
在SQL中,”双引号”和'单引号'都用于表示字符串,除了在字符串中的字符,其余SQL语句都不区分字母大小写(若区分大小写会引起混淆错误)。
“#”和“--”为单行注释,“/* */”为多行注释。
3.1、SQL的分类
① 数据定义语言DDL:⽤于创建各种数据库对象(表、视图、 索引等)
CREATE TABLE,CREATE VIEW,CREATE INDEX
② 数据操纵语言DML:用于对数据进行操作
插⼊:INSERT,更新:UPDATE,删除:DELETE
③ 数据查询语言DQL:用于查询数据
基本结构:SELECT 属性列表 FROM 表名 WHERE 条件
④ 数据控制语言DCL:数据库权限管理等
提交:COMMIT,回滚:ROLLBACK,授权:GRANT
4、MySQL数据库
MySQL数据库安装成功后,会默认带有以下几个数据库,分别存储数据库中的相关信息。
① formation_schema:信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏 的数据类型与访问权限等。
② mysql:负责存储数据库的⽤户、权限设置、关键字等。
③ performance_schema:收集数据库服务器性能参数。并且库⾥表的存储引擎均为PERFORMANCE_SCHEMA。
④ sys:系统库使用的基础环境。
⑤ test:测试数据库,和它的名字⼀样,是⼀个完全的空数据库,没有任何表,可以删除。
4.1、MySQL数据库的连接
启动mysql服务器,需要以管理员的权限打开cmd运行窗口
sc start mysql或者net start mysql# 关闭mysql服务sc stop mysql或者net stop mysql# 启动数据库 (-u是用户名 -p是密码)mysql -u root[用户名默认为root] -p [如果没有密码,可以不写]
4.2、MySQL命令的基本语法
MySQL命令的语法格式是多条语句执行出一个命令,每条命令用';'分号结束;
MySQL命令并不需要经过编译就能运行,它是通过MySQL服务器来解析一段命令,解析的命令会直接影响数据库内部的数据。
MySQL语句中用 # 或 - 作为单行注释
# 这是一条mysql的单行注释
-- 这是一条单行注释
多行注释跟c/c++语言一致,/* */
/* 这是一条多行注释
这是一条多行注释
这是一条多行注释 */
4.3、MySQL常用命令
① USE 数据库名; 切换数据库。② show databases; 列出数据库列表。③ show tables; 显⽰当前选择数据库的所有数据表。④ show columns from 数据表; 显⽰数据表的属性。⑤ desc 数据表; 查看表结构。⑥ quit;exit;\q; 三种方式退出MySQL。⑦ 设置新密码:update mysql.user set authentication_string = PASSWORD (‘密码’);⑧ flush privileges; 刷新权限(修改密码后记得刷新权限)。
二、数据库基础设计
1.数据库设计的基本概念
做好一个数据库,要先规划好要做什么,如何做,需要存储哪些数据,这些数据之间的关系是什么,需要满足用户的哪些要求等。
我们把这个数据库规划的过程规范化,就称为数据库设计。数据库设计包括以下几个部分:
①需求设计
②概念结构设计
③逻辑结构设计
④物理结构设计
⑤数据库的实施
⑥数据库的运行与维护
2.需求设计
需求设计又称为需求分析,主要是根据用户的要求,分析其功能的可行性与实现方法等。
一般是由项目经理负责的,采用从上到下、从简单到复杂、从整体到部分的方式进行分析,把整个系统分为几个模块,又把这几个模块又分为多个功能,分析这多个功能实现的可行性。
探明需求是整个数据库设计中比较重要的一部分。数据库设计人员采用一定的辅助工具对应用对象的功能、性能和限制等要求所进行科学分析,主要包括数据和处理两方面。
①数据:数据字典、系统的数据项、数据流和数据存储的描述。
②处理:数据流图和判定表、数据字典中处理过程的描述。
3.概念结构设计
概念结构设计是对信息分析和定义,如视图模型化、视图分析和汇总。对应用对象精确的抽象、概括而形成的独立计算机系统的企业信息模型。描述概念模型常用的工具就是E-R图。
概念结构设计就是从需求分析中找到实体和联系,画出E-R图。
3.1、实体
实体是现实世界中可以区别于其他对象的“事件”或“物体”。例如:学校中的每一个老师和学生都是一个实体。每个实体都有一组特性(属性)来表示,其中的某一部分属性可以唯一标识实体,如学生实体中的学号。实体集是具有相同属性实体的集合。如:学校的所有老师具有相同的属性,所有老师的集合可以定义为一个实体集;学生具有相同的属性,因此学生的集合可以定义为另一个实体集。
3.2、联系类型
实体的联系分为实体内部的联系和实体与实体之间的联系。实体内部的联系反映数据在同一记录内部各字段间的联系。这里主要讨论实体集之间的联系。
两个不同实体之间存在一对一、一对多和多对多的联系类型。
①一对一:指实体集1中的一个实体最多只能与实体集2中的一个实体相联系,记为1:1。(例:电影院的座位只能坐一个观众。)
②一对多:表示实体集1中的一个实体能与实体集2中的多个实体相联系,记为1:n。(例:一个学生属于一个班级,但是一个班级可以有多个学生。)
③多对多:表示实体集1中的多个实体能与实体集2中的多个实体相联系,记为m:n。(例:职工可以进行多个项目,多个项目可以有多个员工。)
3.3、E-R图中的主要构件(主要矩形,菱形和线段)
示例:(线段旁边标明关系)
3.4、属性
属性是实体某方面的特性。例如,学生实体集具有学号、姓名、性别、年龄、班级和家庭住址等属性。每个属性都有其取值范围,如学号为6位整数,姓名为10位的字符串,性别的取值范围为“男”或“女”等。在同一实体中,每个实体的属性和取值范围都是柏同的,但是可以取范围内不同的值。
3.4.1、属性的分类:
①简单属性和复合属性:简单属性是不可再细分的,复合属性是可以细分为更小的部分。有时用户希望访问整个属性,有时希望访问属性的某个成分,那么在模式设计时可采用复合属性。例如:学生实体集的家庭住址可以进一步分为省、市、县等。没有特别声明的情况下通常指的是简单属性。
②单值属性和多值属性:单值属性是指属性对于一个特定的实体都只有单独的一个值。例如:对于一个特定的学生,在系统中只对应一个学号、姓名,这样的属性叫做单值属性。在某些特定的情况下,一个属性可能对应一组值,如联系方式又可以分为固定电话、手机号码、QQ、微信等。
③NULL属性:俗称空属性,是指当实体的某个属性值未知或者没有值的时候,就使用NULL值,表示无意义或不知道。
④派生属性:是指与其他属性相关联的属性,可以从其他属性得到。例如:职工实体集中的“入职时间”和“工龄”属性,“工龄”的值可以由当前时间减去“入职时间”得到,“工龄”就是一个派生属性。
4.逻辑结构设计:
逻辑结构的目的是把概念设计阶段的概念模型(如基本的E-R图)转换成与选用的具体机器上的DBMS所支持的逻辑模型,它是物理设计的基础,包括模式初始设计、子模式设计、应用程序设计、模式评价以及模式求精。
逻辑设计可分为以下3个步骤:
①将概念模型(E-R图)转换成一般的关系、网状、层次模型;
②将关系、网状、层次模型向特定的DBMS支持下的数据模型转换。
③对数据模型进行优化。
在将概念结构转换成逻辑结构时需要遵循一定的规范,这就有涉及到规范化(重点)理论了。
4.1、规范化:
关系数据库设计的方法之一是设计满足适当范式的模式,通常可以通过判断分解后的模式达到几范式来评价模式规范化程度。通过分解,可以将一个低一级范式的关系模式转换成若干个高一级范式的模式关系,这个过程称为规范化。设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。
规范化主要解决:数据冗余、更新异常、插入异常、删除异常。
4.1.1、规范化理论
超键(例:用学号区分相同姓名的人,或者(学号+姓名)组合键也能区分)。
候选键:(例:只用学号或者身份证号区分人)。
主键:在候选键中任选一个,
外键:表示联系一个实体与另一个实体之间的关系。
4.1.2、范式
范式来自英文Normal form,简称NF。要想设计—个好的关系,必须使关系满足一定的约束条件,此约束已经形成了规范,分成几个等级,一级比一级要求得严格。满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。
关系型数据库有六种范式:
第一范式(1NF):若关系模式R的每一个分量是不可再分的数据项,属性值都是不可再分的原子值,则关系模式R属于第一范式。
例:
系名 | 教授人数 | 副教授人数 |
计算机 | 6 | 4 |
自动化 | 5 | 3 |
第二范式(2NF):若关系模式满足第一范式,且每一个非主属性完全依赖主键时,则关系式R是2NF(第二范式)。简而言之,第二范式就是在第一范式的基础上属性完全依赖于主键(完全由主键可以唯一区分)。
第三范式(3NF):若关系模式满足第二范式,即当2NF消除了非主属性对码的传递函数依赖,则称为3NF。也就是说非主属性之间不能相互依赖。
巴斯·科德范式(BCNF)、
第四范式(4NF):在满足第BC范式的条件下,表中不能包含一个实体的属性有两个或多个多值因子。(一个属性有多个值 的情况)
第五范式(5NF,又称完美范式):在满足第四范式的条件下,表必须分为较小的表,除非这些表在逻辑上拥有相同的主键。
满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般来说,数据库只需满足第三范式(3NF)或者BC范式就行了。(表格虽然优化范式越高,但是给查询带来了很大的影响)
5.数据库物理设计和运行维护
5.1、物理结构设计(做好数据库对数据库进行实现):
物理结构设计:是指逻辑模型在计算机中的具体实现方案。数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,对于一个给定的逻辑数据模式选取一个最适合应用环境的物理结构的过程,称为数据库的物理设计。通常对于关系数据库物理设计的主要内容包括为关系模式选择存取方法、设计关系、索引等数据库文件的物理结构。
物理结构设计将逻辑结构实施到具体环境中,其依赖于给定的DBMS和硬件系统,就是把之前的分析在硬件系统和数据库管理系统上具体的实现。
如果各阶段发现不能满足用户需求时,需要返回到前面适当的阶段,进行必要的修正。经过如此不断地精益求精,直到各种性能都能满足用户地需求为止。
5.2、数据库的实施、运行与维护:
在数据库正式投入使用之后,需要改善数据库性能,维护数据库的安全和完整性。数据库系统中可能存在隐藏的比较深的问题,在数据库的开发和测试时没有发现此问题,但是在后期的投入使用中,问题显现出来了,对于此类问题,就需要对数据库进行维护了。
数据库设计结束后进入数据库的实施与维护阶段,主要工作如下:
(1)数据库实现阶段的工作:建立实际数据库结构,试运行,装入数据。
(2)其他有关的设计工作:数据库的重新组织设计,故障恢复方案设计,安全性考虑,事务控制。
(3)运行于维护阶段的工作:数据库的日常维护(安全性、完整性控制、数据库的转储和恢复),性能的监督、分析与改进,扩充新功能,修改错误。