第一章-数据库基础知识

第一章 - 数据库基础知识

1.1 数据库概述

数据库技术是计算机科学的重要组成部分,也是信息管理的技术依托,主要用于研究如何向用户提供具有共享性、安全性和可靠性数据的方法。数据库技术解决了计算机信息处理过程中有效地组织和存储海量数据的问题。而大数据的发展更是将数据库技术的应用平台推上一个新的高度。数据库的建设规模、数据信息的存储量度和处理能力已成为衡量一个国家现代化程度的重要标志。

数据库技术包括数据库系统、SQL语言、数据库访问技术等。像MySQL、Oracle、SQL Server和DB2等都是目前常用的数据库管理系统软件。尤其是MySQL已经成为目前软件行业市场份额提高最快的数据库软件。

信息技术的发展极大地促进了数据库技术向各行各业的渗透,数据库与其他学科技术结合先后出现了各种形式的数据库系统分支。

1.1.1 数据与数据库

1、数据和信息

数据(Data) 是描述事物的符号记录,它有多种表现形式,可以是文本、图表、图形、图像、声音、语言、视频等。

信息(Information) 是具有特定意义的数据。信息不仅具有能够感知、存储、加工、传播和再生等自然属性,同时也是具有重要价值的社会资源。信息是用一定的规则或算法筛选的数据集合。

2、数据库

数据库(Database,DB) 是存储在计算机内、有组织、可共享的数据和数据对象(如表、视图、存储过程和触发器等)的集合。

数据库中的数据需要创建数据模型来描述,如网络、层次、关系模型。在数据库中的数据具有冗余度小、独立性高和易扩展性的特点。用户可以对其中的数据进行新增、删除、修改、查询等操作。

3、数据库管理系统

数据库管理系统(Database Management System,DBMS) 位于用户和操作系统之间,是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。像Oracle、SQL Server 和DB2都是常用的数据库管理系统软件。

DBMS提供了数据定义语言(DDL)、数据操作语言(DML)和应用程序。数据库管理系统是由多种不同的程序模块组成,基本数据库管理系统的系统架构包括4部分。

image

存储管理(Storage Manager) :数据库管理系统通常会自行配置磁盘空间,将数据存入存储装置的数据库。

查询处理(Query Processor) :负责处理用户下达的查询语言命令语句,可以再细分成多个模块负责检查语法、优化查询命令的处理程序。

事务管理(Transaction Manager) :负责处理数据库的事务,保障数据库商业事务的操作需要,及并发控制管理(Concurrency- Control Manager)资源锁定等。

恢复管理(Recovery Manager) :恢复管理主要是日志管理(Log Manager),负责记录数据库的所有操作,可以恢复数据库系统存储的数据到指定的时间点。

4、数据库系统

数据库系统(Data Base System,简称DBS) 通常由软件、数据库和数据管理员组成。其软件主要包括操作系统、各种语言、实用程序以及数据库管理系统。

数据库系统的组成

image

用户(Users) :用户执行DDL语言定义数据库架构,使用DML语言新增、删除、更新和查询数据库的数据,通过操作系统访问数据库的数据。第一类为系统分析员和数据库设计人员;第二类为应用程序员;第三类为最终用户;第四类用户是数据库管理员(data base administrator,DBA),负责数据库的总体信息控制。

数据(Data) :数据库系统中的数据种类包括永久性数据、索引数据、数据字典和事务日志等。

软件(Software) :指在数据库环境中使用的软件,包括数据库管理系统(DBMS)、应用程序和开发工具等。

硬件(Hardware) :安装数据库相关软件的硬件设备,包含主机(CPU、内存和网卡等)、磁盘阵列、光驱和备份装置等。

1.1.2 数据库发展历程

人工管理阶段 -> 文件系统阶段 -> 数据库管理

image

1、人工管理阶段

20世纪50年代中期以前,计算机主要用于科学计算,硬件方面只有卡片、纸带、磁带等,没有可以直接访问、直接存取的外部存储设备;软件方面也没有专门的管理数据的软件;数据由应用程序自行携带,数据与数据不能长期保存。

image

人工管理阶段的特点:

  • 数据不进行保存;
  • 没有专门的数据管理软件;
  • 数据面向应用;
  • 基本上没有文件的概念

2、文件系统阶段

20世纪50年代中期到60年代中后期,计算机大量应用用于数据处理,硬件出现了可以直接存取的磁盘、磁鼓,软件则出现了高级语言和操作系统,以及专门管理外存的数据管理软件,实现了按文件访问的管理技术。

