数据库概论

一、数据库的发展过程

1、人工管理阶段(50年代中期以前)

背景:从硬件看:外存只有磁带、卡片、纸带,没有磁盘;从软件看:没有操作系统,没有管理数据的软件。
特点:数据不能保存;没有软件对数据进行管理的概念;只有程序的概念,没有文件的概念;一组数据对应一个程序,数据是面向程序的;重复数据多,数据冗余大。

2、文件系统阶段

背景:硬件:磁盘出现;软件:操作系统中有了专门的管理数据软件——文件系统。
特点:文件保存在磁盘上;可以对文件进行增伤该查;程序具有一定的独立性(数据不再属于某个特定的程序,可以重复使用);
数据冗余大;数据存在不一致性;程序和数据之间的独立性差;数据联系弱。

3、数据库系统阶段(60年代后)

程序——DBMS——数据库
数据库的层次模型、网状模型、关系模型
层次模型:
1.整个模型中有且仅有一个节点没有父节点,其余的节点必须有且仅有一个父节点,但是所有的节点都可以不存在子节点;
2. 所有的子节点不能脱离父节点而单独存在,也就是说如果要删除父节点,那么父节点下面的所有子节点都要同时删除,但是可以单独删除一些叶子节点;
3. 每个记录类型有且仅有一条从父节点通向自身的路径;
在这里插入图片描述
网状模型:

  1. 可以存在两个或者多个节点没有父节点;
  2. 允许单个节点存在多于一个父节点;

在这里插入图片描述
关系模型:

  1. 关系数据模型中,无论是是实体、还是实体之间的联系都是被映射成统一的关系—一张二维表,在关系模型中,操作的对象和结果都是一张二维表;
  2. 关系型数据库可用于表示实体之间的多对多的关系,只是此时要借助第三个关系—表,来实现多对多的关系,如下例子中的学生选课系统中学生和课程之间表现出一种多对多的关系,那么需要借助第三个表,也就是选课表将二者联系起来;
  3. 关系必须是规范化的关系,即每个属性是不可分割的实体,不允许表中表的存在;
  4. 存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作。
    在这里插入图片描述将该图映射为关系数据模型中的表格为下图
    在这里插入图片描述

二、数据库系统阶段的特点

1、相关概念:

数据:描述事物的符号记录。
数据库(Database):长期存储在计算机内,有组织、可共享的、相互关联的数据集合。
数据库管理系统(DBMS):管理数据库的系统软件。

2、数据库系统特点:

低冗余与数据共享:数据库中的数据可以共享,但是是可控制的、受约束的。
数据独立性:指数据的组织和存储方法与应用程序互不依赖、彼此独立的特性。
数据完整性:数据的正确性。

三、数据模型

数据库中不仅要存储数据本身,还要存储数据之间的联系,这种数据和联系是需要描述和定义的,数据模型正式完成此项任务的。

1、三类数据模型:

数据模型的概念:
是对现实世界数据特征的抽象。
数据模型的三个层次:
概念数据模型(DBMS无关):按用户的观点对数据和信息建模,不依赖DBMS
逻辑数据模型(DBMS相关):主要用于DBMS的实现,决定了数据库的结构。
物理数据模型(DBMS/OS相关):DBMS会自动转换为相关物理模型。

2、概念数据模型:

E-R方法
三要素:实体(集)、联系、属性
在这里插入图片描述矩形:实体集;椭圆形:属性;菱形:联系

3、数据独立性与三层结构

数据独立性可分为存储独立性(数据的物理独立性)和概念数据独立性(数据的逻辑独立性)
存储独立性 :不管存储文件的存储方法和存储结构怎么改变,用户都能继续正确执行。
概念数据独立性:概念文件结构发生改变时,用户程序不用修改,仍能正确执行的性质。
数据的独立性是通过三层结构获得的。

4、三层模式结构和DBMS

模式:数据库全体数据逻辑结构和特征描述
存储模式(内模式):定义存储数据库结构的模式。(真正物理存储数据)
概念模式(模式):定义概念数据库的模式。(是存储数据库的抽象)
外部模式(子模式,用户模式):定义外部数据库的模式。(外部数据库是概念数据库的部分抽取,一个概念数据库可以派生多个外部数据库)
子模式是概念模式的子集
概念数据库与存储数据库之间的映射提供了存储数据独立性
实例与模式
模式:数据库的总体结构,称作数据库的模式。一般很少发生变化。是“型”
实录:特定时刻存储在数据库中的信息的集合。是“值”
模式(概念模式)内模式(存储模式) 的映像决定了数据的 物理独立性
外模式模式 的映像决定了数据的逻辑独立性
每个数据库有:一个模式、一个内模式、多个外模式

5、数据库系统

