zoukankan      html  css  js  c++  java
  • 数据库设计


    title: 数据库设计
    date: 2020-12-15 10:08:05
    tags: 数据库


    • [ ] 数据库设计概述
    • [ ] 需求设计
    • [ ] 概念结构设计
    • [ ] 逻辑结构设计
    • [ ] 物理设计
    • [ ] 数据库的实施和维护

    7.1 数据库设计概述

    广义地讲,是数据库及其应用系统的设计,即设计整个数据库应用系统;

    狭义地讲,是设计数据库本身,即设计数据库的各级模式并建立数据库,这是数据库应用系统设计的一部分。

    什么是数据库设计?(一般性定义)

    数据库设计是指对于一个给定的应用环境,设计一个优良的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据处理要求:

    • 信息管理要求:在数据库中存储和管理需要的数据对象。
    • 数据处理要求:对数据对象需要进行的处理,如查询、增删改、统计和分析等。

    7.1.1数据库设计的特点

    1. 数据库建设的基本规律
    • 三分技术,七分管理,十二分基础数据管理:
    • 管理
      • 数据库建设项目管理
      • 企业(即应用部门)的业务管理
    • 基础数据:数据的收集、整理、组织和不断更新
    1. 结构(数据)设计和行为(处理)设计相结合
    • 将数据库结构设计和数据处理设计密切结合
    • 传统的软件工程:重行为设计,忽视对应用中数据语义的分析和抽象,只要有可能就尽量推迟数据结构设计
    • 早期的数据库设计:重结构设计,致力于数据模型和数据库建模方法研究,忽视了行为设计对结构设计的影响

    image-20201214090420449

    7.1.2数据库设计方法

    • 大型数据库设计是涉及多学科的综合性技术,又是一项庞大的工程项目。
    • 要求多方面的知识和技术:
      • 计算机的基础知识
      • 软件工程的原理和方法
      • 程序设计的方法和技巧
      • 数据库的基本知识
      • 数据库设计技术
      • 应用领域的知识

    手工设计法

    • 设计质量与设计人员的经验和水平有直接关系
    • 缺乏科学理论和工程方法的支持,工程的质量难以保证
    • 数据库运行一段时间后常常又不同程度地发现各种问题,增加了维护代价

    规范设计法

    • 典型方法——新奥尔良(New Orleans)方法
      • 将数据库设计分为若干阶段和步骤
      • 采用辅助手段实现每一过程
      • 按设计规程用工程化方法设计数据库

    其他方法

    • 基于E-R模型的设计方法:概念设计阶段广泛采用
    • 3NF(第三范式)的设计方法:逻辑阶段可采用的有效方法
    • ODL(Object Definition Language)方法:面向对象的数据库设计方法
    • UML(Unified Modeling Language)方法:面向对象的建模方法

    数据库设计工具

    • SYBASE PowerDesigner:数据库建模一UML工具
    • Rational Rose:UML工具一数据库建模
    • CA ERWin:ERwin全称是ERwin Data Modele
      功能强大、易于使用的数据建模、数据库设计与开发工具

    7.1.3 数据库设计的基本步骤

    image-20201214091044124

    image-20201214084941712

    • 设计一个完善的数据库应用系统往往是上述6个阶段的不断反复。
    • 这个设计步骤既是数据库设计的过程,也包括了数据库应用系统的设计过程。
    • 数据库的设计对数据库中数据处理的设计紧密结合起来,将这两个方面的需求分析、抽象、设计、实现在各个阶段同时进行,相互参照,相互补充,以完善两方面的设计。

    数据库设计各个阶段产生的设计文档:

    image-20201214091522441

    参加数据库设计的人员

    系统分析人员和数据库设计人员
    ●自始至终参与数据库设计

    数据库管理员和用户代表
    ●主要参加需求分析与数据库的运行和维护

    应用开发人员:包括程序员和操作员
    ●在实施阶段参与进来,分别负责编制程序和准备软硬件环境

    7.1.4数据库设计过程中的各级模式

    概念设计阶段:

    形成独立于机器特点,独立于各个DBMS产品的概念模式(E-R图)

    逻辑设计阶段:
    1.首先将E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式
    2.然后根据用户处理的要求、安全性的考虑,在基本表的基础上再建立必要的视图(View) ,形成数据的外模式

    物理设计阶段:
    根据数据库管理系统特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式

    数据库的各级模式

    7.2需求分析

    什么是需求分析——分析用户的要求
    是设计数据库的起点
    需求分析的重要性
    结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用
    需求分析常常被忽视
    设计人员认为这是软任务,急于进行具体设计用户嫌麻烦
    领导不重视

    7.2.1 需求分析的任务

    image-20201214092404970

    7.2.2 需求分析的方法

    image-20201214092537192

    7.2.3 数据字典

    DBMS中的数据字典是,根据SQL语句,在运行时自动生成的,存放在数据库系统中,也是数据库运行时的重要依据

    image-20201214092654009

    image-20201214092802284

    image-20201214093214206

    image-20201214093313537

    image-20201214093438962

    3、数据流

    image-20201214093535000

    image-20201214093607437

    4、数据存储

    image-20201214093651802

    image-20201214093709540

    5、处理过程

    image-20201214093746740

    image-20201214093836856

    需求分析小结

    把需求收集和分析作为数据库设计的第一阶段是十分重要的。第一阶段收集的基础数据用数据字典来描述
    是下一步进行概念设计的基础。

    强调两点
    (1)设计人员应充分考虑到可能的扩充和改变,使设计易于更改,系统易于扩充

    (2)必须强调用户的参与,领导的重视

    7.3概念结构设计

    什么是概念结构设计
    >将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计;
    >概念结构是现实世界的一个真实模型。是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定;
    >概念结构设计是数据库设计的关键。
    
    

    7.3.1概念模型

    image-20201214095546446

    image-20201214094427761

    image-20201214094523805

    7.3.2 E-R模型

    1、实体之间的联系
    (1)两个实体型之间的联系,可以分为三种:

    • 一对一联系(1∶1)
    • 一对多联系(1∶n)
    • 多对多联系(m : n)

    image-20201214142413765

    一对一联系(1∶1)

    如果对于实体集A中的每一个实体,实体集B中最多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记为1∶1。

    例如,学校里一个班级只有一个正班长,而一个班长只在一个班中任职,则班级与班长之间具有一对一联系。

    一对多联系(1:n)

    如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1∶n。

    多对多联系(m: n)

    如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系,则称实体集A与实体集B具有多对多联系,记为m : n。

    例如,一门课程同时有若干个学生选修,而一个学生可以同时选修多门课程,则课程与学生之间具有多对多联系。

    (2)两个以上的实体型之间的联系:也存在着一对一、一对多、多对多联系。

    image-20201214142851110

    • 对于课程、教师与参考书,如果一门课程可以有若干个教师讲授,使用若干本参考书,而每一个教师只讲授一门课程,每一本参考书只供一门课程使用。
      则课程与教师、参考书之间的联系是一对多的。
    • 对于供应商、项目、零件,一个供应商可以供给多个项目多种零件,而每个项目可以使用多个供应商供应的零件,每种零件可由不同供应商供给。
      可以看出供应商、项目、零件三者之间是多对多的联系。

    (3)单个实体型内的联系,也存在一对一、一对多、多对多的联系。

    例如,职工实体型内部具有领导与被领导的联系,即某一职工(干部)“领导”若干名职工,而一个职工仅被另外一个职工直接领导,因此这是一对多的联系。

    image-20201214143128015

    参与联系的实体型的数目称为联系的度。
    两个实体型之间的联系度为2,也称为二元联系;

    三个实体型之间的联系度为3,也称为三元联系;

    N个实体型之间的联系度为N,也称为N元联系。

    联系也可以具有属性

    image-20201214143341945

    7.3.3扩展的E-R模型

    为了增强和丰富基本E-R模型的表达能力。

    进行了哪些扩展?

    我们介绍主要的3种扩展:1.ISA联系;2.基数约束;PART-OF联系

    1、ISA联系

    • 有的实体型是某个实体型的子类型,这种父类-子类联系称为ISA联系,表示“is a”语义。用△表示。
    • ISA联系的性质:子类继承了父类的所有属性,子类也可以有自己的属性。

    image-20201214140834090

    (1) 分类属性

    • 分类属性是父实体型的一个属性
    • 分类属性的值把父实体型中的实体分派到子实体型中

    image-20201214141033296

    (2) 不相交约束与可重叠约束

    • 不相交约束:描述父类中的一个实体不能同时属于多个子类中的实体集。即一个父类中的实体最多属于一个子类实体集。
    • 用ISA联系符号三角形的一个叉号“X"来表示。
    • 可重叠约束:父类中的一个实体能同时属于多个子类中的实体集。子类符号中没有叉号表示是可重叠的。

    image-20201214141417397

    (3)完备性约束

    • 描述父类中的一个实体是否必须是某一个子类中的实体。如果是,则叫做完全特化( total specialization)
    • 否则叫做部分特化(partial specialization)
    • 完全特化用父类到子类的双线连接来表示
    • 部分特化用父类到子类的单线连接来表示

    image-20201214141932113

    2、基数约束

    什么是基数约束

    • 说明实体型中的任何一个实体可以在联系中出现的最少次数和最多次数
    • 对实体之间一对一、一对多、多对多联系的细化。
    • 约束用一个数对 min..max表示,O≤min≤max。例如,0..1,1..3,1..*,其中*代表无穷大。

    image-20201214135554721

    基数约束的类别

    • min=1的约束叫做强制参与约束,即被施加基数约束的实体型中的每个实体都要参与联系;
    • min=0的约束叫做非强制参与约束,被施加基数约束的实体型中的实体可以出现在联系中,也可以不出现在联系中

    image-20201214135452345

    3、Part-of 联系

    什么是Part-of 联系

    描述某个实体型是另外一个实体型的一部分。

    Part-of 联系可以分为两种情况:

    • 非独占的Part-of联系,简称非独占联系

      整体实体如果被破坏,另一部分实体仍然可以独立存在

    • 独占的Part-of联系,简称独占联系

      整体实体如果被破坏,部分实体不能存在

    Part-of联系如何表示?
    非强制参与联系表示非独占的Part-of联系

    弱实体类型识别联系来表示独占联系

    image-20201214135047259

    7.3.4 UML

    image-20201214143712766

    image-20201214143752778

    image-20201214150916795

    7.3.5 概念结构设计

    1.实体与属性的划分原则

    对需求分析阶段收集到的数据进行分类、组织

    image-20201214151739997

    2.E-R图的集成

    image-20201214152434729

    image-20201214152520799

    image-20201214152603416

    image-20201214152645648

    image-20201214152707956

    image-20201214152810226

    image-20201214152900632

    image-20201214153002895

    image-20201214153100623

    image-20201214153322552

    7.4 逻辑结构设计

    • 把概念结构设计阶段设计好的基本E-R图转换为与选用的DBMS产品所支持的逻辑结构
    • 目前主要使用关系模型,关系模型的逻辑结构是一组关系模式的集合

    7.4.1 E-R图 向 关系模型的转换

    转换内容

    • 将E-R图转换为关系模型:
    • 将实体型、实体的属性和实体型之间的联系转化为关系模式。

    转换原则

    1 实体型的转换:一个实体型转换为一个关系模式

    • 关系模式的属性 : 实体的属性
    • 关系模式的码 : 实体的码

    image-20201215093734849

    2.实体型间的1 : 1联系 :

    • 可以转换为一个独立的关系模式
      • 关系模式的属性:与该联系相连的各实体的码 + 联系本身的属性
      • 关系模式的候选码 : 每个实体的码 均是 该关系模式的候选码
    • 也可以与相连的任意一端对应的关系模式合并
      • 关系模式的属性 :
        与某一端关系模式合并,则在该关系模式的属性中加入另一端关系模式的码和联系的属性
      • 合并后关系模式的码:不变

    eg . image-20201214153827717

    3.实体型间的1 : n 联系 :

    • 转换为一个独立的关系模式
      • 关系模式的属性:与该联系相连的各实体的码+联系本身的属性
      • 关系模式的码 : n端的实体的码
    • 与 n 端对应的关系模式合并
      • 合并后关系模式的属性 : 在n端关系模式中 + 1端关系的码+联系本身的属性
      • 合并后关系模式的码:不变
      • 可以减少系统模式中的关系个数,一般情况下更倾向于采用这种方法

    image-20201214154049077

    4 实体型间的m : n联系 :

    • 一个m:n联系转换为一个关系模式
    • 关系的属性:与该联系相连的各实体的码以及联系本身的属性
    • 关系的码:各实体码的组合

    image-20201214154226020

    5 三个或三个以上实体间的一个多元联系

    • 转换为一个关系模式
    • 关系模式的属性 : 与该多元联系相连的各实体的码+联系本身的属性
    • 关系模式的码:各实体码的组合

    6 具有相同码的关系模式可合并
    目的 : 减少系统中的关系个数合并方法:
    将其中一个关系模式的全部属性加入到另一个关系模式中然后去掉其中的同义属性(可能同名也可能不同名)适当调整属性的次序

    7.4.2数据模型的优化

    • 数据库逻辑设计的结果不是唯一的。
    • 得到初步数据库模式后,还应该适当地修改、调整数据库逻辑结构,以进一步提高数据库应用系统的性能,这就是数据模型的优化。
    • 关系数据模型的优化通常以规范化理论为指导。

    优化数据模型的方法

    (1)确定数据依赖
    按需求分析阶段所得到的语义,分别写出每个关系模式内部各属性之间的数据依赖以及不同关系模式属性之间数据依赖。
    (2)对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。
    (3)按照数据依赖的理论对关系模式进行分析,考察是否存在部分函数依赖、传递函数依赖、多值依赖等,确定各关系模式分别属于第几范式。
    (4)按照需求分析阶段得到的各种应用对数据处理的要求,分析对于这样的应用环境这些模式是否合适,确定是否要对它们进行合并或分解。包括水平分解和垂直分解。

    几点注意

    • 对于一个具体应用来说,到底规范化进行到什么程度,需要权衡响应时间和潜在问题两者的利弊来决定。
    • 当查询经常涉及两个或多个关系模式的属性时,系统必须经常地进行连接运算,连接运算的代价是相当高的。这种情况下,需要降低规范化程度。
    • 非BCNF的关系模式会存在不同程度的更新异常。如果在实际应用中对此关系模式只是查询,并不执行更新操作,就不会产生实际影响。

    7.4.3设计用户子模式

    • 数据库模式——全局模式。
      考虑系统全局应用需求,时间效率、空间效率、易维护等。

    • 用户子模式——视图机制
      考虑局部应用的特殊需求和用户体验。

      (1)使用更符合用户习惯的别名

      • 合并各分E-R图曾做了消除命名冲突的工作,以使数据库系统中同一关系和属性具有唯一的名字。这在设计数据库整体结构时是非常必要的。
      • 在设计用户子模式时可以设计子模式时重新定义某些属性名,使其与用户习惯一致,以方便使用。

      (2)针对不同级别的用户定义不同的视图,提高系统的安全性

      假设有关系模式:
      产品(产品号,产品名,规格,单价,生产车间,生产负责人,产品成本,产品合格率,质量等级)

      • 为一般顾客、为产品销售部门和管理部门建立不同的视图。

      (3)简化用户对系统的使用
      某些局部应用中经常要使用一些很复杂的查询,为了方便用户,可以将这些复杂查询定义为视图。

    image-20201215095647015

    image-20201214155355407

    7.5 物理设计

    什么是数据库的物理设计

    为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是数据库的物理设计。

    数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于选定的DBMS。

    image-20201214155837803

    4 数据存储

    • 数据量
      • 存取频度:每小时、每天或每周存取次数,每次存取的数据量等信息
      • 存取方法:批处理/联机处理;检索/更新;顺序检索/随机检索

    5 处理过程

    • 处理要求
      处理频度要求,如单位时间里处理多少事务,多少数据量、响应时间要求等

      物理设计的输入及性能评价的标准

    7.5.1 数据库物理设计的内容和方法

    存取方法:数据库关系模式选择建立了索引,聚簇等

    • 为关系模式选择存取方法(建立存取路径)

    • 为关系、索引日志、备份等数据库文件选择物理存储结构

    image-20201214193240928

    • 物理数据库设计参数(部分列选)
      • 数据库查询事务
        • 查询所涉及的关系
        • 查询条件所涉及的属性
        • 连接条件所涉及的属性
        • 查询的投影属性
      • 数据更新事务
        • 被更新的关系
        • 每个关系上的更新操作条件所涉及的属性
        • 修改操作要改变的属性值
      • 每个事务在各关系上运行的频率和性能要求

    数据库上运行的事务会不断变化、增加或减少,要根据应用的变化,及时收集设计信息,调整数据库的物理结构。

    7.5.2 关系模式存取方法选择

    1、索引方法

    为什么要建立索引

    提高存取的效率——查询、插入、删除、更新的效率如何选择索引存取方法

    索引存取方法的选择

    根据应用要求确定:

    • 对哪些属性列建立索引
    • 对哪些索引要设计为唯一索引、组合索引
    • 选择合适的索引方法

    如何创建索引

    CTEATE [UNIQUE] INDEX 索引名字 ON 表名 [USING 索引方法] (列名1,列名2,[,...])
    
    create unique index studentName on student using hash(sname)
    

    RDBMS 提供的索引方法

    B-Tree(B+树)、hash(散列),R-tree、Bitmap等

    如果不指定,缺省一般是B+树

    选择索引存取方法的一般规则

    • 如果一个(或一组)属性经常在查询条件中出现,则考虑在这个(这组)属性上建立索引(或组合索引)
    • 如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引;
    • 如果一个(或一组)属性经常在连接操作的连接条件中出现,则考虑在这个(或这组)属性上建立索引

    2、 B+树索引简介

    B+树索引的特点:

    • 多分平衡树,存取效率高
    • 既能随机查找、又能顺序查找
    • 增删改操作,保持平衡

    image-20201214194339623

    image-20201214194530360

    image-20201214194653888

    image-20201214194920103

    3、HASH存取方法的选择

    • Hash存取方法,提高了随机查询的效率
    • 选择Hash存取方法的规则
      • 如果一个关系的属性主要出现在等值连接条件中或主要出现在等值比较选择条件中,而满足下列两个条件之一:
        • 该关系大小可预知,而且不变
        • 该关系的大小动态改变,但所选用的数据库管理系统提供了动态Hash存取方法
    • 索引带来了额外的开销
      • 维护索引的开销
      • 查找索引的开销
      • 存取索引的开销
    • 确定是否需要建立索引,选择哪种索引

    4、聚簇方法

    聚簇存取方法的选择

    什么是聚簇:

    为了提高某个属性(或属性组)的查询速度,把这个(或这些)属性上具有相同指的元组集中存放在连续的物理块中称为聚簇。

    • 该属性(或属性组)称为聚簇码

    • 许多RDBMS都提供聚簇功能

    建立聚簇的方法示例:

    /*1.先创建一个聚簇*/
    CREATE CLUSTER<聚簇名>(<聚簇码>)SIZE(<大小>);
    /*2.在聚簇上建立索引*/
    CREATE INDEX<索引名>ON CLUSTER<聚簇名>;
    [例]
    CREATE CLUSTER emp_dept_cluster (deptno number(6) ) SIZE 1024;
    CREATE INDEX emp_dept_cluster_index ON CLUSTER emp_dept_cluster;
    /*各个RDBMS产品的关于聚簇的建立、维护的方法和语法不尽相同*/
    

    聚簇的用途

    1、大大提高按聚簇属性进行查询的效率

    /*[例]假设要查询计算机系的所有学生。
    学生数据表随机存放,
    计算机系的500名学生分散存储在500个不同的物理块上,则至少要执行500次IO操作。
    如果按照专业系名聚簇存放,
    将同一系的学生元组聚簇在一起存放,则可以显著地减少了访问磁盘的次数。
    计算机系的500名学生聚簇存储在50个不同的物理块上,只要执行50次IO操作。
    */
    

    聚簇的适用范围

    • 既适用于单个关系独立聚簇,也适用于多个关系组合聚簇
    [例]假设用户经常要按姓名查询学生成绩单。
    SELECT sname, cno, grade 
    from student, sc 
    where student.sno=sc.sno
    /*这一查询涉及学生关系和选修关系的连接操作,按学号连接这两个关系。*/
    ■ 按照学号把学生表和选修表聚簇在一起。
    ■ 相当于把多个关系按“预连接”的形式存放。
    ■ 大大提高连接操作的效率。
    

    聚簇的适用范围

    当SQL语句中包含有与聚簇码有关的ORDER BY,GROUP BY,UNION, DISTINCT等子句或短语时,
    上使用聚簇特别有利,可以省去或减少对结果集的排序操作

    聚簇的局限性

    • 在一个基本表上最多只能建立一个聚簇索引
    • 聚簇只能提高某些特定应用的性能
    • 建立与维护聚簇的开销相当大
      • 对已有关系建立聚簇,将导致关系中元组的物理存储位置移动,并使此关系上原有的索引无效,必须重建。
      • 当一个元组的聚簇码改变时,该元组的存储位置也要相应改变。

    聚簇索引的适用条件

    • 很少对基表进行增删操作
    • 很少对其中的变长列进行修改操作

    7.5.3 确定数据库的存储结构

    image-20201214203242427

    影响数据存放位置和存储结构的因素

    • 硬件环境
    • 应用需求
      • 存取时间
      • 存储空间利用率
      • 维护代价、

    这三个方面常常是相互矛盾的,必须进行权衡,选择一个折中方案

    1、确定数据的存放位置

    基本原则:

    根据应用情况和物理环境(磁盘或磁盘阵列的容量、内存的大小)

    • 易变部分与稳定部分分开存放
    • 经常存取部分与存取频率较低部分分开存放
    • 将日志文件与数据库对象(表、索引等)分开存放

    在海量数据和多用户环境下,把数据分布存放在不同的磁盘或磁盘阵列上,可以改进系统性能。

    2、确定系统配置

    数据库管理系统一般都提供了一些存储分配参数

    • 同时使用数据库的用户数
    • 同时打开的数据库对象数
    • 内存分配参数
    • 缓冲区分配参数(使用的缓冲区长度、个数)
    • 存储分配参数
    • 物理块的大小
    • 物理块装填因子
    • 数据库的大小
    • 锁的数目等

    系统都为这些变量赋予了合理的缺省值。

    ​ 在进行物理设计时需要根据应用环境确定这些参数值,以使系统性能最优。

    在物理设计时对系统配置变量的调整只是初步的,要根据系统实际运行情况做进一步的调整,以切实改进系统性能

    7.5.4 评价物理结构

    • 对数据库物理设计过程中产生的多种方案进行评价,从中选择一个较优的方案作为数据库的物理结构
    • 评价方法
      • 定量估算各种方案
        • 存储空间
        • 存取时间
        • 维护代价
      • 对估算结果进行权衡、比较,选择出一个较优的合理的物理结构
      • 返回用户征求意见,修改设计

    image-20201214204141769

    7.6 数据库的实施和维护

    image-20201214204452662

    7.6.1 数据的载入和应用程序的调试

    一 定义数据库结构

    • 用DBMS提供的DDL来创建数据库结构
    • RDBMS产生目标模式,生成数据字典

    image-20201214233218347

    二 数据装载

    • 组织数据入库是数据库实施阶段最主要的工作

    • 数据装载 —— ETL

      • 数据抽取
      • 数据转换
      • 数据载入
    • 使用ETL工具辅助完成

      ETL工作是相当费力、费时的

    三 编制与调试应用程序

    • 数据库应用程序的设计应该与数据设计并行进行
    • 在数据库实施阶段,编制与调试数据库的应用程序。调试应用程序时由于数据入库尚未完成,可先使用模拟数据。*

    7.6.2 数据库的试运行

    • 数据库的试运行

      应用程序调试完成,并且已有一小部分数据入库后,就可以开始对数据库系统进行联合调试。

    • 主要工作包括:

      • 功能测试:实际运行应用程序,执行对数据库的各种操作,测试应用程序的各种功能。
      • 性能测试:测量系统性能指标,分析是否符合设计目标。
    • 数据库性能指标的测量

      • 数据库物理设计阶段,评价数据库结构,估算时间、空间指标时,作了许多简化和假设,必然是近似结果。
      • 数据库试运行则是要实际测量系统的各种性能指标如果结果不符合设计目标,则需要返回物理设计阶段,调整物理结构,修改参数;有时甚至需要返回逻辑设计阶段,调整逻辑结构。

    注意点:

    1、数据的分期入库

    • 重新设计物理结构甚至逻辑结构,会导致数据重新入库
    • 由于数据入库工作量实在太大,所以可以采用分期输入数据的方法
      • 先输入小批量数据供先期联合调试使用
      • 待试运行基本合格后再输入大批量数据
      • 逐步增加数据量,逐步完成运行评价

    2、数据库的转储和恢复

    • 在数据库试运行阶段,系统还不稳定,硬、软件故障随时都可能发生

    • 系统的操作人员对新系统还不熟悉,误操作也不可避免因此必须做好数据库的转储和恢复工作,尽量减少对数据库的破坏

    7.6.3 数据库的运行和维护

    在数据库运行阶段,对数据库经常性的维护工作主要是由数据库管理员完成的,包

    1、数据库的转储和恢复

    • 数据库管理员要针对不同的应用要求制定不同的转储计划,定期对数据库和日志文件进行备份。

    • 一旦发生介质故障,即利用数据库备份日志文件备份,尽快将数据库恢复到某种一致性状态。

    2、数据库的安全性、完整性控制

    • 初始定义
      • 数据库管理员根据用户的实际需要授予不同的操作权限
      • 根据应用环境定义不同的完整性约束条件
    • 修改定义
      • 当应用环境发生变化,对安全性的要求也会发生变化,数据库管理员需要根据实际情况修改原有的安全性控制
      • 由于应用环境发生变化,数据库的完整性约束条件也会变化,也需要数据库管理员不断修正,以满足用户要求

    3、数据库性能的监督、分析和改进

    • 在数据库运行过程中,数据库管理员必须监督系统运行,对监测数据进行分析,找出改进系统性能的方法。
      • 利用监测工具获取系统运行过程中一系列性能参数的值
      • 通过分析这些数据,判断当前系统是否处于最佳运行状态
      • 如果不是,则需要通过调整某些参数来改进数据库性能

    4、数据库的重组织与重构造

    (1)数据库的重组织

    为什么要重组织数据库

    数据库运行一段时间后,由于记录的不断增、删、改,会使数据库的物理存储变坏,从而降低数据库存储空间的利用率和数据的存取效率,使数据库的性能下降。

    数据库重组织的主要工作

    • 按原设计要求
    • 重新安排存储位置
    • 回收垃圾
    • 减少指针链
    • 数据库的重组织不会改变原设计的数据逻辑结构和物理结构

    数据库管理系统一般都提供了供重组织数据库使用的实用程序,帮助数据库管理员重新组织数据库。

    (2)数据库的重构造

    为什么要进行数据库的重构造

    数据库应用环境发生变化,会导致实体及实体间的联系也发生相应的变化,使原有的数据库设计不能很好地满足新的需求

    • 增加新的应用或新的实体
    • 取消某些已有应用
    • 改变某些已有应用

    数据库重构造的主要内容

    • 根据新环境调整数据库的模式和内模式

      • 增加或删除某些数据项
      • 改变数据项的类型
      • 增加或删除某个表
      • 改变数据库的容量
      • 增加或删除某些索引
    • 重构造数据库的程度是有限的

      • 应用需求变化太大,软件硬件发展太快
      • 无法通过重构数据库来满足新的需求,或重构数据库的代价太大,则表明现有数据库应用系统的生命周期已经结束,应该重新设计新的数据库应用系统了。
  • 相关阅读:
    Python之转换py文件为无需依赖python环境的exe文件的方法
    Python之回调函数
    Python之静态语法检查
    Ubuntu中一次更改用户名带来的连锁反应
    Python之FTP传输
    qemu 源码调试
    Lattice Reduction (LLL) 算法C代码实现
    一道Apple公司(中国)的面试题目
    github免密码设置
    HiHo Coder字典树 TrieTree
  • 原文地址:https://www.cnblogs.com/aspiration/p/15422793.html
Copyright © 2011-2022 走看看