image

文件系统阶段特点:

  • 程序与数据有了一定的独立性,程序与数据分开,文件系统提供数据与程序之间的存取方法;
  • 数据文件可以长时间保存在外存上,可以进行诸如查询、修改、插入、删除等操作;
  • 数据冗余量大,缺乏独立性,无法集中管理;
  • 文件之间缺乏联系,相互独立,不能反应显示世界各种食物之间错综复杂的联系。

3、数据库系统阶段

从20世纪60年代后期开始,根据实际需要发展了数据库技术。数据可是通用化的相关数据集合,它不仅包括数据本身,而且包括数据之间的联系。为了让多种应用程序并发地使用数据库中具有最小冗余的共享数据,必须使数据与程序具有较高的独立性,这就需要有一个软件系统对数据实行专门的管理,提供安全性和完整性等统一控制,方便用户以交互命令或程序方式对数据库进行操作。为数据库的建立、使用和维护而配置的软件称为数据库管理系统。

image

数据库系统阶段特点

  • 数据结构化数据共享性和独立性好;
  • 数据存储力度小;
  • 数据库管理系统对数据进行统一的管理和控制;
  • 为用户提供了友好的接口。

4、数据库系统的体系结构

数据库系统的体系结构主要包括如下几种结构: 集中式客户-服务器式浏览器-服务器式分布式 等。

集中式结构 :集中式系统是指运行在一台计算机上,不与其它计算机系统交互的数据库系统,例如运行在个人计算机上的单用户数据库系统和运行在大型主机上的高性能数据库系统。

C/S结构 :C/S结构的客户端系统主要包括图形用户界面工具、表格及报表生成和书写工具等;服务器系统负责数据的存取和控制,包括故障恢复和并发控制等。客户机通过网络将要求传递给服务器,服务器按照客户机的要求返回结果。

1.1.3 结构化查询语言SQL

SQL语言是用于管理数据的一种数据库查询和程序设计语言。其主要用于存取、查询和更新数据,还能够管理关系数据库系统的数据库对象。最早由Boyce和Chambedin在1974年提出,称为SEQUEL语言。1976年,IBM公司的San Jose研究所在研制关系数据库管理系统System R时修改为SEQUEL2,即目前的SQL语言。

1、SQL语言特点

一体化 :SQL集数据定义DDL、数据操纵DML和数据控制DCL于一体,可以完成数据库中的全部工作。

使用方式灵活 :它具有两种使用方式,即可以直接以命令方式交互使用;也可以嵌入使用,嵌入到C、C++、Fortran、COBOL和Java等主语言中使用。

非过程化 :只需要提供操作要求,不必描述操作步骤,也不需要导航。使用时只需要告诉计算机“做什么”,而不需要告诉它“怎么做”。

语言简洁,语法简单,好学好用 :在ANSI标准中,只包含了94个英文单词,核心功能只用6个动词,语法接近英语口语。

2、SQL查询语言的组成

数据定义语言(Data Definition Language,DDL) :其语句包括动词create、alter和drop。在数据库中创建、修改或删除数据库对象,如表、索引、视图、存储过程、触发器、事件等。

数据操作语言(Data Manipulation Language,DML) :包括动词select、insert、update和delete。它们分别用于查询、插入、修改和删除表中的数据行等。select是用得最多的动词,其他DQL常用的保留字有where、order by、group by和having。

数据控制语言(DCL) :包括grant语句和revoke等语句。通过grant语句获得权限许可,revoke可以撤销权限许可,确定单个用户和用户组对数据库对象的访问权限。

事务处理语言(TPL) : TPL语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括begin transaction、commit和rollback。

指针控制语言(CCL) : CCL语句,像declare cursor,fetch into和update where current用于对一个或多个表单独行的操作。

1.1.4 常见的关系型数据库管理系统

1、Oracle

  • Oracle公司的产品,世界上最好的数据库系统
  • “关系-对象”型数据库
  • 支持70多种操作系统,配置、管理和维护复杂
  • 主要满足对银行、金融、保险等企业、事业开发大型数据库需求

2、SQL Server

  • Microsoft公司的产品,针对不同用户群体的多个版本
  • 要求在Windows操作系统平台上运行
  • 易用性好

3、MySQL

  • 瑞典MySQLAB公司开发,被SUN公司收购,后Oracle收购Sun,
  • 现在MySQL并入了Oracle旗下。
  • 体积小、速度快、成本低、开放源码
  • 广泛地应用在Internet上的中小型网站中