包括 :数据库、DBMS、应用程序、数据库管理员、应用程序员、最终用户
数据库应用系统的体系结构:
C/S结构:Client/Sever结构,客户/服务器 结构 (手机APP访问数据库)
B/S结构:Browser/Sever结构,浏览器/服务器 结构 (网页访问数据库)

概念数据模型

如何将现实世界的客观事实抽象为计算机世界的数据?
如何描述数据之间的联系?

1、 实体-联系方法(E-R方法)

E-R方法使用的工具称作E-R图。
三要素:实体、属性、联系
两个实体集之间的基本联系:
一对一联系
一对多联系
多对多联系
班级与班长的E-R图
在这里插入图片描述

2、概念模型到关系模型的转换

一对一联系:
Class(cl_id,cl_name,cl_dept)——班级实体的属性
Monitor(m_id,M_name,m_tel) ——班长实体的属性
Monitor(m_id,M_name,m_tel,cl_id,M_date) ——联系
E-R图:
在这里插入图片描述一对多联系:
Company(c_id,c_name,adddr,tel,manager)——公司的属性
Employee(e_id,e_name,tel,gender,birth)——职员的属性
Employee(e_id,e_name,tel,gender,birth,c_id, e_date,salary)——联系
E-R图:
在这里插入图片描述多对多联系:
Student(s_id,s_name,gender,birth)——学生的属性
Course(c_id,c_name,credit)——课程的属性
S_C(s_id,c_id,grade)——选课联系
在这里插入图片描述

关系数据库基础

1、SQL server的用户数据库

用户数据存储在用户数据库中。
用来存储数据库数据的操作系统文件可以分为3类:
主数据文件、次数据文件、事物日志文件
在这里插入图片描述主文件:存储数据库的启动信息和系统表,也可以用来存储用户数据;
每个数据库有且仅有一个主文件
主文件使用.mdf扩展名
次文件:可以将一个数据库的数据分布在多个物理磁盘上;
每个数据库有0个或多个次文件
使用.ndf扩展名
日志文件:用来保存恢复数据库的日志信息。
每个数据库至少有一个事务文件
使用.ldf扩展名

2、关系数据模型

关系数据模型的三要素:
关系数据结构:实体以及实体之间的联系,用逻辑或用户角度看,就是二维表
关系操作集合:传统关系运算:并、交、差、笛卡尔积;专门的关系运算:选择、投影、连接、除
关系完整性约束:保证数据的正确性;分为三类:实体完整性、参照完整性、用户定义完整性。

3、关系形式的定义

笛卡尔积:
笛卡尔积的符号化为:

A×B={(x,y)|x∈A∧y∈B}

例如,A={a,b}, B={0,1,2},则

A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}

B×A={(0, a), (0, b), (1, a), (1, b), (2, a), (2, b)}
关系形式的定义:
笛卡尔积D1×D2×D3×…Dn的任意一个子集称为D1,D2,Dn上的一个n 元关系

4、关系的基本性质

每一分量必须是最小数据项,即每个属性值是不可分解的。
列的个数和每列的数据类型是固定的,即每一列中的分量是同类型的数据,来自同一个值域。
不同的列可以出自同一个值域,每一列成为一个属性,每个属性给予不同的属性名。
1、关系是属性值的集合
2、关系的每列是不同的属性
3、关系的每列可以出自相同的值域
4、关系的每列的数据类型是确定的
5、关系中的列行顺序可以交换

5、关系模型的数据结构和基本术语

在这里插入图片描述对于整个二维表来讲称作关系;
表结构称作关系模式
参照关系与被参照关系:
在关系数据库中,可以通过外码使两个关系关联,这种联系通常是一对多的,其中主关系称作被参照关系,从关系称作参照关系。
在这里插入图片描述
1、通常二维表指关系
2、二维表的列成为属性
3、把构成候选码的属性称为主属性

6、关系模型的完整性约束

1、实体完整性约束:
保证关系中的每个元组都是可识别唯一的。
具体来讲若属性A是关系R的主属性,则A不能为空值。
2、参照完整性约束
如果属性F是关系R的外码,且对应关系S中的主码K,那么要么F全为空,要么与S中某个元组的值对应
3、用户定义完整性约束
某个属性的值必须唯一
某个属性的取值必须在某个范围之内
某些属性值之间应该满足一定的函数关系
1、实体完整性的目的是为了保证关系中的每个元组是可识别唯一的
2、外码用于实现参照完整性,他的取值可以为空或等于被参照关系的主码值

完整性约束的作用就是拒绝错误的数据进入数据库或者由正确的数据变成错误的数据

7、关系代数

