精华内容
下载资源
问答
  • 数据库系统

    2021-02-21 21:13:25
    三、数据库操作SQL语言 3.1 SQL语言概述 数据定义语句(Data Definition Language ,DDL)是SQL语言中用于创建、修改和删除数据库对象的语句。 • Create database 创建新数据库 • Drop database 删除数据库 • ...

    一、基础

    1.1 数据库使用的数据模型与数据库系统

    • 层次数据模型:采用“树”结构来组织、存储和管理数据;局限于上下节点的访问。
    • 网状数据模型:采用“网状图”结构组织、存储和管理数据。灵活地表示数据之间地关系;数据查询和修改不方便。
    • 关系数据模型:采用“二维表”结构组织、存储和管理数据,并以关联列实现表之间的联系。表之间通过具有相同属性列进行约束关系。数据结构简单、操作灵活、支持关系与集合运算操作、支持SQL;局限是只用于结构化数据的组织与存储管理,支持的数据类型较为简单,难以支持互联网广泛应用的非结构化数据和复杂数据管理。
    • 其他数据模型

    数据库系统是一类基于数据库进行数据管理与信息服务的软件系统。主要由用户、数据库应用程序、数据库管理系统和数据库四部分组成。

    • 用户:开发人员、使用人员、维护人员等
    • 数据库应用程序:是一种再DBMS支持下对数据库中数据进行访问处理的应用程序。
      主要功能有:通过窗口输入框采集用户输入数据;通过接口连接访问数据库;执行用户数据查询;通过表单列表输出数据。
    • 数据库管理系统:是一种专门用来创建数据库、管理数据库、维护数据库,并提供外部对数据库进行访问的系统软件。
      主要功能:
      • 创建数据库、数据库表以及其他对象;
      • 读写、修改、删除数据库表中的数据;
      • 维护数据库结构;
      • 执行数据访问规则;
      • 提供数据库并发访问控制和安全控制;
      • 执行数据库备份与恢复。
    • 数据库:是一种依照特定数据模型组织、存储和管理数据的文件集合。
    • 关系数据库中数据内容:在关系数据库中,除了存储和管理应用的用户数据(用户表)外,还需要存储与管理数据库本身的元数据、索引数据、运行数据等系统数据(系统表)。
    • 关系数据库的对象组织:在这里插入图片描述

    1.2 发展

    层次数据库–> 网状数据库 --> 关系型数据库 —> 对象-关系数据库 --> 半结构化数据库等

    1.3 数据库应用系统

    数据库应用系统类型

    • 业务处理系统:对机构业务活动(订购、销售、支付、出货)信息处理
    • 管理信息系统:以机构职能管理为主导,信息化管理,如人力资源管理信息系统
    • 决策支持系统:管理科学、运筹学、控制论等基础,为管理者提高辅助决策服务和方案,如证券分析与辅助决策信息系统

    数据库系统应用结构

    • 单机用户结构:整个数据库应用系统都装在一台计算机上,由一个用户进行访问操作,数据不能共享,数据冗余度大。
    • 集中式结构:数据库系统的应用程序、DBMS、数据都部署在同一服务器上运行,多个用户使用自己的计算机终端网络连接服务器,并可实现共享访问数据库。*特点:*结构简单、易于维护、但是当终端用户增加到一定数量后,服务器网络将成为数据存取访问的瓶颈,系统性能大大降低。
    • 客户/服务器结构:数据库应用系统的数据集中在数据库服务器管理、应用分布客户机处理。客户端应用程序通过网络并发访问数据库服务器中的数据库。*特点:*客户机程序与数据库服务器分工进行数据处理,提高了系统的负载分担能力,但会因大量客户端并发访问数据库服务器导致系统性能瓶颈。
    • 分布式结构:分布式结构的数据库系统既实现数据分布,又实现处理分布。分布式数据库系统的各服务器结点数据库在逻辑上是一个整体,但物理分布在计算机网络的不同服务器节点上运行,每个数据库服务器可通过网络既支持多个本地客户机访问,也支持远程客户机访问。网络中的每个数据库服务器都可以独立地存取和处理数据,并执行全局应用。*特点:*适合跨地区和大型机构,处理性能强,但数据库的分布处理和维护成本高,技术难度大。

    数据库应用系统生命周期

    • 需求分析:系统数据需求信息
    • 系统设计:包括系统概念数据模型、系统逻辑数据模型和系统物理数据模型设计。
    • 系统实现:包括DBMS安装部署、数据库创建、数据对象创建等
    • 系统测试:将测试数据上载到数据库中,对数据库对象进行测试操作访问,实现数据库功能和性能测试。
    • 系统运行和维护:监控与优化、扩展与维护

    1.4 数据库管理系统

    按用途分类:

    • 通用DBMS:支持公共领域数据库应用,如SQL Server
    • 专用领域DBMS:支持专用领域数据库应用,如嵌入式领域的SQLite

    按用户数分类:

    • 单用户DBMS:仅支持单用户访问,如miniSQL
    • 多用户DMBS:可支持多用户并行访问,如MySQL

    按系统部署分类:

    • 集中式DBMS:数据库集中部署在单一物理机器中,如Access
    • 分布式DBMS:数据库可分布在不同位置物理机器,如Oracle Database

    按使用场景分类:

    • 桌面级DBMS:适用于微小型的信息服务应用,如Access、SQLite
    • 企业级DBMS:适用于中大型的企业级应用,如DB2,ORACLE Database

    在这里插入图片描述

    二、数据库关系模型

    2.1 关系及其相关概念

    实体:包含有效数据特征的事物对象在概念模型世界的抽象名词。
    关系:在关系模型中,使用“关系”来存储“实体”中的数据。关系是指具有关系特征、用于存放实体数据的二维表,关系也常被称为关系表。
    关系的特征
    * 表中每行存储实体的一个实例数据,行又被称为元组。
    * 表中的每列包含实体的一项属性数据,列又被称为属性。
    * 表中单元格只能存储单个值;
    * 不允许有重复的行。
    * 列的顺序可任意。
    * 行的顺序可任意。

    关系的键定义
    在关系中,可以用来唯一标识元组的属性列,称为键(Key),其他属性列都为非键列。
    复合键(Compound Key):是指关系中用来唯一标识元组的多列作为键。
    候选键(Candidate Key):关系中可能有多个列均适合作为键,将其每个都称为候选键。
    主键(Primary Key):关系表中最有代表性的一个候选键,每个关系表中只能定义一个主键。
    主键的作用
    * 唯一标识关系表的每行(元组);
    * 与关联表的外键建立联系,实现关系表之间连接;
    * 数据库文件使用主键值来组织关系表的数据存储;
    * 数据库使用主键索引快速检索数据。
    代理键:采用DBMS自动生成的数字序列作为关系表的主键。(当复合键过于复杂时)
    代理键的用途
    * 由DBMS自动生成的数字序列作为主键,可替代复合主键,以便获得更高性能的数据访问操作处理。
    外键(Foreign Key):在关联的两个关系中,它们具有一个或多个相同属性,若关联列在第一个关系中作为主键,则在第二个关系中作为外键。

    关系模式语句中主键表示方法:
    关系名(主键属性,属性2,...,属性x)
    relation_name(Colunm01,Colunm02,...,LastColunm)
    relation_name表示关系名称,Colunm01等表示属性名。
    在这里插入图片描述

    2.2 关系模型原理

    关系模型是一种基于二维表结构存储数据实体及实体间联系的数据模型。
    关系模型的组成

    • 1、数据结构
    • 2、数据操作:集合运算操作包括 选择,投影、连接、交、并、差等。专门针对元组的关系操作包括数据行插入、修改、删除等操作。
    • 3、数据关系约束:在关系模型中,数据关系约束是指关系表中实体数据完整性、关联表之间数据一致性等要求,一般由业务需求来确定。在关系模型中,可定义关系表的数据约束如下:
      • 属性列取值范围
      • 属性列取值类型
      • 属性列取值是否唯一
      • 属性列是否允许空值
      • 关联表的参照完整性约束

    关系模型数据操作
    关系模型的数据操作采用基于关系代数的数据操作,包括传统的集合运算操作和专门的关系运算操作。
    并算法、差运算、交运算、笛卡尔积×(若R、S分别为两个关系表,则R×S的结果集为所有属于R的元组与所有属于S的元组进行组合而成R×S={(d1,d2) | d1∈R,d2∈S}
    关系模型完整性
    关系模型完整性是指在关系数据模型中对关系实施的完整性约束。
    完整性约束作用:

    • 消除关系表的元组重复存储
    • 保持关联表的数据一致性
    • 实现业务数据规则

    关系模型完整性约束组成

    • 实体完整性约束
    • 参照完整性约束
    • 用户自定义完整性约束

    实体完整性
    实体完整性是指在关系表中实施的主键取值约束,以保证关系表中的每个元组可以被唯一标识。
    实体完整性约束规则

    • 每个关系表中的主键属性列都不允许为空值,否则就不可能标识实体;
    • 现实世界中的实体是靠主键来标识,主键取值应该唯一,并区分关系表中的每个元组。

    参照完整性
    参照完整性是指关系表之间需要遵守的数据约束,以保证关系之间关联列的数据一致性
    参照完整性约束规则:若关系R中的外键F与关系S中的主键K相关联,则R中外键F 值必须与S中主键K值一致。

    用户自定义完整性
    用户自定义完整性是指用户根据具体业务对数据处理规则要求所定义的数据约束。
    用户可以定义如下类型的完整性约束:

    • 定义列的数据类型与取值范围
    • 定义列的缺省值
    • 定义列是否允许取空值
    • 定义列取值唯一性
    • 定义列之间的数据依赖性

    三、数据库操作SQL语言

    3.1 SQL语言概述

    数据定义语句(Data Definition Language ,DDL)是SQL语言中用于创建、修改和删除数据库对象的语句。
    • Create database 创建新数据库
    • Drop database 删除数据库
    • Alter database 修改数据库属性
    • Create table 创建新表
    • Alter table 修改数据库表结构
    • Drop table 删除表
    • Create index 创建索引
    • Drop index 删除索引

    数据操纵语言(Data Manipulation Language,DML)是SQL语言中用于增添、修改、删除数据的语句。
    • Insert 向数据库表中插入数据
    • Update 更新数据库表中的数据
    • Delete 从数据库表中删除数据

    数据查询语言(Data Query Language,DQL)是SQL语言中用于对数据库进行数据查询的语句。

    数据控制语言(Data Control Language,DCL)是用于对数据库对象访问权进行控制的SQL语句。
    • Grant 授予用户对数据库对象的权限
    • Deny 拒绝授予用户对数据库对象的权限
    • Revoke 撤销用户对数据库对象的权限

    事务处理语言:处理数据库内部事务的语句
    游标控制语句:用于数据库游标操作的语句

    3.2 数据定义SQL语句

    索引:索引是一种按照关系表中指定列的取值顺序组织元组数据存储的数据结构,使用它可以加快表中数据的查询访问。其功能就像是一个目录。
    详见:MySQL的索引及其数据结构
    索引作用及特点:支持对数据表中数据快速查找,其机理类似图像目录可以快速定位章节内容。索引优点为提高数据检索速度,快速连接关联表。索引开销主要是创建和维护都需要较大开销,索引会占用额外存储空间,数据操纵因维护索引带来系统性能开销。
    索引的结构:主要有B+树、B树和哈希表索引
    * B+ 树是一颗多叉树,叶子节点存放的是数据记录,非叶子节点存放的是索引。
    * B树也是一颗多叉树,每个节点存放索引和数据记录;
    * 哈希索引底层使用的是哈希表,将索引作为key,将数据记录作为value。
    索引创建SQL语句
    语句基本格式:create index <索引名> on <表名><(列名)>
    如:在学生信息表Student中,为出生日期Birthday列创建索引,以便支持按出生日期快速查询学生信息。
    create index Birthday_Idx on student (Birthday);

    索引修改SQL语句
    语句基本格式:alter index <索引名> <修改项>;
    如:在学生信息表Student中,将原索引Birthday_Idx更名为Bday_Idx,其索引修改SQL语句如下:alter index Birthday_Idx rename to Bday_Idx;

    索引删除SQL语句
    语句基本格式:drop index <索引名>;
    如:在学生信息表Student中,删除Bday_Idx索引,其索引删除SQL语句如下:drop index Bday_Idx;

    3.3 数据操纵SQL语句

    数据插入SQL语句
    语句基本格式:insert into <表名|视图名>[<列名表>] value (列值表);
    如:在学生信息表Student中,插入一个新的学生数据,如“2017220101105”,“柳因”,“女”,“1999-04-23”,“软件工程”,“liuyin@163.com”,SQL语句如下:insert into Student values('2017220101105', '柳因', '女','1999-04-23', '软件工程', 'liuyin@163.com');

    数据更新SQL语句
    语句基本格式:update <表名 | 视图名> set <列名1> = <表达式> [, <列名2> = <表达式2> …] [where <条件表达式>];
    如:在学生信息表Student中,学生“赵东”的原有Email数据为空,现需要修改为“zhaodong@163.com”,SQL语句如下:update Student set Email='zhaodong@163.com'where StudentName='赵东';

    数据删除SQL语句
    语句基本格式:delete from <表名 | 视图名> [where <条件表达式>];
    如:在学生信息表Student中,删除姓名为“张亮”的学生数据,其数据删除的SQL语句如下:delete from Student where StudentName='张亮';

    3.4 数据查询SQL语句

    3.4.1 单表数据查询

    数据查询SQL语句
    语句基本格式:select [all | distinct] <目标列>[, <目标列> …] [into <新表>] from <表名 | 视图名> [, < 表名 | 视图名> … ] [where <条件表达式>] [group by <列名> [having <条件表达式>]] [order by <列名> [asc | desc]];

    从单个表读取指定列
    在关系数据库中,最简单的数据查询操作就是从单个关系表中读取指定列的数据,即关系的投影操作。
    语句基本格式:select <目标列>[, <目标列> … ] from <关系表>;
    如:从Student 表中查询学生学号studentId、学生名字studentName的SQL语句如下:select studentId,studentName from Student;
    若希望从Student表中查询所有列数据,其查询SQL语句如下:select * from Student;
    若希望在结果集中过滤重复数据,可以在查询语句的输出列前加入Distinct 关键字,如下select distinct major from Student;

    从单个表读取指定行
    SQL查询语句也可以从一个关系表中读取满足条件的指定行数据,即完成关系数据的元组选择操作。
    语句基本格式:select * from <关系表> where <条件表达式>;
    如,在学生信息表Student中查询男生数据,语句如下:select * from Student where studentGender='男';

    从单个表读取指定行和列
    从一个关系表中读取指定行与指定列范围内的数据,既完成关系的行选择,又完成关系的列投影操作。
    语句基本格式:select <目标列>[, <目标列> … ] from <关系表> where <条件表达式>;
    如:从Student表中查询男生的姓名:select StudentName from Student where studentGender='男';

    Where条件子句
    where子句中可以使用如下方式指定范围数据。
    • 使用between … and关键词来限定列值范围,还可以使用关键词like与通配符来限定查询条件;
    • 使用通配符来限定字符串数据范围。下划线_通配符用于代表一个未指定的字符,百分号%通配符用于代表一个或多个未指定的字符。
    • 还可以使用多个条件表达式,并通过逻辑运算符(and、or、not)连接操作,以及使用in、not in关键词,进一步限定结果集的数据范围。
    如,从Student表中查询出生日期在 2000-01-01到2000-12-30的学生数据,其SQL语句如下:select * from Student where BirthDay between '2000-01-01' and '2000-12-30';
    如,查询Student表中邮箱域名为"@163.com"的学生数据,其数据查询SQL语句如下,select * from Student where Email like '%@163.com';

    对结果集进行排序
    在默认情况下,SQL查询的结果集是按指定列值的升序排列,可以使用关键字ASCDESC选定排序是升序或降序。
    如,从Student表中按学生出生日期降序输出学生数据,其数据查询SQL语句如下:select * from Student order by Birthday DESC;

    如果结果集需要按多个列排序,可以分别加入关键字ASCDESC改变。
    如,在Student表查询数据,首先按出生日期降序排列,然后按姓名升序排列,其SQL语句如下:select * from Student order by Birthday DESC,StudentName ASC;

    3.4.2 内置函数与分组统计

    SQL内置函数类型
    • 聚合函数
    • 算术函数
    • 字符串函数
    • 日期时间函数
    • 数据类型转换函数

    SQL聚合函数
    聚合函数是一些对关系表中数值属性列进行计算并返回一个结果数值的函数。
    • Avg() – 计算结果集指定列数据的平均值
    • Count() – 计算结果集行数
    • Min() – 找出结果集指定列数据的最小值
    • Max() – 找出结果集指定列数据的最大值
    • Sum() – 计算结果集指定列数据的总和
    如查询学生人数:select COUNT(*) as 学生人数 from Student;
    如查询年龄最大和年龄最小的学生出生日期:select Min(Birthday) as 最大年龄,Max(Birthday) as 最小年龄 from Student;

    分组统计
    语句基本格式:select 统计函数(目标列) from <表名> [where 条件] group by <目标列> [Having 条件];
    如:分专业统计学生人数:select Major as 专业,count(StudentId) as 学生人数 from Student group by Major;
    如:分专业统计男生人数,限定只显示人数大于2的人数:select Major as 专业,count(StudentId) as 学生人数 from Student where StudentGender = '男' group by Major having count(*) > 2

    3.4.3 多表关联查询

    子查询
    子查询只有在结果数据均来自一个表的情况下才有用。
    语句基本格式:select <目标列>[, <目标列> … ] from <表名> where <条件中嵌套另一关系表的select查询结果集>;
    如:在选课管理系统数据库中,希望检索出“计算机学院”的教师名单。该操作需要关联教师信息表Teacher和学院信息表College,才能获得这些数据,采用子查询方法实现两个表关联查询,SQL语句如下:select TeacherId, TeacherName,TeacherTitle from Teacher where CollegeId in (select CollegeId from College where CollegeName="计算机学院");

    使用连接关联多表查询
    需要从两个或多个表中获取结果数据时,使用连接关联多表查询,通过主键与外键的关联进行连接。
    语句基本格式:select <目标列> [, <目标列> … ] from <表名1>, <表名2>, … , <表名n>, where <关系表之间的连接关联条件>;
    如,在选课管理系统数据库中,希望获得各个学院的教师信息列表,包括学院名称、教师编号、教师姓名、教师性别、职称等信息,要求按学院名称、教师编号分别排序输出,其查询SQL语句如下:select B.CollegeName as 学院名称,A.TeacherId as 编号,A.TeacherName as 姓名,A.TeacherGender as 性别,A.TeacherTitle as 职称 from Teacher as A, College as B where A.CollegeId = B.CollegeId order by B.CollegeName,A.TeacherId;

    Join … on 连接查询语句
    实现多表连接关联查询还可以使用Join … on关键词的语句格式,其中两表连接关联查询的Join … on 语句格式如下:select <目标列> [,<目标列> …] from <表名1> Join <表名2> on <连接条件>;
    如,在选课管理系统数据库中,希望获得各个学院的教师信息列表,包括学院名称、教师编号、教师姓名、教师性别、职称等信息,要求按学院名称、教师编号分别排序输出,其查询SQL语句如下:select B.CollegeName as 学院名称,A.TeacherId as 编号,A.TeacherName as 姓名,A.TeacherGender As 性别,A.TeacherTitle as 职称 from Teacher as A Join College as B on A.CollegeId=B.CollegeId order by B.CollegeName, A.TeacherId;

    外部连接
    前面介绍的多表连接方式在select查询语句称为内部连接,在一些特殊情况下,如关联表中一些行的主键与外键不匹配,查询结果集就会丢失部分数据。
    如:在选课管理数据库中,希望查询所有开设课程的学生选课情况,包括课程名称、任课教师、选课学生人数。这需要关联课程信息表Course、教师信息表Teacher、开课计划表Plan、选课注册信息表Register,其连接查询的SQL语句如下:select C.CourseName as 课程名称,T.TeacherName as 教师,Count(R.CoursePlaneId)as 选课人数 from Course as C Join Plan as P on C.CourseId = P.CourseId Join Teacher as T on P.TeacherId=T.TeacherId Join Register as R on P.CoursePlanId = R.CoursePlanId Group by C.CourseName, T.TeacherName;
    在这里插入图片描述
    在这里插入图片描述

    3.5 数据控制SQL语句

    在SQL语言中,数据控制SQL语句是一种可对用户数据访问权进行控制的操作语句,它可以控制特定用户或角色对数据表、视图、存储过程、触发器等数据库对象的访问权限。主要有以下语句:
    • Grant授权语句
    • Revoke收权语句
    • Deny拒绝权限语句
    Grant权限授予语句
    Grant语句是一种由数据库对象创建者或管理员执行的权限授予语句,它可以把访问数据库对象权限授予给其他用户或角色。
    语句基本格式为:Grant <权限列表> on <数据库对象> to <用户或角色> [with grant option];
    如:在选课管理系统数据库中,将课程注册表Register的数据插入、数据修改、数据删除、数据查询访问权限赋予学生角色RoleS。SQL语句如下:Grant select, insert, update, delete on Register to RoleS;

    Revoke权限收回语句
    Revoke语句是一种由数据库对象创建者或管理员将赋予其他用户或角色的权限进行收回语句,它可以收回原授予给其他用户或角色的权限。
    语句基本格式为:Revoke <权限列表> on <数据库对象> from <用户或角色>;
    如:在选课管理系统数据库中,收回学生角色RoleS在课程注册表Register的数据删除访问权限。SQL语句如下:Revoke delete on Register from RoleS;

    Deny权限拒绝语句
    Deny语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。
    语句基本格式为:Deny <权限列表> on <数据库对象> to <用户或角色>;
    如:在选课管理系统数据库中,若拒绝教师角色Role T对教师表Teacher的数据删除访问权限,SQL语句如下:Deny delete on Teacher to RoleT;

    3.6 视图SQL语句

    视图是一种通过基础表或其他视图构建的虚拟表,它本身没有自己的数据,而是使用了存储在基础表中的数据。
    视图创建SQL语句
    语句基本格式:Create view <视图名> [(列名1),(列名2),…] as <select查询>;
    如:在选课管理系统数据库中,若需要建立一个查看基础课数据的视图BasicCourseView,其创建SQL语句如下:Create view BasicCourseView as select CourseName, CourseCredit, CoursePeriod, TestMethod from Course where CourseType = '基础课';
    当视图在数据库中创建之后,用户可以像访问关系表一样去操作访问视图。
    如:使用Select语句查询该视图数据,并按课程名称排序输出,其SQL语句如下:Select * from BasicCourseView order by CourseName;

    视图删除
    当数据库不再需要某视图,可以在数据库中删除该视图。
    语句基本格式:Drop view <视图名>;

    视图应用
    1、将复杂的SQL查询语句封装在一个视图中;
    2、提高数据访问安全性,保护用户隐私数据;
    3、提供一定程度的数据逻辑独立性;
    4、集中展示用户所感兴趣的特定数据。

    四、数据库设计与实现

    4.1 概述

    数据库设计是数据库应用系统开发的重要内容,在实现数据库之前,必须有明确的设计方案。
    数据库应用架构设计
    数据库应用架构可分为单用户结构、集中式结构、客户/服务器结构和分布式结构。
    数据库结构模型设计一般分为概念层、逻辑层和物理层设计,它们的设计模型分别为概念数据模型、逻辑数据模型和物理数据模型。
    数据库应用访问方式有直接本地接口连接访问、基于标准接口连接访问和基于数据访问层框架连接访问。

    数据库结构模型
    概念数据模型是一种面向用户的系统数据模型,它用来描述现实世界的系统概念化数据结构。使数据库设计人员在系统设计的初始阶段,摆脱计算机系统及DBMS的具体技术问题,集中精力分析业务数据以及数据之间的联系等,描述系统的数据对象及其组成关系。
    逻辑数据模型是在概念数据模型基础上,从系统设计角度描述系统的数据对象组成及其关联结构,并考虑这些数据对象符合数据库对象的逻辑表示。
    物理数据模型是在逻辑数据模型基础上,针对具体DBMS所设计的数据模型。用来描述系统数据模型在具体DBMS中的数据对象组织、存储方式、索引方式、访问路径等实现信息。

    4.2 E-R模型方法

    基础建模
    E-R模型
    E-R模型是“实体-联系模型”的简称,是一种描述现实世界概念数据模型、逻辑数据模型的有效方法。
    在E-R模型中,基本元素包括实体、属性、标识符和联系。
    • 实体:指问题域中存在的人、事、物、地点等客观事物在逻辑层面的数据抽象。它用于描述事物的数据对象,如客户、交易、产品、订单等。
    • 属性:指描述实体特征的数据项,每个实体都具有1个或多个属性。
    • 标识符:指标识不同实体实例的属性。标识符可以是1个或多个属性。标识符与主键的区别是标识符是一个逻辑概念,主键是物理概念。
    • 联系:指实体之间的联系,如“学生”与“成绩”的联系、“孩子”与“父亲”、“母亲”的联系等。联系中关联的实体数目称为联系度数

    实体-联系类型
    二元实体联系类型主要有:1对1;1对多;多对多。

    扩展建模
    在E-R模型中,实体之间除了基本联系外,还存在继承联系。继承联系用于表示实体之间的相似性关系。在实体继承联系中,一端是具有公共属性的实体,称为父实体;另一端是与父实体具有相似属性,同时也具有特征性的一个或多个实体,称为子实体
    在继承联系中,还可以分为互斥性继承联系和非互斥性继承联系。银行账户中个人账户和公司账户具有互斥性继承联系;职工中教师和干部具有非互斥性继承。除了互斥和非互斥的分类外,继承联系还可以分为完整继承和非完整继承。如果父实体实例必须属于子实体中的某一个,则称为完整继承联系;否则是非完整继承联系。比如,人实体与男人实体、女人实体之间具有完整继承联系;学生实体与本科生 实体、研究生实体具有非完整性继承联系。

    强弱实体联系
    在E-R模型中,按照实体之间的语义关系,可以将实体分为弱实体和强实体。弱实体是指那些对于另外实体有依赖关系的实体,即一个实体的存在必须以另一实体的存在为前提。而被依赖的实体称为强实体
    在E-R模型中,根据弱实体在语义上对强实体依赖程度的不同,弱实体又分为标识符(ID)依赖弱实体和非标识符(非ID)依赖弱实体两类。如果弱实体的标识符中含有所依赖实体的标识符,则该弱实体称为标识符(ID)依赖弱实体。

    4.3 数据库建模设计

    E-R模型到关系模型的转换原理
    • 将每一个实体转换成一个关系表,实体属性转换为关系表的列,实体标识符转换为关系表的主键或外键。
    • 将实体之间的联系转化为关系表之间的参照完整性约束。

    4.4 数据库规范化设计

    规范化数据库设计有效减少数据库中的冗余数据,尽量使同一数据在数据库中仅保存一份,有效降低维护数据一致性的工作量;设计合理的表间依赖关系和约束关系,便于实现数据完整性和一致性;设计合理的数据库结构,便于系统对数据高效访问处理。

    函数依赖
    函数依赖的数学定义:设有一关系模式R(U),U为关系R的属性集合,X和Y为属性U的子集。设t、s是关系R中的任意两个元组,如果t[X] = s[X],则 t[Y] = s[Y]。那么称Y函数依赖于X,表示为 X–> Y。
    函数依赖的左部称为决定因子,右部称为依赖函数。决定因子和依赖函数都是属性的集合。
    函数依赖反映属性与数性组之间相互依存、相互制约的关系,即关系表中属性之间的依赖关系。

    函数依赖的类型
    • 完全函数依赖:设X、Y是某关系的不同属性集,如X --> Y,且不存在X’ 作为X的子集,使得X’ --> Y,则Y称为完全函数依赖,否则称Y为部分函数依赖。
    • 函数传递依赖:设X、Y、Z是某关系的不同属性集,有X --> Y,Y !–> X, Y – Z,若X–> Z,称Z对X存在函数传递依赖。
    • 多值函数依赖

    关系规范化范式
    关系规范化是把一个有访问异常的关系分解成结构良好的关系的过程,使得这些关系有最小的冗余或没有冗余。;
    规范化范式是指关系表符合特定规范化程度的模式。

    第一范式
    如果关系表中的属性不可再细分,该关系满足第一范式,反之,该表就不是关系表。
    第二范式
    如果关系满足第一范式,并消除了关系中的属性部分函数依赖,该关系满足第二范式。
    第三范式
    如果关系满足第二范式,并切断了关系中的属性传递函数依赖,该关系满足第三范式。
    巴斯-科德范式 BCNF
    在关系中,所有函数依赖的决定因子都是候选键,该关系满足BCNF范式。
    第四范式
    若关系满足BCNF,并消除了多值函数依赖,该关系满足第四范式。
    关系的规范化程度越高,关系数据库存储的冗余数据就越少,可消除的数据访问异常就越多。不过关系的规范化程度越高,分解出来的关系表就越多,但实现数据查询访问时,需要关联多表,其效率降低。
    示例:

    在这里插入图片描述

    不满足,因为“联系方式”属性可以再细分为“电话”、“电子邮件”等。
    解决办法:将学生关系的“联系方式”进行属性分解。
    在这里插入图片描述

    问:进行属性分解后是否满足第二范式?
    答:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    逆规范化处理
    规范化减少了数据冗余,易于保证数据的完整性,但规范化过高也会导致数据库性能降低,因此,在利于规范化设计数据库时要平衡两者的关系。为此提出逆规范化处理,即,适当降低规范化范式约束,不再要求一个关系表必须达到很高的规范化程度,而是允许适当的数据冗余性,以获取数据访问性能。
    逆规范化处理的基本方法
    • 增加冗余列或派生列
    • 多个关系表合并为一个关系表

    五、数据库管理

    5.1 概述

    数据库管理是指为保证数据库系统的正常运行和服务质量必须进行的系统管理工作。

    在这里插入图片描述

    5.2 事务管理

    事务概念:在数据库中,事务是指由构成单个业务处理单元的一组数据库访问操作,要求它们要么都成功执行,要么都不执行。
    为什么需要事务管理:在数据库应用系统中,完成一个业务处理通常需要多个操作步骤才能完成处理,在每个操作步骤中,都可能遭遇失败,若没有一个处理机制,就可能造成操作数据混乱,从而破坏数据一致性。
    事务状态:在数据库系统中,==事是DBMS执行的最小任务单元。同时,事务也是DBMS最小的故障恢复任务单元和并发控制任务单元。==其生命周期状态变迁如下所示。
    在这里插入图片描述

    事务特性(ACID特性):
    • 原子性:事务所有操作在数据库中要么全部执行,要么全部不执行;
    • 一致性:事务多次执行,其结果应一致;
    • 隔离性:事务与事务之间隔离,并发执行透明;
    • 持续性:事务完成后,数据改变必须是永久的。

    事务并发执行:事务并发执行是指多个事务程序在数据库系统中同一时段运行。
    在这里插入图片描述
    在这里插入图片描述

    5.3 并发控制

    5.3.1 可串行调度

    当多个事务并发存取共享数据时,由于不当的数据操作顺序,可能出现数据不一致性问题(丢失更新数据、不可重复读、脏数据读等问题)。
    并发事务调度就是控制多个事务的数据操作语句按照恰当的顺序访问共享数据,使这些事务执行之后,避免造成数据的不一致性,即解决上述问题。
    事务调度原理:在DBMS中,事务管理器将并发执行事务的SQL数据操作请求提交给并发控制调度器。由并发控制调度器将各个事务的SQL数据操作请求按照一定顺序进行调度执行,并完成对数据库缓冲区的读写操作。

    在事务并发执行中,只有当事务中数据操作调度顺序的执行结果与事务串行执行结果一样时,该并发事务调度才能保证数据操作的正确性和一致性。符合这样效果的调度称为可串行调度

    5.3.2 锁机制

    资源锁定访问。加锁方式主要有:
    • 排它锁定——锁定后,不允许其他事务对共享数据再加锁;
    • 共享锁定:锁定后,只允许其他事务对共享数据添加读取锁。

    粒度越大,DBMS管理就越容易,但系统并发数据处理能力就越差。
    资源锁定粒度:数据库——粒度最大;表——粒度较大;页面——粒度中等;行——粒度最小。

    资源锁定实施方式:
    • 隐式锁定:DBMS缺省执行;
    • 显式锁定:加锁命令显式执行。

    基于锁机制的并发控制协议
    串行化调度必须约束并发事务对共享数据的操作访问是互斥方式进行,这需要用到基于数据库锁机制的并发控制协议。
    • 1、锁操作的相容性:加排它锁的共享数据事先不能有锁,加共享锁的共享数据事先只能有共享锁或无锁。
    • 2、加锁协议

    • 一级加锁协议:任何事务在修改共享数据对象之前,必须对该数据执行排它锁定指定,直到该事务处理完成,才进行解锁指令执行。特点:避免更新数据丢失问题,不能解决“不可重复读取”、“脏读”的问题。
      在这里插入图片描述

    • 二级加锁协议:在一级加锁协议基础上,针对并发事务的共享数据读操作,必须对该数据执行共享锁定指令,读完数据后即刻释放共享锁定。特点:避免“丢失更新”和“脏数据读问题”,还是可能出现“不可重复读取”的数据不一致问题。

      在这里插入图片描述

    • 三级加锁协议:在一级加锁协议基础上,针对并发事务对共享数据进行读操作,必须对该数据执行共享锁定指令,直到该事务处理结束才释放共享锁定。特点:解决“丢失更新”、“脏读”、“不可重复读”的问题。

    在这里插入图片描述

    • 不同级别锁协议对比
      在这里插入图片描述

    两阶段锁定协议
    并发事务的正确调度准则:一个给定的并发事务调度,当且仅当它是可串行化时,才能保证正确调度。
    保证可串行化的一个协议是二阶段锁定协议。
    二阶段锁定协议:规定每个事务必须分为两个阶段提出加锁和解锁申请:增长阶段,事务只能获得锁,但不能释放锁;缩减阶段,事务只能释放锁,但不能获得锁。

    若并发事务执行的所有事务都遵从两阶段锁定协议,则这些事务的任何并发调度都是可串行化调度,即这些开发调度执行结果可以保证数据库一致性。

    死锁问题解决
    • 事务死锁:在基于锁机制的并发事务执行中,如果这些事务同时锁定两个及以上资源时,可能会出现彼此都不能继续执行的状态,即事务死锁状态。
    在这里插入图片描述

    • 死锁出现的必要条件:
    	• 互斥条件
    	• 请求和保持条件
    	• 不剥夺条件
    	• 环路等待条件
    • 防范死锁的策略
    	• 允许用户一次发出当前所需全部资源的锁定,使用完成后,再释放给其他用户访问;
    	• 规定所有应用程序锁定资源的顺序必须完全相同。
    • 解决死锁的办法:当发生死锁时,回滚其中的一个事务,并取消它对数据库所做的改动。
    

    事务隔离级别
    在这里插入图片描述

    5.4 安全管理

    数据库系统安全模型:身份验证、DBMS权限管理、操作系统提供系统防护、数据库进行加密存储。

    5.4.1 用户管理

    身份验证。
    在数据库安全管理中,DBMS需要对每个用户进行管理,如用户创建、用户修改、用户删除管理等。实现用户管理方式:数据库服务器执行SQL语句管理用户、通过管理工具GUI 操作管理用户。
    1、用户创建SQL语句:create user <用户账号名> [[with] option […]];
    在这里插入图片描述

    2、用户修改SQL语句

    在这里插入图片描述
    在这里插入图片描述

    3、角色权限授予

    在这里插入图片描述

    5.5 数据库备份与恢复

    一、数据库系统故障原因
    数据库服务器硬件故障;系统软件故障;用户误操作;系统意外断电。
    二、数据库备份与恢复
    数据库备份:是指将数据库当前数据和状态进行副本复制,以便当数据库受到破坏或丢失数据时可以进行修复。
    数据库恢复:时数据库中数据丢失或被破坏时,从备份副本将数据库从错误状态恢复到某一正确状态
    三、数据库备份方法
    完全数据库备份、差异数据库备份、事务日志备份、文件备份

    展开全文
  • 数据库系统---分布式数据库系统

    千次阅读 2018-08-23 11:57:41
     分布式数据库系统是相对于集中式数据库系统而言的,是将数据库技术与网络技术相结合的产物。分布式数据库(Distributed DataBase,DDB)比较确切的定义是:分布式数据库是由一组数据组成的,这组数据分布在计算...

    分布式数据库系统

        近年来,随着计算机技术与网络技术的发展,特别是 Internet 的兴起,分布式数据库系统得到了很快的发展和应用。

    1 分布式数据库的概念 

        分布式数据库系统是相对于集中式数据库系统而言的,是将数据库技术与网络技术相结合的产物。分布式数据库(Distributed DataBase,DDB)比较确切的定义是:分布式数据库是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个结点具有独立处理的能力,成为场地自治,它可以执行局部应用,同时,每个结点也能通过网络通信子系统执行全局应用。负责分布式数据库的建立、查询、更新、复制、管理和维护的软件,称为分布式数据库管理系统(Distributed DataBase Management System, DDBMS)。分布式数据库管理系统保证分布式数据库中数据的物理分布对用户的透明性。一个计算机网络组成的计算机系统,在配置了分布式数据库管理系统,并在其上建立了分布式数据库和相应的应用程序后,就称其为分布式数据库系统(Distributed  DataBase System,DDBS)。分布式数据库管理系统是分布式数据库系统的核心。

        1.分布式数据库的特点从上面的定义可以看出分布式数据库系统有以下几个特点:

        (1)数据的分布性。分布式数据库中的数据分布于网络中的各个结点,它既不同于传统的集中式数据库,也不同于通过计算机网络共享的集中式数据库系统。

        (2)统一性。主要表现在数据在逻辑上的统一性和数据在管理上的统一性两个方面。分布式数据库系统通过网络技术把局部的、分散的数据库构成一个在逻辑上单一的数据库,从而呈现在用户面前的就如同是一个统一的、集中式的数据库。这就是数据在逻辑上的统一性,因此,它不同于由网络互联的多个独立数据库。分布式数据库是由分布式数据库管理系统统一管理和维护的,这种管理上的统一性又使它不同于一般的分布式文件系统。

        (3)透明性。用户在使用分布式数据库时,与使用集中式数据库一样,无须知道其所关心的数据存放在哪里,存储了几次。用户需要关心的仅仅是整个数据库的逻辑结构。

        与集中式数据库相比,分布式数据库具有下列优点:

        (1)坚固性好。由于分布式数据库系统是由多个位置上的多台计算机构成的,在个别结点或个别通信链路发生故障的情况下,它仍然可以降低级别继续工作,如果采用冗余技术,还可以获得一定的容错能力。因此,系统的坚固性好,即系统的可靠性和可用性好。

        (2)可扩充性好。可根据发展的需要增减结点,或对系统重新配置,这比用一个更大的系统代替一个已有的集中式数据库要容易得多。

        (3)可改善性能。在分布式数据库中可按就近分布,合理地冗余的原则来分布各结点上的数据,构造分布式数据库,使大部分数据可以就近访问,避免了集中式数据库中的瓶颈问题,减少了系统的响应时间,提高了系统的效率,而且也降低了通信费用。

        (4)自治性好。数据可以分散管理,统一协调,即系统中各结点的数据操纵和相互作用是高度自治的,不存在主从控制,因此,分布式数据库较好地满足了一个单位中各部门希望拥有自己的数据,管理自己的数据,同时又想共享其他部门有关数据的要求。

       虽然分布式数据库系统与集中式数据库相比有不少优点,但同时也需要解决一些集中式数据库所没有的问题。首先,异构数据库的集成问题是一项比较复杂的技术问题,目前还很难用一个通用的分布式数据库管理系统来解决这一问题。其次,如果数据库设计得不好,数据分布不合理,以致远距离访问过多,尤其是分布连接操作过多,不但不能改善性能,反而会使性能降低。

        2.分布式数据库的分类

        分布式数据库及其分布式数据库管理系统,根据许多因素有不同的分类方法,总的原则是分布式数据库及 DDBMS 必须是其数据和软件必定分布在用计算机网络连接的多个场地上。从应用需要或本身的特征方面考虑可将它从以下几个方面来划分:

        (1)按 DDBMS 软件同构度来分。当所有服务器软件(或每个 LDBMS)和所有客户软件均用相同的软件时称为同构型分布式数据库;反之,则称为异构型分布式数据库。

        (2)按局部自治度来分。当对 DDBMS 的存取必须通过客户软件,则系统称为无局部自治;当局部事务允许对服务器软件进行直接存取,则系统称为有一定的局部自治。自治的两个分别是无局部自治和联邦型 DDBMS 或称多数据库系统。多数据库系统本质上是集中式与分布式的混合体:对一个局部用户而言,它是自治的,那么是一个集中式 DBS;对一个全局用户而言,则是一个分布式 DBS,但这个 DDBS 没有全局概念模式,只有一个由各局部数据库提供给全局允许共享的有关模式的集成。

        (3)按分布透明度来分。分布透明度的另一个概念是模式集成度。若用户可以对集成模式操作不需要涉及任何片段、重复、分布等信息时,则这类 DDBMS 称为有高度分布透明(或高度模式集成);若用户必须知道所有关于片段、分配、重复等信息时,则这类 DDBMS 没有分布透明,没有模式集成度。当系统不提供分布透明,用户查询时必须指定特定的场地、特定的片段等信息,当然 DDBMS 可以部分分布透明(介于两者之间)。

        3.分布式数据库的目标

        理想的分布式系统使用时应该精确得像一个非分布式系统。概括起来有以下 12 条具体规则和目标:

        (1)局部结点自治性。网络中的每个结点是独立的数据库系统,它有自己的数据库,运行它的局部 DBMS,执行局部应用,具有高度的自治性。

        (2)不依赖中心结点。即每个结点具有全局字典管理、查询处理、并发控制和恢复控制等功能。

        (3)能连续操作。该目标使中断分布式数据库服务情况减至最少,当一个新场地合并到现有的分布式系统或从分布式系统中撤离一个 场地不会导致任何不必要的服务中断;在分布式系统中可动态地建立和消除片段,而不中止任何组成部分的场地或数据库;应尽可能在不使整个系统停机的情况下对组成分布式系统的场地的 DBMS 进行升级。

        (4)具有位置独立性(或称位置透明性)。用户不必知道数据的物理存储地,可工作可像数据全部存储在局部场地一样。一般位置独立性需要有分布式数据命名模式和字典子系统的支持。

        (5)分片独立性(或称分片透明性)。分布式系统如果可将给定的关系分成若干块或片,可提高系统的处理性能。利用分片将数据存储在最频繁使用它的位置上,使大部分操作为局部操作,减少网络的信息流量。如果系统支持分片独立性,那么用户工作起来就像数据全然不是分片的一样。

        (6)数据复制独立性。是指将给定的关系(或片段)可在物理级用许多不同存储副本或复制品在许多不同场地上存储。支持数据复制的系统应当支持复制独立性,用户工作可像它全然没有存储副本一样地工作。

        (7)支持分布式查询处理。在分布式数据库系统中有三类查询:局部查询、远程查询和全局查询。局部查询和远程查询仅涉及单个结点的数据(本地的或远程的),查询优化采用的技术是集中式数据库的查询优化技术。全局查询涉及多个结点上的数据,其查询处理和优化要复杂得多。

        (8)支持分布事务管理。事务管理有两个主要方面:恢复控制和并发控制。在分布式系统中,单个事务会涉及多个场地上的代码执行,会涉及多个场地上的更新,可以说每个事务是由多个“代理”组成的,每个代理代表在给定场地上的给定事务上执行的过程。在分布式系统中必须保证事务的代理集或者全部一致交付,或者全部一致回滚。

        (9)具有硬件独立性。希望在不同硬件系统上运行同样的 DBMS。

        (10)具有操作系统独立性。希望在不同的操作系统上运行 DBMS。

        (11)具有网络独立性。如果系统能够支持多个不同的场地,每个场地有不同的硬件和不同的操作系统,则要求该系统能支持各种不同的通信网络。

        (12)具有 DBMS 独立性。实现对异构型分布式系统的支持。理想的分布式系统应该提供DBMS 独立性。

        上述的全功能分布式数据库系统的准则和目标起源于:一个分布式数据库系统,对用户来说,应当看上去完全像一个非分布式系统。值得指出的是,现实系统出于对某些方面的特别考虑,对上述各方面做出了种种权衡和选择。

    2 分布式数据库的架构

        分布式数据库系统的模式结构有六个层次,如图 3-8 所示,实际的系统并非都具有这种结构。在这种结构中各级模式的层次清晰,可以概括和说明任何分布式数据库系统的概念和结构。

        图 3-8 的模式结构从整体上可以分为两大部分:下半部分是集中式数据库的模式结构,代表了各局部场地上局部数据库系统的基本结构;上半部分是分布式数据库系统增加的模式级别。

        (1)全局外模式。它们是全局应用的用户视图,是全局概念模式的子集。

        (2)全局概念模式。它定义分布式数据库中数据的整体逻辑结构,数据就如同根本没有分布一样,可用传统的集中式数据库中所采用的方法定义。全局概念模式中所用的数据模型应该易于向其他层次的模式映像,通常采用关系模型。这样,全局概念模式包括一组全局关系的定义。

        (3)分片模式。每一个全局关系可以划分为若干不相交的部分,每一部分称为一个片段,即“数据分片”。分片模式就是定义片段及全局关系到片段的映像。这种映像是一对多的,即每个片段来自一个全局关系,而一个全局关系可对应多个片段。

        (4)分布模式。由数据分片得到的片断仍然是 DDB 的全局数据,是全局关系的逻辑部分,每一个片段在物理上可以分配到网络的一个或多个不同结点上。分布模式定义片段的存放结点。分布模式的映像类型确定了分布式数据库是冗余的还是非冗余的。若映像是一对多的,即一个片段分配到多个结点上存放,则是冗余的分布数据库,否则是不冗余的分布数据库。

        根据分布模式提供的信息,一个全局查询可分解为若干子查询,每一子查询要访问的数据属于同一场地的局部数据库。由分布模式到各局部数据库的映像(映像 4)把存储在局部场地的全局关系或全局关系的片段映像为各局部概念模式采用局部场地的 DBMS 所支持的数据模型。

        分片模式和分布模式均是全局的,分布式数据库系统中增加的这些模式和相应的映像使分布式数据库系统具有了分布透明性。

        (5)局部概念模式。一个全局关系经逻辑划分成一个或多个逻辑片断,每个逻辑片断被分配在一个或多个场地上,称为该逻辑片断在某场地上的物理映像或物理片断。分配在同一场地上的同一个全局概念模式的若干片断(物理片断)构成了该全局概念在该场地上的一个物理映像。

        一个场地上的局部概念模式是该场地上所有全局概念模式在该场地上物理映像的集合。由此可见,全局概念模式与场地独立,而局部概念模式与场地相关。

        (6)局部内模式。局部内模式是 DDB 中关于物理数据库的描述,类似于集中式 DB 中的内模式,但其描述的内容不仅包含局部本场地的数据的存储描述,还包括全局数据在本场地的存储描述。

        在图 3-8 的六层模式结构中,全局概念模式、分片模式和分布模式是与场地特征无关的,是全局的,因此它们不依赖于局部 DBMS 的数据模型。在低层次上,需要把物理映像映射成由局部DBMS 支持的数据模型。这种映像由局部映射模式完成。具体的映射关系,由局部 DBMS 的类型决定。在异构型系统中,可在不同场地上拥有类型的局部映射模式。

        这种分层的模式结构为理解 DDB 提供了一种通用的概念结构。它有三个显著的特征:

        (1)数据分片和数据分配概念的分离,形成了“数据分布独立型”概念。

     

        (2)数据冗余的显示控制。数据在各个场地的分配情况在分配模式中一目了然,便于系统管理。

        (3)局部 DBMS 的独立性。这个特征也称为“局部映射透明性”。此特征允许在不考虑局部 DBMS 专用数据模型的情况下研究 DDB 管理的有关问题。

        1.分布式数据库系统与并行数据库系统的区别

        分布式数据库系统与并行数据库系统具有很多相似点:它们都是通过网络连接各个数据处理结点的,整个网络中的所有结点构成一个逻辑上统一的整体,用户可以对各个结点上的数据进行透明存取等。但分布式数据库系统与并行数据库系统之间还是存在着显著的区别的,主要表现在以下几个方面:

        (1)应用目标不同。并行数据库系统的目标是充分发挥并行计算机的优势,利用系统中的各个处理机结点并行地完成数据库任务,提高数据库的整体性能。分布式数据库系统主要目的在于实现各个场地自治和数据的全局透明共享,而不要求利用网络中的各个结点来提高系统的整体性能。

        (2)实现方式不同。由于应用目标各不相同,在具体实现方法上,并行数据库与分布式数据库之间也有着较大的区别。在并行数据库中,为了充分发挥各个结点的处理能力,各结点间采用高速通信网络互联,结点间数据传输代价相对较低。当负载不均衡时,可以将工作负载过大的结点上的任务通过高速通信网络送给空闲结点处理,从而实现负载平衡。在分布式数据库系统中,各结点(场地)间一般通过局域网或广域网互联,网络带宽比较低,各场地之间的通信开销较大,因此在查询处理时一般应尽量减少结点间的数据传输量。

        (3)各结点的地位不同。在并行数据库中,各结点之间不存在全局应用和局部应用的概念。各个结点协同作用,共同处理,而不可能有局部应用。

        在分布式数据库系统中,各结点除了能通过网络协同完成全局事务外,还有自己结点场地的自治性。也就是说,分布式数据库系统的每个场地又是一个独立的数据库系统,除了拥有自己的硬件系统(CPU、内存和磁盘等)外,还拥有自己的数据库和自己的客户,可运行自己的 DBMS,执行局部应用,具有高度的自治性。这是并行数据库与分布式数据库之间最主要的区别。

        2.数据分片和透明性

        将数据分片,使数据存放的单位不是关系而是片段,这既有利于按照用户的需求较好地组织数据的分布,也有利于控制数据的冗余度。分片的方式有多种,水平分片和垂直分片是两种基本的分片方式,混合分片和导出分片是较复杂的分片方式。

        分布透明性指用户不必关心数据的逻辑分片,不必关心数据存储的物理位置分配细节,也不必关心局部场地上数据库的数据模型。从图 3-8 的模式结构可以看到分布透明性包括:分片透明性、位置透明性和局部数据模型透明性。

        (1)分片透明性是分布透明性的最高层次。所谓分片透明性是指用户或应用程序只对全局关系进行操作而不必考虑数据的分片。当分片模式改变时,只要改变全局模式到分片模式的映像(映像 2),而不影响全局模式和应用程序。全局模式不变,应用程序不必改写,这就是分片透明性。

        (2)位置透明性是分布透明性的下一层次。所谓位置透明性是指,用户或应用程序应当了解分片情况,但不必了解片段的存储场地。当存储场地改变时,只要改变分片模式到分配模式的映像(映像 3),而不影响应用程序。同时,若片段的重复副本数目改变了,那么数据的冗余也会改变,但用户不必关心如何保持各副本的一致性,这也提供了重复副本的透明性。

        (3)局部数据模型透明性是指用户或应用程序应当了解分片及各片断存储的场地,但不必了解局部场地上使用的是何种数据模型。模型的转换及语言等的转换均由映像 4 来完成。

        3.分布式数据库管理系统分布式数据库管理系统的任务,首先就是把用户与分布式数据库隔离开来,使其对用户而言,整个分布式数据库就好像是一个传统的集中式数据库。换句话说,一个分布式数据库管理系统与用户之间的接口,在逻辑上与集中式数据库管理系统是一致的。但是考虑到分布式数据库的特点,其物理实现上又与集中式数据库不同。下面以一种分布式数据库管理。

        以系统 DDBMS 的结构为例来分析它的主要成分和功能,如图 3-9 所示。

     

        由图 3-9 可以看出,DDBMS 由 4 部分组成:

        (1)LDBMS(局部 DBMS)。局部场地上的数据库管理系统的功能是建立和管理局部数据库,提供场地自治能力、执行局部应用及全局查询的子查询。

        (2)GDBMS(全局 DBMS)。全局数据库管理系统的主要功能是提供分布透明性,协调全局事务的执行,协调各局部 DBMS 以完成全局应用,保证数据库的全局一致性,执行并发控制,实现更新同步,提供全局恢复功能。

        (3)全局数据字典。存放全局概念模式、分片模式、分布模式的定义及各模式之间映像的定义;存放有关用户存取权限的定义,以保证全局用户的合法权限和数据库的安全性;存放数据完整性约束条件的定义,其功能与集中式数据库的数据字典类似。

        (4)CM(Communication Management,通信管理)。在分布数据库各场地之间传送消息和数据,完成通信功能。

       DDBMS 功能的分割和重复及不同的配置策略就导致了各种架构。

        (1)全局控制集中的 DDBMS。这种结构的特点是全局控制成分 GDBMS 集中在某一结点上,由该结点完成全局事务的协调和局部数据库转换等一切控制功能,全局数据字典只有一个,也存放在该结点上,它是 GDBMS 执行控制的依据。它的优点是控制简单,易实现更新一致性。但由于控制集中在某一特定的结点上,不仅容易形成瓶颈而且系统较脆弱,一旦该结点出故障,整个系统就会瘫痪。

        (2)全局控制分散的 DDBMS。这种结构的特点是全局控制成分 GDBMS 分散在网络的每一个结点上,全局数据字典也在每个结点上有一份,每个结点都能完成全局事务的协调和局部数据库转换,每个结点既是全局事务的参与者又是协调者,一般称这类结构为完全分布的 DDBMS。它的优点是结点独立,自治性强,单个结点退出或进入系统均不会影响整个系统的运行,但是全局控制的协调机制和一致性的维护都比较复杂。

        (3)全局控制部分分散的 DDBMS。这种结构是根据应用的需要将 GDBMS 和全局数据字典分散在某些结点上,是介于前两种情况之间的架构。

        局部 DBMS 的一个重要性质是:局部 DBMS 是同构的还是异构的。同构和异构的级别可以有三级:硬件、操作系统和局部 DBMS。其中最主要的是局部 DBMS 这一级,因为硬件和操作系统的不同将由通信软件处理和管理。

        异构型 DDBMS 的设计和实现比同构型 DDBMS 更加复杂,它要解决不同的 DBMS 之间及不同的数据模型之间的转换。因此在设计和实现 DDBMS 时,若是用自顶向下的方法进行,即并不存在已运行的局部数据库,则采用同构型的结构比较方便。若是采用自底向上设计 DDBMS 的方法,即现已存在的局部数据库,而这些数据库可能采用不同的数据模型(层次、网状或关系),或者虽然模型相同但它们是不同厂商的 DBMS(如 Informix、 Sybase、Db2、Oracle),这就必须开发异构型的 DDBMS。要解决异构数据库模型的同种化问题,是研制异构型 DDBMS 的关键所在,所谓同种化就是寻找合适的公共数据模型,采用公共数据模型与异构数据模型(局部)之间的转换,不采用各结点之间的一对一转换。这样可以减少转移次数。设有 N 个结点,用公共数据模型时转换次数为 2N,而各结点之间一对一转换则需 N(N1)次。

    展开全文
  • 分布式数据库系统是由若干个站集合而成。这些站又称为节点,它们在通讯网络中联接在一起,每个节点都是一个独立的数据库系统,它们都拥有各自的数据库、中央处理机、终端,以及各自的局部数据库管理系统。因此分布式...

           分布式数据库系统是由若干个站集合而成。这些站又称为节点,它们在通讯网络中联接在一起,每个节点都是一个独立的数据库系统,它们都拥有各自的数据库、中央处理机、终端,以及各自的局部数据库管理系统。因此分布式数据库系统可以看作是一系列集中式数据库系统的联合。它们在逻辑上属于同一系统,但在物理结构上是分布式的。

      分布式数据库系统已经成为信息处理学科的重要领域,正在迅速发展之中,原因基于以下几点:

      1、它可以解决组织机构分散而数据需要相互联系的问题。比如银行系统,总行与各分行处于不同的城市或城市中的各个地区,在业务上它们需要处理各自的数据,也需要彼此之间的交换和处理,这就需要分布式的系统。

      2、如果一个组织机构需要增加新的相对自主的组织单位来扩充机构,则分布式数据库系统可以在对当前机构影响最小的情况下进行扩充。

      3、均衡负载的需要。数据的分解采用使局部应用达到最大,这使得各处理机之间的相互干扰降到最低。负载在各处理机之间分担,可以避免临界瓶颈。

      4、当现有机构中已存在几个数据库系统,而且实现全局应用的必要性增加时,就可以由这些数据库自下而上构成分布式数据库系统。

      5、相等规模的分布式数据库系统在出现故障的几率上不会比集中式数据库系统低,但由于其故障的影响仅限于局部数据应用,因此就整个系统来讲它的可靠性是比较高的。

    特点

      1、在分布式数据库系统里不强调集中控制概念,它具有一个以全局数据库管理员为基础的分层控制结构,但是每个局部数据库管理员都具有高度的自主权。

      2、在分布式数据库系统中数据独立性概念也同样重要,然而增加了一个新的概念,就是分布式透明性。所谓分布式透明性就是在编写程序时好象数据没有被分布一样,因此把数据进行转移不会影响程序的正确性。但程序的执行速度会有所降低。

      3、集中式数据库系统不同,数据冗余在分布式系统中被看作是所需要的特性,其原因在于:首先,如果在需要的节点复制数据,则可以提高局部的应用性。其次,当某节点发生故障时,可以操作其它节点上的复制数据,因此这可以增加系统的有效性。当然,在分布式系统中对最佳冗余度的评价是很复杂的。

      分布式系统的类型,大致可以归为三类:

      1、分布式数据,但只有一个总? 据库,没有局部数据库。

      2、分层式处理,每一层都有自己的数据库。

      3、充分分散的分布式网络,没有中央控制部分,各节点之间的联接方式又可以有多种,如松散的联接,紧密的联接,动态的联接,广播通知式联接等。

    展开全文
  • 分布式数据库系统

    千次阅读 2018-08-06 15:51:35
    分布式数据库系统  分布数据库定义:分布数据库是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个节点具有独立处理的能力(称为场地自洽),可以执行局部应用。同时每个结点也能通过网络...

    概述

    分布式数据库系统

      分布数据库定义:分布数据库是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个节点具有独立处理的能力(称为场地自洽),可以执行局部应用。同时每个结点也能通过网络通信子系统执行全局应用。

    分布式数据库系统的特点

    数据独立性
      在集中式数据库中,数据独立性包括两个方面:数据逻辑独立性和数据的物理独立性。通过系统的三级模式(外模式、模式、内模式)和它们之间的二级映像得到的。
      在分布式系统中,除了以上两个方面,还有数据分布独立性亦称分布透明性。分布透明性指用户不必关心数据的逻辑分片,不必关心数据物理位置分布的细节,也不必关心重复副本的一致性问题,同时也不必关心局部场地上数据库支持哪种数据类型。
    集中与自洽向接合的控制结构
      在集中式数据库中,为了保证数据库的安全性和完整性,对共享数据库的控制是集中的,并由DBA负责监督和维护系统的正常运行。
    在分布式系统中,数据的共享有两个层次:
    1.局部共享
    2.全局共享
      因此,相应的控制机构也具有两个层次:集中和自洽。
    适当增加数据冗余度
      在集中式数据库中,尽量减少冗余度是系统目标之一。其原因是,冗余数据不仅浪费存储空间,而且容易造成各数据副本之间的不一致性,为了保证数据的一致性,系统要付出一定的维护代价。减少容易的目标是数据共享来达到的。
      在分布式数据库中,在不同的场地存储同一数据的多个副本,其原因是:
    1.提高系统 的可靠性、可用性
    当某一场地出现故障时,系统可以对另一场地上的相同副本进行操作,不会因一处故障而造成整个系统的瘫痪。
    2.提高系统性能
      系统可以选择用户最近的数据副本进行操作,减少通信代价,改善整个系统的性能。
      一般地讲,增加数据冗余度方便了检索,提高了系统的查询速度、可用性和可靠性,但不利于更新,增加了系统维护的代价。因此应在这些方面做出权衡,进行优化。
    全局的一致性、可串行性和可恢复性
      分布式数据库系统中各局部数据库应满足集中式数据库的一致性、并发事务的可串行性和可恢复性。除此以外还应保证数据库的全局一致性、全局并发事务的可串行性和系统的全局可恢复性。这时因为在分布式数据库系统中全局应用要涉及两个以上结点的数据,全局事务可能由不同场地上的多个操作组成。

    分布式数据库系统的体系结构

    分布式数据库系统的模式结构

      模式结构从整体上可以分为两大部分:下部是集中式数据库系统的模式结构,代表了各局部场地上局部数据库系统的基本结构;上部是分布式数据库系统增加的模式级别,包括:
    1.全局外模式:它们是全局应用的用户视图,是全局概念模式的子集。
    2.全局概念模式:它定义分布式数据库中数据的整体逻辑结构,是的数据如同没有分布一样。全局概念模式中所用的数据模式应该易于向其他模式影响,通常采用关系模型。
    3.分片模式:每个全局关系可以分为若干不想交的部分,每一部分称为一个片段。
    4.分布模式:片段是全局关系的逻辑部分,一个片段在物理上可以分配到网络的不同结点上。分布模式定义片段的存放结点。分布模式的映像类型确定了分布式数据库是荣誉的还是非冗余的。

    数据分片

      数据分片使数据存放的大内不是关系而是片段,这既有利于按照用户的需求较好地组织数据的分片,也有利于控制数据的冗余度。
    分片的方式有多种,水平分片和垂直分片是两种基本的分片方式,混合分片和导出分片是比较复杂的分片方式。
    水平分片是指按一定的条件将关系按照行(水平方向)分为若干不相交的子集,每个子集为关系的一个分片。
    垂直分片是指将关系按列(垂直方向)分为若干子集。垂直分片的诸片段必须能够重构原来的关系。
    导出分片是指导出水平分片,即水平分片的条件不是本身属性的条件而是其他关系的属性的条件。
    混合分片是指按照上述三种芬片方式得到的片段继续按另一中方式分片。无论哪种分片方式都有满足以下条件:
    1.完整性:一个全局关系中的数据必须完全地划分为若干片段,不允许某些数据属于全局关系但不属于任何一个片段。
    2.不相交性:不允许一个全局关系和某些数据既属于该全局关系的某一个片段又属于该全局关系的另一个片段(垂直分片中的码属性除外)。
    3.可重构性:可以由片段重构全局关系,对于垂直分片可以用连接操作重构全局关系。

    分布透明性

    分布透明性包括:分片透明性位置透明性局部数据模型透明性
      分片透明性是分布透明性的最高层次。所谓分片透明性是指用户或应用程序只对全局关系进行操作而不必考虑关系的分片。
      位置透明是分布透明的下一层次。所谓位置透明是指,用户或应用程序不必了解片段的存储场地,当存储场地改变了,由于分片模式到分布模式的映像,应用程序不必改变。同时,若片段的重复副本数目改变了,数据冗余度改变了,用户也不必关心如何保持各副本的一致性。
      局部数据模型透明性是指用户或用户程序不必交接局部场地上使用的是哪种数据模型,模型的转换以及数据库语言的转换均由映像4完成。

    展开全文
  • 《数据库原理》— 数据库系统概论第五版习题解析

    万次阅读 多人点赞 2017-05-29 14:57:48
    数据库系统概论前七章习题解析 第1章绪论 1.试述数据、数据库、数据库系统、数据库管理系统的概念。答: (l)数据(Data):描述事物的符号记录称为数据。数据的种类有数字、文字、图形、图像、声音、正文等。...
  • 数据库系统概论期末复习【超实用】

    万次阅读 多人点赞 2019-12-28 17:46:46
    所用教材:《数据库系统概论(第5版)》王珊 萨师煊 编著 理论与实践相结合的好书 本文大部分写自同学,本作者稍加详解。感谢该同学,这些题目做透能拿高分! 一、简答题(来自第一章 绪论 课后题P34)10’ 1. 试述...
  • 数据库系统基本概念

    2019-04-08 22:45:15
        下面将介绍与数据库技术紧密相关的数据、数据库、数据库管理系统和数据库系统4个基本概念.      1. 什么是数据(data)     我们可以这样来定义数据:描述客观事物的符号记录成为数据。数据是数据库...
  • 数据库系统概念

    千次阅读 2018-06-26 21:27:13
    物理数据独立性:应用程序如果依赖与物理模式,它们就被称为是具有物理独立性,因此即使物理模式改变了它们也无需重写。 数据模型:关系模型,实体-联系模型,基于对象的数据模型,半结构化数据模型。网状数据...
  • 数据库系统概论》期末挂科

    千次阅读 多人点赞 2021-05-29 11:55:13
    数据库系统的核心是 数据库管理系统 DBMS 数据库系统的特点的是 数据结构化、数据由DBMS统一管理和控制、数据独立性高 概念模型是现实世界的第一层抽象,这一类模型中最著名的模型是 实体-联系模型(E-R模型) ...
  • 数据库系统概论》复习

    千次阅读 多人点赞 2019-05-27 12:13:27
    数据库系统概论》复习 第一章 绪论 1.1 数据库系统概述 1、数据库系统的四个基本概念 数据(Data):描述事物的符号记录称为数据,数据是数据库存储的基本对象。 数据库(DB):长期存储在计算机内、有组织的...
  • 数据库系统概述

    千次阅读 2017-03-15 10:54:50
    什么是数据库数据库是一个以某种有组织的方式存储的数据集合。也就是:保存有组织数据的容器(一个文件或一组文件)为什么我们需要数据库?毫无疑问,数据库是用来存储数据的。我们对excel肯定不会陌生,excel也是...
  • 分布式数据库系统体系结构

    千次阅读 2020-04-29 10:35:06
    分布式数据库系统1)分布式数据库系统概述定义特点优缺点数据共享分类2)分布式数据库系统体系结构数据存储模式结构透明性分布式数据库管理系统 1)分布式数据库系统概述 定义 分布式数据库系统(DDBS)是指数据存放在...
  • SQL Server数据库系统和数据库简介

    千次阅读 2019-02-18 09:32:13
    一.SQL Server数据库系统概述 1.组成数据库系统的主要部分: 数据库系统(DataBase System,缩写为DBS)是采用数据库技术的计算机系统,是由数据库(DB)、数据库管理系统(DBMS)、数据库管理员(DBA)、硬件平台...
  • 数据库系统概论复习笔记

    万次阅读 多人点赞 2018-05-26 08:11:02
    Abstract: 数据库系统概论期末复习笔记 ~btw:欢迎关注 ~ Github: https://github.com/ScarlettYellow个人博客:https://scarletthuang.cn/PART1 数据库概述关系模型的构成:关系数据结构、关系操作集合、关系完整...
  • 数据库系统期末复习

    万次阅读 多人点赞 2019-01-05 16:04:03
    数据库期末复习 文章目录数据库期末复习2. 关系模式介绍2.1 关系数据库的结构2.2 数据库模式2.3 码(key)2.4 模式图2.6 关系运算3.SQL1. 数据类型:2. 建表结构:3. 指定主键4. 指定外码5. 删除表6. 删除表中内容7....
  • 数据库系统概论整理

    2019-03-02 11:12:22
    1.数据库系统概述 1.1数据库的四个基本概念 数据:描述事物的符号标记 数据库DB:是长期存储在计算机内有组织、可共享的数据集合 数据库管理系统DBMS:应用软件。应该具备的功能:数据定义DDL、数据的组织,存储...
  • 数据库(数据库系统)大作业

    千次阅读 2020-05-07 17:17:34
    运用所学的数据库原理与数据库应用知识,基于数据库管理系统SQL SERVER2008,根据下面给出的要求,选择其中一题,完成一个完整的网络数据库应用系统的设计,最终提交设计文档并参加答辩。提交的设计文档内容必须包括...
  • 数据库系统概论第五版 答案

    万次阅读 多人点赞 2018-11-07 23:38:38
    图缺失部分:https://wenku.baidu.com/view/37304042ff4733687e21af45b307e87101f6f86c.html ... 第1章 绪论 ...1 .试述数据、数据库、数据库系统、数据库管理系统的概念。 答: ( l )数据( Data ...
  • 数据库系统概论——第七章 数据库设计 一、数据库设计概述 1. 数据库设计的特点 (1)数据库建设的基本规律 三分技术,七分管理,十二分基础数据 管理:数据库建设项目管理、企业的业务管理 基础数据:数据的收集、...
  • 数据库系统原理选择题

    千次阅读 2020-04-11 22:00:40
    数据库系统原理选择题 1、要保证数据库的逻辑数据独立性,需要修改的是||A||。 A: 模式与外模式之间的映射 B: 模式与内模式之间的映射 C: 模式 D: 三级模式 2、数据库系统的数据独立性体现在||B||。 A: 不会因为数据...
  • 数据库系统(DBS)的四个特点

    万次阅读 2018-11-07 20:13:19
    数据库系统(DateBase System,简称DBS)...数据库中的任何数据都不属于任何应用,数据是公共的,结构是全面的。在数据库中,数据文件的个数是有限的,固定的,但数据库系统的应用却是无限制的。 好处:整体数据的...
  • 第五版)★第一章 绪论v 本章内容:数据库系统概述、数据模型、数据库系统结构v 本章主要考点: 数据、数据库、★数据库管理系统的概念、概念模型、★ER图、三种数据模型、数据库的三级模式结构1、试述数据、...
  • 近年来,由于计算机网络通信的迅速发展,以及地理...分布式数据库系统是由若干个站集合而成。这些站又称为节点,它们在通讯网络中联接在一起,每个节点都是一个独立的数据库系统,它们都拥有各自的数据库、中央处理机、
  • 数据库系统概论复习

    千次阅读 2019-12-26 02:15:09
    题型 二、填空题,请在下划线上...数据库系统的三级模式是指 模式和逻辑、物理独立性间的关系 数据库系统的描述 概念模型是现实世界的第一层抽象,最著名的概念模型是E-R模型、 E-R模型的描述。 实体间的联系 数据...
  • 分布式数据库系统是相对于集中式数据库系统而言的,是将数据库技术与网络技术相结合的产物。 分布式数据库( Distributed DataBase , DDB )比较确切的定义是:分布式数据库是由一组数据组成的,这组数据分布在...
  • 文件系统与数据库系统比较

    千次阅读 2017-12-29 19:05:00
    1数据库基础 1.1数据库定义 1)数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据...
  • 其他知识均总结自王珊老师的《数据库系统概论》。通过本篇博客,能对数据库基础知识有个大致了解,更专业,更详细的知识还是查阅教材比较好。 基本概念 数据库是长期存储在计算机内、有组织的、可共享和大量数据的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 207,910
精华内容 83,164
关键字:

以下不属于数据库系统的是