4、Access

  • 微软公司推出的基于Windows的桌面关系数据库管理系统 ,Microsoft Office的成员之一
  • 优点 :存储方式单一 、面向对象 、界面友好、易操作 、集成环境、处理多种数据信息 、支持ODBC
  • 小型数据库,有局限性 :数据库过大 、网站访问频繁 、记录数过多性能会急剧下降


1.2 关系数据库设计

为什么需要设计数据库?

数据库设计就是将数据库中的数据对象以及这些数据对象之间关系进行规划和结构化的过程
  • 良好的数据库设计
节省数据的存储空间
能够保证数据的完整性
方便进行数据库应用系统的开发
  • 糟糕的数据库设计:
数据冗余、存储空间浪费
内存空间浪费
数据更新和插入的异常

概念模型:把现实世界转换为信息世界的模型,E-R模型

实施模型:把信息世界转化为数据世界使用的模型,关系模型

按关系模型组织的数据示例

image

关系模型中基本数据结构是二维数据表,且必须满足相应的要求:

(1)表说明的是关系模型中某一特定的方面或部分的对象及其属性
(2)表中的行通常叫做记录或元组,代表具有相同属性的对象中的一个
(3)表中的列通常叫做字段或属性,代表存储对象的共有的属性
(4)数据表之间的关联通过“键”来实现的,键分为主键和外键两种。
(5)表必须符合某些特定条件
	- 信息原则:每个单元只能存贮一条数据;
	- 列有唯一性的名称,贮存在列下的数据必须具有相同数据类型;列没有顺序;;
	- 每行数据是唯一的;行没有顺序;
	- 实体完整性原则,即主键不能为空;
	- 引用完整性原则,即外键不能为空;

1.2.1 概念模型及其表示方法

1、实体的概念

实体(Entity) :客观存在并可以相互区分的事物叫实体。例如,在学校里,一名学生、一名教师、一门课程等都称为实体。

属性(Attribute) :属性是实体所具有的某些特性,通过属性对实体进行描述。实体是由属性组成的。

主键(Primary Key) :一个实体中有一个属性或者多个属性构成的子集能够唯一标识整个属性集合,则称该属性子集为属性集合的主键。

实体型(Entity Type): 用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。例如,学生(学号,姓名,性别,出生日期,班级,入学成绩)就是一个实体型。

实体集(Entity Set) :同型实体的集合称为实体集。例如,全体学生就是一个实体集。

联系(Relationship) :现实世界的事物之间是有联系的。这些联系必然要在信息世界中加以反映。例如,教师实体与学生实体之间存在着教和学的联系。

2、实体之间的联系

一对一的联系(1∶1)。对于实体集A中的每一个实体,实体集B中至多有一个实体与之联系。

例:某学院有若干个系,每个系只有一个主任。则主任和系之间是一对一的关系。

主任和系的属性分别如下:
  主任——编号,姓名,年龄,学历;
  系——系编号,系名 
主任和系之间是一个管理关系

主任与系之间的一对一的联系
image

一对多联系(1∶M)。对于实体集A中的每1个实体,实体集B中有M个实体(M≥2)与之联系。

例: 在某仓库管理系统中,有两个实体集:仓库和商品。仓库用来存放商品,且规定一类商品只能存放在一个仓库中,一个仓库可以存放多件商品。

仓库和商品的属性分别如下:
 仓库——仓库号,地点,面积
 商品——商品号,商品名,价格      

在存放联系中要反映出存放商品的数量。 

仓库和商品之间一对多的联系

image

多对多联系(M∶N)。对于实体集A中的每一个实体,实体集B中有N个实体(N≥0)与之联系

假设在某教务管理系统中,一个教师可以上多门课,一门课也可以由多个老师去上。

教师和课程可用以下属性来描述:
   教师——教师号,教师名,职称
   课程——课程号,课程名,班级
   在“讲授”联系中应能反映出教师的授课质量

教师和课程之间的多对多联系

image

3、概念模型的表示方法

实体型表示建立概念模型的对象,用长方框表示,在框内写上实体名。

实体属性是实体的说明。用椭圆框表示实体的属性,并用无向边把实体与其属性连接起来。

实体间的联系是两个或两个以上实体类型之间的有名称的关联。实体间的联系用菱形框表示,菱形框内要有联系名,并用无向边把菱形框分别与有关实体相连接,在无向边的旁边标上联系的类型

实体关系图:简记E-R图,是指以实体、关系、属性三个基本概念概括数据的基本结构,从而描述静态数据结构的概念模式。