关系运算的对象与结果都是关系。
三要素:运算对象、运算符、运算结果
运算符:
在这里插入图片描述
1、元组的分量:
设R为关系,r∈R即r是元组,r.Ai或r[Ai]表示元组分量在这里插入图片描述2、元组的连串:
设R为m元关系,S为n元关系,且r∈R,s∈S,那么r+s成为元组的连串。为m+n元组。
3、元组中属性的映像集
在这里插入图片描述
集合运算:
1、并运算:
在这里插入图片描述
2、交运算:
在这里插入图片描述SQL语句:
USE AdventureWorks;
GO
SELECT ProductID
FROM Production.Product
INTERSECT
SELECT ProductID
FROM Production.WorkOrder ;
3、差运算:
在这里插入图片描述SQL语句:
USE AdventureWorks;
GO
SELECT ProductID
FROM Production.Product
EXCEPT
SELECT ProductID
FROM Production.WorkOrder ;
4、广义笛卡尔积:
在这里插入图片描述关系运算:
1、选择运算(σ):
从关系R中选择符合条件的元组构成心的元组。
σF®,表示从R中选择满足条件(使逻辑表达式F为真)的元组
σF®={t|t∈R∧ F(t)=true}
在这里插入图片描述2、投影运算(π):
从关系R中选择若干属性元组组成新的元组
πA1,A2,…,An®,表示从R中选择属性集A1,A2,…,An组成新的关系
πA1,A2,…,An®={t[A1,A2,…,An]|t∈R}
列的运算
投影运算的结果中要去除可能的重复元组
在这里插入图片描述
选择和投影运算合并使用(行列同时操作):
在这里插入图片描述3、条件连接(θ):
从R×S结果集中,选取在指定的属性集上满足θ条件的元组,组成新的关系;
连接运算用来连接相互之间有联系的两个关系,连接过程一般是由参照关系的的外码和被参照关系的主码来控制,这样的属性通常也成为连接属性
4、自然连接:
在这里插入图片描述
在这里插入图片描述
5、除运算(÷):
R(X,Y)是被除关系
S(Y)是除关系
除运算常用于表达至少…或全部…的查询
在这里插入图片描述
在这里插入图片描述
可以理解为:在X中选出S(Y)对应X的交集
选择是对行的操作,选择满足条件的元组
投影是对列的操作,选择某些属性

关系数据理论

一个关系模式R为一个五元组
R(U,D,dom,F)
R:关系名;
U:属性集;
D:属性集的值域
dom:属性到值域的映射
F:定义在属性U上的函数依赖集
数据依赖:
分为函数依赖与多值依赖;
是属性间的关联,是一种约束;
数据依赖是针对关系模式的,而不是特定实例(避免从个别元组中归纳约束)

1、基本概念
1、函数依赖:

假定给定属性X的值能确定Y的值,那么X决定Y,记作X—>Y;
平凡函数依赖:若X包含Y,则称该函数依赖是平凡函数依赖,如sno,sname → sname,可见平凡函数依赖是永恒的。
非平凡函数依赖:
相反,若X不包含Y…
完全函数依赖:
如果X→ Y ,并且对于X的任一真子集X’,都有X ’ 不—>Y,也就是说,仅有X全集才能决定Y。否则称为部分函数依赖
决定因素:X—>Y,称X为决定因素。
传递函数依赖:若X→Y,Y→Z,Y不包含于X,且X不依赖于Y,则称Z对X传递函数依赖。

2、码:

如果一个或多个属性的组合A1A2…An满足如下条件,则该组合为关系R的码:
1、这些属性函数决定该关系的所有属性
2、A1A2…An的任何真子集都不能函数决定R的所有属性
所以包含在任何一个码中的属性称为主属性

3、范式:

