wordpress编辑网站的链接是中文,济南建网站的网站,济南一哥网站建设,wordpress git1、数据库基础概念
数据库基本概念
数据(Data)数据库(Database)数据库管理系统(DBMS)数据库系统(DBS)
1.数据(Data) 是数据库中存储的基本对象#xff0c;是描述事物的符号记录。 数据的种类#xff1a;
文本、图形、图像、音频、视频等。
2.数据库(Database, DB) 数据库…1、数据库基础概念
数据库基本概念
数据(Data)数据库(Database)数据库管理系统(DBMS)数据库系统(DBS)
1.数据(Data) 是数据库中存储的基本对象是描述事物的符号记录。 数据的种类
文本、图形、图像、音频、视频等。
2.数据库(Database, DB) 数据库是统一管理的、长期储存在计算机内的有组织的相关数据的集合。 数据库的基本特征
数据按一定的数据模型组织、描述和储存数据间联系密切、冗余度较小数据独立性较高易扩展可为各种用户共享
3.数据库管理系统(DBMS) DBMS 是数据库系统的核心软件是由一组相互关联的数据集合和一组用以访问这些数据的软件组成。它是一种解决如何科学地组织和储存数据如何高效地获取和维护数据的系统软件。 主要功能包括
数据定义功能(DDL)数据操纵功能(DML)数据库的运行管理数据库的建立与维护
4.数据库系统(Database SystemDBS) 由数据库及其管理软件组成的系统。 数据库系统的构成
数据库硬件平台软件应用程序数据库管理员
数据模型 数据模型是数据特征的抽象它从抽象层次上描述了系统的静态特征、动态行为和约束条件为数据库系统的信息表示与操作提 供一个抽象的框架。数据模型的三要素
数据结构对象类型的集合是对系统静态特性的描述。数据操作对数据库中各种对象的实例(值)允许执行的操作集合包括操作及操作规则。如检索、插入、删除和修改操作规则有优先级等。数据的约束条件一组完整性规则的集合。对具体的应用数据必须遵循特定的语义约束条件。
常见的基本数据模型
层次模型网状模型关系模型面向对象数据模型(第三代数据库系统)
数据库管理系统 DBMS 功能主要包括数据定义数据库操作数据库运行管理数据组织、存储和管理数据库的建立和维护。
(1)数据定义 DBMS 提供数据定义语言 (DDL)可以对数据库的结构进行描述包括外模式、模式和内模式的定义数据库的完整性定义安全保密定义如口令、级别和存取权限等。这些定义存储在数据字典中是 DBMS运行的基本依据。
(2)数据库操作 DBMS 向用户提供数据操纵语言 (DML)实现对数据库中数据的基本操作如检索、插入、修改和删除。
(3)数据库运行管理。 数据库在运行期间多用户环境下的并发控制、安全性检查和存取控制、完整性检查和执行、运行日志的组织管理、事务管理和自动恢复等都是 DBMS 的重要组成部分。这些功能可以保证数据库系统的正常运行。
数据库三级模式 数据库系统可以分为
外模式(子模式、用户模式)模式(概念模式、逻辑模式)内模式(存储模式)
1.模式概念模式、逻辑模式 数据库中全体数据的逻辑结构和特征的描述 所有用户的公共数据视图综合了所有用户的需求 一个数据库只有一个模式 2.外模式子模式、用户模式 数据库用户包括应用程序员和最终用户使用的局部数据的逻辑结构和特征的描述 数据库用户的数据视图是与某一应用有关的数据的逻辑表示
外模式的地位介于模式与应用之间
模式与外模式的关系一对多 ✓ 外模式通常是模式的子集 ✓ 一个数据库可以有多个外模式。反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求
外模式的用途
保证数据库安全性的一个有力措施每个用户只能看见和访问所对应的外模式中的数据
(3)内模式存储模式
是数据物理结构和存储方式的描述是数据在数据库内部的表示方式一个数据库只有一个内模式
例: 采用三级模式结构的数据库系统中如果对一个表创建聚簇索 引那么改变的是数据库的( )。 A.外模式 B.模式 C.内模式 D.用户模式
答案 C
解析 在一个三级模式结构的数据库系统中数据库的结构被分为三个层次外模式外部模式、模式概念模式和内模式物理模式。 外模式是用户对数据库的可见部分它定义了用户可以看到和操作的数据的逻辑结构和访问路径。 模式定义了数据库的全局逻辑结构和组织方式它定义了数据库中的表、属性、关系等概念并描述了它们之间的关系。 内模式定义了数据库在存储介质上的物理结构和存储方式它描述了数据在磁盘上的存储细节如数据的排列方式、索引结构等。 当对一个表创建聚簇索引时改变的是数据库的内部物理存储结构即内模式。
三个级别 与三级模式相对应数据库系统可以划分为三个抽象级
1.用户级数据库最高层抽象对应于外模式是用户看到和使用的数据库又称用户视图。一个数据库可有多个不同的用户视图。2.概念级数据库对应于概念模式是所有用户视图的最小并集一个数据库应用系统只有一个DBA视图。3.物理级数据库对应于内模式是数据库的低层表示它描述数据的实际存储组织是最接近于物理存储的又称为内部视图。
两级独立性
1.物理独立性 指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。当数据的物理存储改变了应用程序不用改变。2.逻辑独立性 指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了用户程序也可以不变。 独立性是由DBMS的二级映像功能来保证的
2、关系型数据库 (很重要 要掌握 ☆☆☆☆☆)
关系数据库的基本概念 1.关系的基本术语
(1)属性(Atribute) 描述一个事物常常取若干特征来表示。这些特征称为属性。(2)域(Domain) 每个属性的取值范围对应一个值的集合称为该属性的域。所有的域都应是原子数据。(3)目或度(Degree) 指一个关系中属性的个数。(4)候选码(Candidate Key) 若关系中的某一属性或属性组的值能唯一的标识一个元组叫称该 属性或属性组为候选码。(5)主码(Primary Key) 或称主键若一个关系有多个候选码则选定其中一个作为主码。(6)主属性(PrimeAttribute) 包含在任何候选码中的属性称为主属性。不包含在任何候选码中 的属性称为非主属性。(7)外码 (Foreign Key) 如果关系中的一个属性是另外一个关系中的主码则这个属性为 外码也叫外键。(8)全码(All-key) 关系模型的所有属性组是这个关系模式的候选码称为全码。
2.关系数据库模式 关系的描述称为关系模式关系模式是一个五元组形式化地表示为 R (U, D, DOM, F) R 关系名 U 组成该关系的属性名集合 D 属性组U中属性所来自的域 DOM 属性向域的映象集合 F 属性间的数据依赖关系集合 通常简记为R(A1, A2, … , An)。 R为关系名 A1, A2…为属性名。
3.完整性约束
(1)实体完整性(2)参照完整性(3)用户自定义完整性
(1)实体完整性(Entity integrity) 是指关系的主关键字不能重复也不能取空值。如主关键字是多个属性的组合则所有主属性均不得取空值。
(2)参照完整性(Referential integrity) 是指建立关系之间联系的主键与外键引用的约束条件。就是不允许引用不存在的实体。
(3)用户定义完整性(user defined integrity) 则是根据应用环境的要求和实际的需要对某一具体应用所涉及的数据提出约束性条件。
常用的关系操作 这个会考选择题 一定要掌握 ☆☆☆☆☆
查询选择、投影、连接、除、并、交、差数据更新插入、删除、修改
查询的表达能力是其中最主要的部分
传统的集合运算是二目运算包括并、交、差、广义笛卡儿积专门的关系运算包括选择、投影、连接、除4种运算。
1、 并 关系R和S具有相同的目n(两个关系都有n个属性)R和S的并是由属于R或属于S的元组组成的集合记为RUS。 形式定义如下 式中t是元组变量。 RUS SUR 2. 差 关系R和S具有相同的目nR和S的差是由属于R 但不属于S的元组组成的集合记为R-S。 形式定义如下
式中t是元组变量。
3. 交 关系R和S具有相同的目nR和S的交是由既属于R 又属于S的元组组成的集合记为R ∩ S。 形式定义如下 式中t是元组变量。 R∩S R – (R-S或者 R∩S S – (S-R 4. 笛卡儿积 R: n目关系k1个元组 S: m目关系k2个元组 R×S 列(nm) 列元组的集合
元组的前n列是关系R的一个元组后m列是关系S的一个元组 行k1×k2 行元组
式中t是元组变量。
关系运算 关系数据库还有一些专门的运算主要有投影、选择、连接、除法和外连接。
在关系代数中由五种基本代数操作经过有限次复合的式子称为关系代数运算表达式。 表达式的运算结果仍是一个关系。 1. 投影 投影操作从关系R中选择出若干属性列组成新的关系该操作对关系进行垂直分割消去某些列并重新安排列的顺序再删去 重复元组。记作 形式定义 式中t是元组变量。 其中A为R的属性列
注意 投影之后不仅取消了原关系中的某些列而且还可能取消某些元组避免重复行。 例 查询学生的姓名和所在系即求Student关系上学生姓名和所在系两个属性上的投影。 注意 其中A 可以是属性名称 也可以是属性列下标 且下标从1开始
2. 选择 选择操作在关系R中选择满足给定条件的所有元组记作 其形式定义 式中t是元组变量。 其中F表示选择条件是一个逻辑表达式逻辑运算符算术表达式。选择运算是从行的角度进行的运算。 例 查询信息系IS系全体学生。
3. 连接 连接分为θ连接、等值连接及自然连接 3 种。 连接运算是指从两个关系R和S的笛卡儿积中选取属性间满足一定条件的元组。
记作 A和B分别为R和S上度数相等且可比的属性组 θ比较运算符
(1) θ连接 θ连接是从R与S的笛卡尔积中选取属性满足一定条件的元组。 其形式定义如下 例 关系R和关系S 如下所示一般连接 的结果如下
(2) 等值连接equijoin θ为时的连接运算称为等值连接。 等值连接的含义是指从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组即等值连接为
例 关系R和关系S 如下所示等值连接 的结果如下
(3) 自然连接Natural join 自然连接是一种特殊的等值连接
两个关系中进行比较的分量必须是相同的属性组在结果中把重复的属性列去掉 自然连接的含义 R和S具有相同的属性组B 例 关系R和关系S 如下所示自然连接的结果如下
例: 给定关系R(A, B, C, D)和S(A, C, E, F)以下( )与 等价。
答案 B
解析: 题目中 是关系R和关系S的自然连接 其中R(A, B, C, D)和S(A, C, E, F) 有相同属性列 A 、 C 并且在 R和S 自然连接后 选择 R的B列的值 大于S的E列的值 的过程 其中R的B列 可以用下标2表示 S的E列可以用下标 7表示 如果是带 单引号的 ‘7’ 表示字符串7 而不是第7列
选项A中 RXS 只是R和S的笛卡尔积 并没有选择 R和S中 进行比较的分量必须是相同的属性组在结果中把重复的属性列去掉 所以A错误
选项B 先把R和S求笛卡尔积 然后 选择 相同的属性组 并且 符合题目中 R.B S.E的选择条件 最后使用投影 在结果中把重复的属性列去掉 所以B选项正确
C选项和A选项类似的错误 并且比较的是字符串 ‘7’ 错误
D选项和B选项类似 但是比较的是字符串 ‘7’ 错误
4. 外连接OUTER JOIN 关系R、S 进行自然连接时如果把舍弃的元组也保存在结果关系中而在其他属性上填空值(Null)这种连接就叫做外连接。 5. 左外连接 关系R、S 进行自然连接时如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFT OUTER JOIN或LEFT JOIN) 6. 右外连接 关系R、S 进行自然连接时如果只把右边关系S中要舍弃的元组保留就叫做右外连接(RIGHT OUTER JOIN或RIGHT JOIN)
7. 除法 给定关系R (XY) 和S (YZ)其中XYZ为属性组。 R中的Y与S中的Y可以有不同的属性名但必须出自相同的域集。
R与S的除运算得到一个新的关系P(X)P是R中满足下列条件的元组在 X 属性列上的投影元组在X上分量值x的象集Yx包含S在Y上投影的集合记作
例 设关系R、S分别为下图的(a)和(b)R÷S的结果为下图 c 在关系R中A可以取四个值{a1a2a3a4}
a1的象集为 {(b1c2)(b2c3)(b2c1)}a2的象集为 {(b3c7)(b2c3)}a3的象集为 {(b4c6)}a4的象集为 {(b6c6)}
S在(BC)上的投影为{(b1c2)(b2c1)(b2c3) } 只有a1的象集包含了S在(BC)属性组上的投影。
所以 R÷S {a1}
函数依赖 定义 设R(U) 是属性集 U上的关系模式X、Y是U的子集。若对R(U) 的任何一个可能的关系rr中不可能存在两个元组在X上的属性值相等而在Y上的属性值不等则称X函数决定Y或Y函数依赖于 X记作X→Y。
如学号→姓名 学号决定姓名 或姓名依赖于学号。
函数依赖中还可细分为多种函数依赖
部分函数依赖完全函数依赖传递函数依赖
1.部分函数依赖 设R(U)是属性集U上的关系X、Y是U的子集X’ 是X的真子集若X→Y 且 X’→Y则称Y部分依赖X记作X→Y。
如 (学号年龄)→学生姓名 学号→姓名 学生姓名依赖于主键–学号因此学生姓名部分函数依赖于(学号年龄)。 显然当且仅当X为复合属性组时才有可能出现部分函数依赖。
2.完全函数依赖 设R(U)是属性集U上的关系X、Y是U的子集X’是X的真子集。 若对于R(U)的任何一个可能的关系有X→Y且X’ !→Y则称Y完全函数依赖于X记作X→Y。 所谓完全依赖是指在依赖关系的决定项即依赖关系的左项中没有多余属性有多余属性就是部分依赖。
学号姓名课程号课程名称成绩 学号课程号→成绩 成绩既不能单独依赖于学号也不能单独依赖于课程号因此成绩完全函数依赖于关键字(学号, 课程号)。
3.传递函数依赖 在关系模式R(U)中设XYZ是U的不同的属性子集如果X确定Y、Y确定Z且有X不包含YY不确定XX∪Y∩Z空集合则称Z传递函数依赖于X。
传递函数依赖会导致数据冗余和异常。传递函数依赖的Y和Z子集往往同属于某一个事物因此可将其合并放到一个表中。
例学号确定宿舍、宿舍确定费用且有 学号不包含宿舍宿舍不确定学号符合传递函数依赖条件。
规范化理论 设有一个关系模式R(SNAME , CNAME , TNAME , TADDRESS)其属性分别表示学生姓名、课程名、任课教师姓名和任课教师地址。
学生姓名课程名教师名教师办公室秀逗信号与系统老张301四眼嵌入式系统老六302大黄操作系统老张301豆豆计算机网络老六302
这个模式存在下列存储异常的问题。
(1)数据冗余(2)修改异常(3)插入异常(4)删除异常
把R分解成下列三个关系模式R1(SNAME, CNAME)和R2(CNAME,TNAME) , R3(TNAME, TADDRESS)则能消除上述的存储异常现象。
模式设计强调“每个联系单独表达”是一条重要的设计原则
学生姓名课程名秀逗信号与系统四眼嵌入式系统大黄操作系统豆豆计算机网络
课程名教师名信号与系统老张嵌入式系统老六操作系统老张计算机网络老六
教师名教师办公室老张301老六302老张301老六302
范式
1. 第一范式(1NF) 如果关系模式R的每个关系r的属性值都是不可分的原子值那么称R是第一范式的模式r是规范化的关系。
说明在任何一个关系数据库中第一范式是对关系模式的基本要求不满足第一范式1NF的数据库就不是关系数据库。
例如 | 学生姓名 | 课程名 |
2. 第二范式(2NF) 若关系模式R是1NF且每个非主属性完全函数依赖于候选键那么称R是2NF模式。
简单的说是表中的属性必须完全依赖于全部主键而不是部分主键。所以只有一个主键的表如果符合第一范式那一定是第二 范式。 例如员工信息表中加上了员工号列因为每个员工的员工编号是惟一的因此每个员工可以被唯一区分。
3. 第三范式(3NF) 如果关系模式R是1NF且每个非主属性都不传递依赖于R的候选码则称R是3NF。
例如存在一个部门信息表其中每个部门有部门号、部门名称、部门简介等信息。那么在员工信息表中列出部门号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。 如果不存在部门信息表则根据第三范式3NF也应该构建它否则就会有大量的数据冗余。
4.BC范式(BCNF) 若关系模式R是1NF且每个属性都不传递依赖于R的候选键那么称R是BCNF模式。 相对于第三范式BC范式的要求更加严格。第三范式只是要求R为第二范式且非主属性不传递依赖于R的候选键而BC范式则是对R的每个属性都做要求。 在关系模式STJSTJ中S表示学生T表示教师J表示课程。 一个教师只教一门课。每门课由一名教师教某一学生选定某门课就确定了一个固定的教师。某个学生选修某个教师的课就确定了所选课的名称 (SJ)→T(ST)→JT→J
例 给定关系模式R(U,F)其中属性集 U{A1, A2, A3, A4, A5,A6} 函数依赖集F{A1→A2, A1→A3, A3→A4, A1A5→A6}。关系模式 R 的候选码为( )由于R存在非主属性对码的部分函数依赖所以R属于( ) A. A1A3 B.A1A4 C.A1 A5 D.A1A6 A.1NF B.2NF C.3NF D.BCNF
答案C 、A
解析 候选码 若关系中的某一属性或属性组的值能唯一的标识一个元组叫称该属性或属性组为候选码 这种题目的技巧 很简单 根据选项去计算闭包 不用理解闭包的概念 记住计算规则就行
A选项 A1A3 先看函数依赖集F{A1→A2, A1→A3, A3→A4, A1A5→A6} A1能推出A2 就把A2写上去 得到 A1A2A3 A3能推出A4 得到 A1A2A3A4 , 只能推到这了 由于只能推出A1A2A3A4 而不是全部的属性集 U{A1, A2, A3, A4, A5,A6} 所以候选码不是 A1A3
B选项 A1A4 、 A1→A2 、A1A2A4、 A1→A3、 A1A2A3A4 只能推到这了 排除B选项
C选项 A1 A5 、 A1→A2 、 A1 A2A5 A1→A3 A1 A2A3A5 A3→A4, A1A2A3A4A5 , A1A5→A6 A1A2A3A4A5A6 能推出全部的属性集 U{A1, A2, A3, A4, A5,A6} 所以C正确
R存在非主属性对码的部分函数依赖 由于是部分函数依赖 所以 R属于 1NF
3、数据库设计
数据库设计的基本步骤(阶段)
需求分析概念结构设计逻辑结构设计物理结构设计数据库实施数据库运行和维护
需求分析 数据需求分析是在项目确定之后用户和设计人员对数据库应用系统所要涉及的内容(数据)和功能(行为)的整理和描述是以用户的角度来认识系统。这一过程是后续开发的基础因为逻辑设计、物理设计以及应用程序的设计都会以此为依据是最困难、最耗费时间的一步。
概念结构设计 概念结构设计的目标是产生反映系统信息需求的数据库概念结构即概念模式。概念结构是独立于支持数据库的 DBMS 和使用的硬件环境的。设计人员从用户的角度看待数据以及数据处理的要求和约束产生一个反映用户观点的概念模式然后再把概念模式转换为逻辑模式。 我们采用E-R模型将现实世界的信息加以抽象由实体属性以及实体之间的联系(E-R 图)来描述。
E-R模型 (ER图)
实体用矩形框表示框内标注实体名称。属性用椭圆形表示并用连线与实体连接起来。实体之间的联系用菱形框表示框内标注联系名称并用连线将菱形框与有关实体相连在连线上注明联系类型。
联系的类型 E-R图中的联系归结为三种类型
一对一联系(11)一对多联系(1n)多对多联系(mn) 用E-R方法建立概念模型 (1) 选择局部应用 (2) 逐一设计分E-R图 (3) E-R图合并
选择局部应用 数据流图是对业务处理过程从高层到底层的一级级抽象高层抽象流图一般反映系统的概貌对数据的引用较为笼统而底层又可能过于细致不能体现数据的关联关系因此要选择适当层次的数据流图让这一层的每一部分对应一个局部应用实现某一项功能。从这一层入手就能很好地设计分 E-R 图
逐一设计分E-R图 对于每一局部应用其所用到的数据都已经收集在数据字典中了依照该局部应用的数据流图从数据字典中提取出数据使用抽象机制确定局部应用中的实体、实体的属性、实体标识符及实体间的联系和其类型就设计出了分E-R图。
E-R图合并 合并E-R图的目的在于在合并过程中解决分 E-R 图中存在的冲突消除分 E-R 图之间存在的信息冗余使之成为能够被全系统所有用户共同理解和接受的统一的、精炼的全局概念模型。 合并的方法 将具有相同实体的两个或多个 E-R 图合二为一在合成后的 E-R图中把相同实体用一个实体表示合成后的实体的属性是所有分E-R 图中该实体的属性的并集。
E-R图合并时的冲突
属性冲突 属性的类型、取值范围、数据单位的不一致。命名冲突相同意义的属性在不同的分 E-R 图上有着不同的命名(异名同义)或是名称相同的属性在不同的分 E-R 图中代表着不同的意义(同名异义)。结构冲突 同一实体在不同的分 E-R 图中有不同的属性同一对象在某一分 E-R 图中被抽象为实体而在另一分 E-R 图中被抽象为属性。
例: 在数据库设计的需求分析、概念结构设计、逻辑结构设计和物理结构设计的四个阶段中基本E-R图是( )。
A.需求分析阶段形成的文档并作为概念结构设计阶段的设计依据 B.逻辑结构设计阶段形成的文档并作为概念结构设计阶段的设计依据 C.概念结构设计阶段形成的文档并作为逻辑结构设计阶段的设计依据 D.概念结构设计阶段形成的文档并作为物理设计阶段的设计依据
答案 C
解析 记忆即可 E-R图是逻辑结构设计阶段形成的文档并作为概念结构设计阶段的设计依据 逻辑结构设计 逻辑结构设计就是在概念结构设计的基础上进行数据模型设计可以是层次模型、网状模型和关系模型。 逻辑结构设计的步骤
1.确定数据模型2.将 E-R 图转换成为指定的数据模型3.确定完整性约束4.确定用户视图
E-R图转换为关系模型 E-R图是由实体、属性和联系三要素构成而关系模型中只有唯一的结构–关系模式。 采用以下方法加以转换 (1)实体向关系模式的转换 (2)联系向关系模式的转换
(1)实体向关系模式的转换
每个实体类型转换成一个关系模式实体属性即为关系模式的属性实体标识符即为关系模式的键 注意: 得到的关系模式有些可能会扩充属性。
(2)联系向关系模式的转换
11 联系1n 联系mn 联系
11 联系 11联系联系两端的实体类型转成两个关系模式在任一个关系模式中加入另一个关系模式的键(作为外键)和联系的属性. 例
学校(校名地址电话)校长(姓名性别年龄职称所在学校任职年月) 或学校(校名地址电话校长姓名任职年月)校长(姓名性别年龄职称)
1n 联系 1n 联系在N端实体类型转换成的关系模式中加入1端实体类型的键(作为外键)和联系的属性。
例
系(系号系名电话)教师(工号姓名性别年龄所有系号聘期)
mn 联系 mn 联系联系类型需转换为关系模式属性为两端实体类型的键(分别作为外键)加上联系的属性而键为两端实体键的组合。 例
学生(学号姓名年龄性别)课程(课程号课程名教师名)选课(学号课程号成绩)
关系模式的规范化 由E-R图转换得来的初始关系模式并不完全符合要求还会有数据冗余或更新异常存在需要经过进一步的规范化处理。 步骤如下 ①根据语义确定各关系模式的数据依赖。 ②根据数据依赖确定关系模式的范式。 ③如果关系模式不符合要求要根据关系模式的分解算法对其进行分解达到3NF、BCNF或4NF。 ④关系模式的评价及修正。
确定完整性约束 根据规范化理论确定了关系模式之后还要对关系模式加以约束包括数据项的约束、表级约束及表间约束。可以参照SQL标准来确定不同的约束如检查约束、主码约束以及参照完整性约束以保证数据的正确性。
用户视图的确定 根据数据流图及用户信息建立视图模式提高数据的安全性和独立性。
根据数据流图确定处理过程使用的视图根据用户类别确定不同用户使用的视图
反规范化 反规范化是加速读操作性能(数据检素)的方法通过有选择地在数据结构标准化后添加特定的冗余数据来增加查询效率。常见的反规范化操作有冗余列、派生列、表重组和表分割其中表分割又分为水平分割和垂直分割。反规范化会带来冗余数据不一致问题常采用数据同步的方法来解决。 方法有应用程序同步、批量处理同步和触发器同步等。
物理结构设计 物理结构设计就是为逻辑数据模型选取一个最适合应用环境的物理结构包括存储结构和存取方法。 物理结构设计的主要工作步骤
确定数据分布存储结构访问方式
数据库实施 运用DBMS提供的数据库语言(如SQL)及宿主语言根据逻辑设计和物理设计的结果在计算机上建立起实际的数据库结构数据加载(装入)进行试运行和评价的过程叫数据库的实施(实现)。 包括以下三个步骤
建立数据库结构数据加载(组织数据入库)试运行和评价
数据库运行维护 数据库维护工作的主要内容
数据库性能的监测和改善数据库备份及故障恢复数据库重组和重构
数据库备份及故障恢复 数据备份是指为防止系统出现操作失误或系统故障导致数据丢失而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程。 备份可分为
冷备份静态备份是在数据库正常关闭的情况下进行的所以备份过程中不允许对数据库进行任何存取、修改活动。热备份动态备份热备份是指备份期间允许对数据库进行存取或修改即备份和用户事务可以并发执行。
按备份的内容分类
完全备份备份全部文件并不依赖文件的存档属性来确定备份那些文件。差分备份备份自上一次完全备份以来变化过的文件。增量备份备份上一次备份后无论是哪种备份所有发生变化的文件。
日志文件的作用
故障恢复必须用日志文件。在动态备份方式中必须建立日志文件备份和日志文件综合起来才能有效地恢复数据库。
例: 假设系统中有正在运行的事务若要转储全部数据库则应采用( )方式。 A.静态全局转储 B.动态增量转储 C.静态增量转储 D.动态全局转储
答案 D
4、应用程序和数据库交互
应用系统中用户不能直接访问后台的数据库需要高级程序语言来完成与用户之间的交互因此数据库管理系统需要提供程序 级别的接口来访问数据。 常见的应用程序与数据库的交互方式
库函数如Oracle的OCI(Oracle调用接口)。嵌入式 SQL将SQL语句直接写入某种高级程序语言。通用数据接口标准如ODBC、JDBC、DAO、RDO、ADO等。对象关系映射 (ORM)是一种为了解决面向对象与关系数据库不匹配的技术。就是将Java中的对象与数据库中的表关联对应起来。
常见的NoSQL数据库按存储方式可分为文档存储、键值存储、列存储和图存储。
分 类典型产品应用场景优点缺点文档存储MongoDB、CouchDBWeb 应用存储面向文档和半结构化数据结构灵活可以根据 value 构建索引缺乏统一的查询语法:无事务处理能力键值存储MMemcached、Redis内容缓存如会话、配置文件、参数等扩展性好灵活性强大量操作时性能高数据无结构化通常被当成字符串或者二进制数据通过键查询值列存储Bigtable、HBase、Cassandra分布式数据存储和管理可扩展性强查找速度快复杂性低功能局限;不支持事务的强一致性图存储Neo4i、OrientDB社交网络、推荐系统专注于构建系统图谱支持复杂的图形算法复杂性高只能支持一定的数据规模
文档存储 在文档存储中文档可以很长很复杂无结构可以是任意结构的字段并且数据具有物理和逻辑上的独立性这就和具有高度结构化的表存储(关系型数据库的主要存储结构)有很大的不同而最大的不同则在于它不提供对参数完整性和分布事务的支持。
关系型数据库用语数据库表记录文档型数据库用语数据库集合文档
当前主流的文档型数据库
名称查 询 语 言注释BaseXXquery, JavaXML 型数据库CouchDBErlang集合MongoDBCJSON 型数据库Lotus NotesLotusScript, Java, others多键值MarkLogic ServerXqueryXML 型数据库
文档数据库MongoDB MongoDB是一个基于分布式文件存储的数据库它的最大特点就是无表结构。在保存数据和数据结构的时候会把数据和数据结构都完整地以BSON的形式保存起来并把它作为值和特定的键进行关联。正是由于这种设计使得它不需要表结构而被称为文档型数据库。
MongoDB的特征
高性能提供JSON、XML等可嵌入数据快速处理功能提供文档的索引功能大大提高了查询速度。丰富的查询语言为数据聚合、结构文档地理空间提供丰富的查询功能。高可用性提供数据冗余处理和故障自动转移的功能。水平扩展能力通过集群将数据分布到多台机器而不是只提升单个节点的性能。具体处理分为主从和权衡两种处理模式。
键值存储 键值存储使用简单的键值方法来存储数据。键值数据库将数据存储为键值对集合其中键作为唯一标识符。键和值都可以是从简单对象到复杂复合对象的任何内容。
类型键值图片名称123.jpgBinary image file网页 URLhttps:///www.google.comHTML of a web page文件路径名C:/usr/Zhang/file1.docWORD documentMDS 哈希9689e3612ioifej23ERFT93089r3456PThis is a test.REST Web 服务调用View-person?person-id12334formatxmlPersonid12334/id/PersonSQL 查询SELECT * FROM STUDENT*
数据操作方式 键值存储中存在三种操作put、get 和 delete。开发者使用put、get 和 delete函数访问和操作键值存储:
put($key as xs:string, $value as item())对表添加一个新的键值对并且当键存在时更新键对应的值。get($key as xs:string) as item()根据给出的任意键返回键对应的值如果键值存储中没有该键将返回一个错误信息。delete($key as xs:string)将键和对应的值从表中删除如果键值存储中没有该键将返回一个错误信息。
数据保存方式
临时性保存类型这类数据库把数据都保存在内存中读和写速度非常快但当数据库停止或机器重启后数据就不存在了。永久性保存类型这类数据库把数据保存在硬盘上。由于牵扯到对硬盘的IO操作所以读写性能慢优势是不会丢失数据。两者兼具型兼具临时性保存和永久性保存的优点。如Redis系统它首先把数据存在内存中在内存中进行读和写操作。在满足特定条件时将数据写入到硬盘保存。既确保了内存中数据处理的高速性又通过写入硬盘来保证数据的永久性
键值存储产品 键值存储产品主要有亚马逊的Memcached、Redis、 Dynamo、Project Voldemort、Tokyo Tyrant、Riak、 Scalaries 等。
(1)Memcached Memcached 属于临时性保存类型是高性能的分布式内存对象缓存系统。通过缓存数据库查询结果减少数据库访问次数以提高动态 Web应用的速度、提高可扩展性。Memcached 常作为数据库前段 Cache 使用。因为它比数据库少了很多 SQL解析、磁盘操作等开销而且它是使用内存来管理数据的所以它可以提供比直接读取数据库更好的性能。 Memcached 也常作为服务器直接数据共享的存储媒介例如SSO 系统中保持系统单点登录状态的数据就可以保持在Memcached中被多个应用共享。
(2)Redis Redis是一种主要基于内存存储和运行能够快速响应的键值数据库属于临时和永久兼具类型有点像 Memcached整个数据库系统加载在内存当中进行操作但是通过定期异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作Redis的性能非常出色每秒可以处理超过10万次读写操作。其主要缺点是数据库容易受到物理内存的限制不能用作海量数据的高性能读写Redis没有内建的原生扩展机制这意味着它不会自动水平扩展以处理更多的负载。要实现分布式读写需要依赖客户端库如Redis Cluster集群、Redis Sentinel等来处理分片、复制和故障转移等操作因此 Redis 适合的场景主要局限在较小数据量的高性能操作和运算上、和需要快速响应和处理大量读写操作的场景。
比 较 内 容传统关系型数据库MongoDBRedis读写速度一般。基于硬盘读写约束很强较快。基于内存读写约束很弱最快。主要基于内存读写约束弱应用范围最广不能很好处理大数据和高并发访问互联网应用为主可以处理大数据和高并发访问互联网特定应用为主擅长处理高响应和高并发的访问的数据
列存储 面向列的数据库是以列作为单位来进行数据的存储的擅长进行以列为单位的数据处理。 列存储数据库主要有Google的Bigtable、由Bigtable衍生的Hypertable和HBase、 Cassandra。
类型数据存储方式特点面向行的数据库以行为单位进行存储对少量行进行数据读取和更新面向列的数据库以列为单位进行存储对大量行少数列进行读取对所有行的指定列进行同时更新
HBase HBase(Hadoop Database)是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统利用HBase技术可在廉价PC Server 上搭建起大规模结构化存储集群 图存储 图存储是一个包含一连串的节点和关系的系统当它们结合在一起时就构成了一个图。图存储有三个字段节点、关系和属性。 图数据库对于那些对象之间具有复杂关系的业务问题很有用如社交网路、规则引擎、生成组合和那些需要快速分析复杂网络结果并从中找出模式的图系统。
名 称查询语言注释AllegroGraphSPARQLRDF GraphStoreDEXJavaC#High-performance Graph DatabaseNeo4jJava–FlockDBScala–
其它存储模式 1.多值数据库 多值数据库系统提供了一个通用的数据集成与访问平台屏蔽了现有各数据库系统不同的访问方法和用户界面给用户呈现出一个访问多种数据库的公共接口。 常见的多值数据库有Rocket U2、Extensible Storage Engin(ESE/NT)、 OpenInsight 和OpenQM等。
2.时间序列与流数据库 时间序列数据库是指具有处理时间序列数据能对时间数据数组建立索引的优化数据库系统。 流数据库又被称为实时数据库是一种使用实时处理数据的方式来处理状态不断变化的数据库系统。对时间序列的数据库提出实时的 处理要求那么时间数据库就是流数据库。例如股票的价格、自动驾驶汽车的数据曲线等都需要实时计算处理此时流数据库发挥巨 大作用。 常见的时间序列数据库InfluxDB、OpenTSDB
3.网格和云数据库 网格和云数据库(Grid Cloud Database)是基于网格计算或者云 计算的数据库。
云计算是一种随需计算或者效用计算允许用户无需了解底层IT基础设施架构就能通过互联网访问各种基于IT资源的服务。网格计算可以理解为“虚拟超级计算机”以松耦合的方式将大量的计算资源连接在一起提供单个计算资源无法完成的计算能力。 主流数据库产品GridGain和CrateDB。