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

    数据库设计就是设计数据库的结构特性,即为特定应用环境构造出最优的数据模型。由于数据库的结构特性是静态的,一般不会轻易变动,因此又称为数据库的静态结构设计。

    数据库设计的基本流程:先将客观世界中的事物、事物间的联系用 E-R图 表示,汇总各个分 E-R图 得到一个总的 E-R图,在此基础上得到 概念结构模型,最后将概念结构模型转换为数据库支持的 逻辑结构模型

    新奥尔良(New Orleans)方法 是设计数据库的一种规范化的方法,它将数据库设计分为四个阶段:需求分析、概念结构设计、逻辑结构设计、物理结构设计。下面分别介绍这四个阶段。

    需求分析

    需求分析是数据库设计的第一步,也是最困难、应当投入最大精力的一步。需求分析要做的是了解、分析用户对系统的需求,弄清系统要达到的目标、要实现的功能。需求分析的结果用 数据流程图 和 数据字典表示。值得注意的是,要使一个系统具有较长的生命周期,除了要满足用户提出的需求外,还需要系统设计人员预测未来系统可能要支持的功能。

    下方的 系统 是指整个数据库系统(包括数据库和数据库应用系统)

    系统需求调查的内容

    1. 数据库中的信息内容:数据库中需要存储哪些数据
    2. 数据处理内容:系统应该实现哪些功能
    3. 数据的安全性和完整性要求:数据的存取控制要求、约束限制

    系统需求调查的步骤

    1. 从整体上,调查分析系统应该支持的单元有哪些
    2. 对每个单元单独进行分析,明确该单元使用哪些数据、如何使用数据……
    3. 确定系统的边界,即明确哪些功能由系统实现,哪些功能由其他方式如人工、其他已有系统等实现

    系统需求调查的方法

    1. 跟班作业
    2. 咨询专业人士
    3. 开调查会
    4. 请业务员填写调查表
    5. 查阅账本、档案、文献等文字资料

    系统需求分析的方法

    调查了用户的需求之后,需要进一步分析调查结果,以更明了的方式表达用户需求。分析、表达用户需求的方法有很多,其中一种称为 结构化分析方法(Structured Analysis,SA)。

    结构化分析方法采用自顶向下,逐步分解的方式分析系统。它把任何一个系统都抽象为下图的形式:
    系统高层抽象图

    数据流程图表达了数据和处理过程之间的关系。数据的详细信息用数据字典表示。

    数据字典

    数据字典(Data Dictionary,DD)则是对系统中数据的详细描述,它有以下 5 个部分:

    1. 数据项 = {数据项名,数据项含义说明,别名,类型,长度,取值范围,与其他数据项的逻辑关系}
    2. 数据结构 = {数据结构名,含义说明,组成,{数据项或数据结构}}
    3. 数据流 = {数据流名,说明,流出过程,流入过程,组成:{数据结构},平均流量,高峰期流量}
    4. 数据存储 = {数据存储名,说明,编号,输入的数据流,输出的数据流,组成:{数据结构},数据量,存取频度,存取方式}
    5. 处理过程= {处理过程名,说明,输入:{数据流},输出:{数据流},处理:{简要说明}}

    概念结构设计

    概念结构设计是将系统需求分析得到的用户需求 抽象为信息结构的过程。概念结构即概念模型,用 E-R图 对其进行描述。概念结构具有的特点:是现实世界的真实模型、易于理解、易于更改、易于向数据模型转换。

    概念结构的设计步骤

    1. 选择局部应用,设计 分E-R图
    2. 合并 分E-R图,得到一个总的 E-R图

    视图的集成

    视图的集成就是把设计好的各子系统的 分E-R图 综合成一个系统的 总E-R图。视图集成可以有两种方法:①多个 分E-R图 一次集成 ②逐步集成,采用累加的方法一次集成两个 分E-R图。无论采用哪种方法集成视图,都要分两步进行:

    1. 消除不同 分E-R图 之间的冲突问题,包括属性冲突、命名冲突、结构冲突。
    2. 消除不必要的实体集冗余和联系冗余,这里有两种方法:①直观分析方法消除冗余 ②用规范化理论消除冗余

    概念结构设计完成后,便得到了一个总的E-R图,以及上一阶段需求分析中得到的数据流程图、数据字典。E-R图、数据流程图、数据字典均与特定的数据库管理系统无关、反映客观世界情况、易于普通用户理解。我们需要向用户确认这三个设计结构是否准确全面。待用户确认无误后,方可向下一阶段继续。

    从下一阶段开始,所作的工作都需要结合具体的系统应用环境,若此时才发现对现实世界的理解有所偏差,再进行修改,成本便高了。因此务必确保概念结构设计和需求分析阶段得到的结果与客观世界符合。

    逻辑结构设计

    逻辑结构设计的任务就是把概念模型转换成某个具体的 DBMS 所支持的数据模型。通常概念模型向逻辑模型转换过程分3步进行:

    1. 概念模型 转换为 一般的数据模型
    2. 一般的数据模型 转换为 特定DBMS支持的数据模型
    3. 优化数据模型

    因为目前主流的数据库大都是关系型数据库,因此本文主要讨论概念模型向关系数据模型的转换。

    概念模型向关系模型的转换

    首先一个实体集(E-R图中的矩形)对应一个关系;一个联系(E-R图中的椭圆)根据不同的类型分开讨论:

    • 1:1 和 1:n 的联系:联系可单独成为一个关系;也可以合并到 n 端的实体集对应的关系中,此时关系的码不变
    • n:m 的联系和多对多的多元联系(三个及以上的实体集产生的联系):联系只能单独成为一个关系,该关系的码是 与该联系相连的各实体码的组合

    物理结构设计

    数据库的物理结构:数据库在物理设备上的存储结构与存取方法,依赖于给定的计算机系统。
    物理结构设计是对于给定的逻辑数据模型,选取一个最适合应用环境的物理结构。物理结构设计分为两步:

    1. 确定数据库的存取方法和存取结构
    2. 对物理结构进行评价(重点是时间和效率),若评价结构满足原设计要求,则可以进行物理实施;否则要修改物理结构,甚至返回逻辑设计阶段修改数据模型

    数据库物理结构设计的任务之一:确定建立哪些存取路径、选择哪些数据存取方法。关系数据库常用的存取方法有索引方法、聚簇方法、Hash方法等。

    关系模式中索引存取方法的选择

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

    注:索引并不是建立的越多越好,因为系统维护索引也要付出代价。例如一个属性经常会更新,那么就不适合在这个属性上建立索引。

  • 相关阅读:
    Nginx之负载均衡配置(二)
    Nginx之负载均衡配置(一)
    Nginx之反向代理配置(二)
    Nginx之反向代理配置(一)
    Nginx之常用基本配置(三)
    Nginx之常用基本配置(二)
    Nginx之常用基本配置(一)
    Linux系统WEB服务之Nginx基础入门
    Linux系统之LVS+Keepalived实现
    Linux系统之网络文件共享与数据实时同步实践
  • 原文地址:https://www.cnblogs.com/gu13/p/db-design.html
Copyright © 2011-2022 走看看