满足一定规范要求的关系模式称为范式
1NF→2NF→3NF→BCNF→4NF
1、第一范式(1NF)
如果R中的每一个属性都是不可再分的,即每一个属性都是原子的,那么该关系模式称作第一范式。
所以关系数据库要求每一个关系模式必须都是第一范式
2、第二范式(2NF)
在第一范式的基础上,每一个非主属性完全函数依赖于码,那么称该关系为第二范式。
举例:在这里插入图片描述
其中,sno,cno为码,而非主属性sname不完全函数依赖于码,所以不是第二范式。
例2:在这里插入图片描述
显然,(Sno,Cno)为码,而Sdept,Sloc都不完全函数依赖于码,所以不属于第二范式,那么对其进行模式分解:
在这里插入图片描述
此时,所有非主属性完全函数依赖于码。
3、第三范式(3NF)
在第二范式的基础上,每一个非主属性都不传递依赖于码,主属性可以依赖与码。
举例:
在这里插入图片描述
在这里插入图片描述
存在传递依赖,非主属性传递依赖于码,所以属于第二范式,而不属于第三范式。
4、BC范式(BCNF)
a、所有非主属性对每一个码都是完全函数依赖
b、所有主属性对每一个不包含它的码也是完全函数依赖
c、没有任何属性完全函数依赖于非码的任何一组属性
5、第4范式(4NF)
在了解第四范式之前,首先要理解多值依赖的概念,如果全集U=X+Y+Z,其中(X,Y)—>Z,但实际上,X—>Z,此时,X—>—>Z(Z多值依赖于X),若Y是空集,则称为平凡函数依赖,Y为非空集,则称为非平凡函数依赖。
对于关系模式R<U,F>,若R∈1NF,且所有非平凡函数依赖X—>—>Y,X都含有码,则为第四范式。
最小函数依赖集求法
在这里插入图片描述
第一步:将F中所有依赖右边化为单一元素:
F1={B->C,B->D,C->D,DE->C,CE->A,CE->B,E->C},
第二步:去掉左边的冗余依赖
DE->C,若去掉D,因为E->C,可以去掉。
若去掉E,因为E不依赖于D,所以不可去。最终E->C。
CE->A,若去掉C,因为E->C,所以可以去掉。
去掉E,则不行。最终E->A。
同理得到:
F2={B->C,B->D,E->C,E->A,E->B}
第三步:去掉多余依赖
因为E->B,B->C,所以可以去掉E->C。
所以最小函数依赖:
Fm={B->C,B->D,E->A,E->B}
码的求法
设有关系模式R(A,B,C,D),其函数依赖集F={D→B,B →D,AD →B,AC →D},求R的所有候选码。
第一步:将属性分为四类
L( 仅出现在依赖左边的属性):A,C
R(仅出现在依赖右边的属性):无
N(两边都没有出现的属性):无
LR(两边都出现的属性):B,D
第二步:令X=L∪N,Y=LR
X=AC,Y=BD;
第三步:求X+,若X+=U,则X为码,否则在Y中取一属性,求{X∪该属性}+,若=U,则为码,否则,在Y中依次取两个,三个,直到结束。
X+={A,C,D,B}
所以码为(A,C)

数据库设计概述

1、数据库设计的含义:
指对一个给定的应用环境 ,构造合适的数据库模式,建立数据库应用系统,使之能有效地存储数据,满足各种用户的需求。
2、数据库设计的特点:
三分技术,七分管理,十二分基础数据
结构(数据)设计与行为(处理)设计相结合
3、数据库应用系统开发的主要内容:
系统分析
系统设计
系统实现
系统测试并交付

4、数据库的设计方法
基于E-R模型的数据库设计方法
基于第三范式的数据库设计方法
面向对象、UML
5、数据库设计的基本步骤
a、需求分析
b、概念结构设计
c、逻辑结构设计
d、数据库物理结构设计
e、数据库实施
f、数据库运行和维护

在这里插入图片描述
A、需求分析:
对现实世界要处理的对象进行详细调查,了解原系统的概况,确定新系统的功能。
表达需求的方法:
用结构化的方法对处理过程进行描述:判定表,判定树,抽象图
形成需求说明文本,并采用数据流图表达数据和处理过程的关系
数据字典对系统中的各类数据进行描述。
数据字典:
数据字典是数据库中数据的描述,即元数据。包括:
1、数据项:数据的最小单位
2、数据结构:若干数据项或数据结构组成
3、数据流:数据结构在系统内存传输的路径
4、数据存储:数据结构存储的地方
5、处理过程:处理过程的处理逻辑通常用判定表或判定树描述

B、概念结构设计:
分E-R图集成的步骤:
第一步:合并,解决冲突问题,形成初步E-R图。
冲突包括:
属性冲突:属性值,取值范围的冲突
命名冲突:包括属性名,实体名,联系名之间的冲突
结构冲突:同一对象在不同应用中有不同抽象;在不同分E-R图中所包含的属性个数不同。
第二步:消除冗余,生成基本E-R图
包括冗余数据,冗余联系
C、逻辑结构设计
E-R图向关系模型转换:
1)将每一个实体集转换为一个关系模式,使其包含对应实体集的全部属性,并根据语义确定主码;
(2)联系的表达
1)两个实体集之间联系的表达
①1:1联系:
联系的属性及一方实体集的主码融入另一方实体集对应的关系模式中;
② 1:n 联系:
联系的属性及1端实体集的主码融入n端实体集对应的关系模式中,主码仍为n端的主码。在n端关系模式中,与1端主码对应的属性为外码;
③ m:n:
联系单独对应一关系模式, 由联系的属性、参与联系的各实体集的主码属性构成关系模式,主码应包含各实体集的主码属性。
2) 对于两个以上实体集之间的联系在关系模型中的表示可以参照两个实体集之间m:n联系的表达方式进行转换。

D、数据库物理设计
即设计数据库的内模式,选取合适应用的物理结构
E(F)、数据库的实施和维护
实施阶段:
数据的载入与应用程序的编码调试
运行维护阶段:
对数据库经常性的转储和恢复

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K_K_Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值