E-R图的组成要素及其画法

image

image

4、常用数据模型

数据模型的三要素

数据结构 :数据结构用于描述数据库系统的静态特性。数据结构所研究是数据本身的类型、内容和性质,以及数据之间的关系。
数据操作 :数据操作是对数据库中对象实例允许执行的操作集合,主要指检索和更新(插入、删除、修改)等操作
完整性约束条件 :数据完整性约束是一组完整性规则的集合,它规定数据库状态及状态变化所应满足的条件,以保证数据的正确性、有效性和相容性。

常用数据模型

层次模型 :层次数据库的数据结构类似一颗倒置的树,每个节点表示一个记录类型,记录之间的联系是一对多的联系,现实世界中很多事物是按层次组织起来的。

网状模型 :网状数据库是用来处理以记录类型为结点的网状数据模型的数据库。网状模型采用网状结构表示实体及其之间的联系。

关系模型 :关系数据库是目前流行的数据库。

面向对象模型(Object Oriented Model) :面向对象模型采用面向对象的方法来设计数据库。面向对象的数据库存储对象是以对象为单位,每个对象包含对象的属性和方法,具有类和继承等特点。Computer Associates的Jasmine就是面向对象模型的数据库系统。

5、关系运算

关系模型中的基本运算

选择 :从一个表中找出满足指定条件的记录行形成一个新表的操作称为选择。选择关系运算如图1-6所示。例如,在student关系中查询所有sex为“女”的学生。

投影 :投影是从列的角度进行的运算,通过对表中的字段进行选择或重组,得到新的表。投影关系运算如图1-7所示。例如,在student关系中查询所有学生的studentno和birthday。

连接 :连接是将两个表中的行按一定的条件横向结合,形成一个新的表。连接关系运算如图1-8所示。例如,查询学生的sname和final,2个数据项分来自student关系和score关系,需要在2个关系连接之后,再从中按照一定条件筛选出sname和final的数据。



1.3 数据库设计规范化

数据依赖是一个关系内部属性与属性之间的一种约束关系。这种约束关系是通过属性间值的相等与否体现出来的数据间相关联系,它是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。

在数据库设计时,有一些专门的规则,称为数据库的设计范式,遵守这些规则,才能确保数据的准确性和可靠性。这些准则称为规范化形式,即范式。

关系数据库范式理论是数据库设计的一种理论指南和基础。他不仅能够作为数据库设计优劣的判断依据,还可以预测数据库可以出现的问题。

范式按照规范化的级别分为五种。即第一范式(1NF),第二范式(2NF),第三范式(3NF),第四范式(4NF),第五范式(5NF)。在实际数据库设计中,通常需要用到的是前三类范式。

第一范式(1NF)

第一范式的目标是确保每列的原子性,如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)。

第一范式要求每一个数据项都不能拆分为两个或两个以上的数据项。数据库中的字段都是单一的属性。不可再分,这个单一属性由基本类型构成,包括整形、实数、字符型、逻辑型及日期型等。

image

上面的address字段可以是由国家与城市组成,可以将其拆分为country与city两个字段。

第二范式(2NF)

在第一范式的基础上,要求确保表中的每列都和主键相关,即每一个非主属性都要完全函数依赖于主键。

第二范式要求每个表只描述一件事情

image

第三范式(3NF)

是在第二范式的基础上,要求确保表中的每列都和键直接相关,而不是间接相关。如果一个关系满足2NF,并且除了主键以外的其他列都不相互依赖,则满足第三范式(3NF)。

image

关系的数据完整性

实体完整性 :实体完整性是指关系的主关键字不能取“空值”。在关系模式中,以主关键字作为唯一性标识,如果主关键字是多个属性的组合,那么所有主属性均不得取空值。

域完整性 :确保属性中只允许一个有效数据。在物理数据库中,可以利用表中的数据类型和行可空性强制执行域完整性。

参照完整性 :参照完整性是定义建立关系之间联系的主关键字与外部关键字引用的约束条件。关系数据库中通常包含多个存在相互联系的关系,关系与关系之间的联系是通过公共属性来实现的。

事务完整性 :事务可以确保每个逻辑单元的工作作为单个事务执行。

用户定义完整性 :用户定义完整性则是根据应用环境的要求和实际的需要,对某一具体应用所涉及的数据提出约束性条件。

posted @ 2023-10-01 14:28  WNAG_zw  阅读(57)  评论(0编辑  收藏  举报