数据库设计

  • 一.数据库设计总述
    • 1.数据库设计内容
    • 2.数据库设计方法
    • 3.规范设计法
    • 4.具体过程
  • 二.具体步骤
    • 1.需求分析
      • 1.1需求分析的任务
      • 1.2需求调查
      • 1.3需求分析的方法
    • 2.概念结构设计
      • 2.1ER模型
      • 2.2概念结构设计的步骤
      • 2.3实例分析
        • 2.3.1确定系统管理的信息和查询操作
        • 2.3.2抽取实体与实习的属性,并绘制实体的ER图
        • 2.3.3确定实体之间的联系
        • 2.3.4组合实体与联系
        • 2.3.5增加需求
        • 2.3.6几个注意点
      • 2.4概念结构设计的方法
        • 2.4.1自底向上法
        • 2.4.2集成过程中存在的结构冲突
        • 2.4.3集成过程存在冗余的属性或联系
    • 3.逻辑结构设计
      • 3.1实体转换为关系模式
      • 3.2实体间的联系转换为关系模式
        • 3.2.1 1:1联系的转换
        • 3.2.2 1:n联系的转换
        • 3.2.3 m:n联系的转换
        • 3.2.4 多元联系的转换
        • 3.2.5 子实体和ISA联系的转换
        • 3.2.6 弱实体和依赖联系的准换
        • 3.2.7 案例系统
      • 3.3关系模式的优化
        • 3.3.1 逻辑结构设计原则
        • 3.3.2 关系模式的优化
    • 4.物理结构设计
      • 4.0引言
        • 4.0.1准备工作
        • 4.0.2解决的问题
      • 4.1定义模式结构
        • 4.1.1定义概念模式
        • 4.1.2定义用户外模式
        • 4.1.3定义内模式
      • 4.2创建数据库
        • 4.2.1定义数据库
        • 4.2.2物理结构设计策略
  • 三.总结

一.数据库设计总述

1.数据库设计内容


-数据库设计是基于应用系统需求分析中对数据的需求,解决数据的抽象、数据的表达和数据的存储等问题
-其目标是设计出满足应用要求,简洁、高效、规范合理的数据库
-最终得到能在DBMS中存储的数据库的逻辑结构和物理结构

2.数据库设计方法


数据库的设计发展历程:
-初始阶段,数据库设计人员,根据自己的经验和水平,运用一定的技巧进行数据库的设计,缺乏科学理论和工程方法的支持,很难保证设计的质量,数据库,常常在投入使用之后才发现存在的问题,不得不进行修改,增加了系统维护的代价。
-后来,数据库设计人员,开始运用软件工程的思想来设计数据库,对数据库进行规范设计,常用的规范设计方法,大多起源于1978年的新奥尔良法。
-在规范设计规程中,还可采用计算机来辅助设计。
-目前,设计人员还使用一些比较成熟的设计工具软件,比如Oracle Designer,Sybase Power Designer等,来帮助自动完成数据库的设计。

3.规范设计法


其中,规范设计法将数据库设计分为需求分析、概念设计、逻辑设计、物理设计四个阶段。规范设计方法,在不同阶段,又采用一些具体技术和方法,比如,在数据库概念设计阶段广泛广泛采用基于E-R模型的数据库设计方法,即用E-R模型来设计数据库的概念模型,在进行关系数据库的逻辑结构设计时,采用基于3NF的数据库设计方法,该方法用关系规范化理论为指导来设计数据库模式,以基于E-R模型的规范设计方法为基础。

4.具体过程


目前通常将数据库设计分为需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行维护六个阶段。

其中,需求分析是整个数据库设计的基础。数据库设计人员要分析用户以及应用系统的数据需求,需要将概念模型转换为选定DBMS支持的数据模型所对应的数据库模式,即进行数据库的逻辑结构设计。数据库逻辑结构的设计与采用的数据模型有关,因目前的数据库应用系统绝大多数采用支持关系模型的DBMS,数据库的逻辑结构设计,主要就是将概念模型转换为关系数据库模式。转换需要一定的转换规则。并根据应用需求,运用关系规范化理论对关系数据库模式进行优化。对逻辑结构设计的结果,还要针对选定的DBMS,利用数据库定义语言,描述数据库的模式结构,确定适合应用环境的存储结构和存取方法,即进行数据库的物理结构设计。然后就可以进入数据库实施阶段,在具体的DBMS上,实现物理结构设计的结果,建立数据,进行数据库编程,组织数据入库,并进行测试操作等。对正式投入使用的数据库,在进行系统运行过程中,需要不断地对其进行评估与完善。

数据库设计是上述六个阶段的不断反复迭代,逐步求精的过程。数据库设计同时,伴随着数据库应用系统软件的开发,在设计过程中需要把两者加以结合,相互完善。

二.具体步骤

1.需求分析

1.1需求分析的任务

-分析用户以及应用系统的数据需求
-明确在数据库中需要存储和管理的数据
-明确用户对数据的安全性和完整性方面的需求
-用户的存取权限的设置

1.2需求调查

需求分析是在用户调查的基础上,通过分析,逐步明确用户对系统的需求,包括数据需求和围绕这些数据的业务处理需求。
用户调查的重点是“数据”和“处理”。
需求:
•信息需求 定义未来数据库系统用到的所有信息,明确用户将向数据库中输入什么样的数据,从数据库中要求获得哪些内容,将要输出哪些信息。同时还要描述数据间的联系等。
• 处理需求 定义了系统数据处理的操作功能,描述操作的优先次序,包括操作的执行频率和场合,操作与数据间的联系。处理需求还要明确用户要完成哪些处理功能,每种处理的执行频度,用户需求的响应时间以及处理的方式,比如是联机处理还是批处理,等等。
• 安全性与完整性要求 描述了系统中不同用户对数据库的使用和操作情况,完整性要求描述了数据之间的关联关系以及数据的取值范围要求。

1.3需求分析的方法


-采用结构化系统分析和设计技术(SADT,是自顶向下结构化方法、工程化的系统开发方法和生命周期方法的结合)
-用数据流图来表达分析过程和结果
-用数据字典描述数据流图中的数据流和数据存储等

2.概念结构设计

2.1ER模型

E-R模型( Entity Relationship Model,实体联系模型),用ER图来描述概念模型中的实体、属性、实体间的联系等概念,

在ER模型中,实体用矩形表示,属性用椭圆表示,并用无向边连接实体和属性。

联系用菱形表示,并用无向边连接实体和联系,同时在无向边旁标上联系的类型,是1:1、1:n还是m:n。

在实体集A和子集B之间,可存在着ISA联系,用指向超类的三角形表示。实体B课通过ISA联系,继承实体A中的所有属性和与A相关的联系,同时拥有自己的属性。

依赖于常规实体的弱实体,用双线矩形框表示,与常规实体之间存在着一种依赖联系,用双线菱形框表示。在这些基本要素的基础上,可构造具体的应用系统中实体及其联系的完整的E-R图,来实现数据库的概念结构设计。

2.2概念结构设计的步骤


基于ER模型进行数据库概念结构设计,一般遵循如下步骤:
-从需求分析的结果文档中,抽取实体与实习的属性,并绘制实体的ER图
-确定实体间的联系,以及发生联系后产生的属性特征,绘制联系的ER图
-组合实体与联系的ER图,构造应用系统的完整ER图
其中,抽取实体是概念结构设计的重点

2.3实例分析

下面我们以一个学校的小型的教学信息管理系统为例,按设计步骤进行应用系统的数据库概念结构设计。

2.3.1确定系统管理的信息和查询操作

经需求分析得知,系统的功能是要管理如下信息:

系统要能对管理的数据进行合理地组织、存储,能实现数据的及时更新,并能对数据进行如下这类复杂的查询操作:

2.3.2抽取实体与实习的属性,并绘制实体的ER图

基于需求分析的描述、系统对数据的处理需求,可确定需在系统里进行管理的实体应包括班级、教研室、学生、教师和课程,及描述实体的必要特征属性,如班级实体的、班级号、所在系……如下图所示:

2.3.3确定实体之间的联系


2.3.4组合实体与联系

2.3.5增加需求



若该信息管理系统不仅要管理教学信息,话要管理所辖人员的档案信息,则其对学生实体和教师实体增加属性,比如增加具有依赖联系的弱实体等,将学生的家庭成员,单独构成一个弱实体,来记录学生的家庭成员的姓名等信息。

2.3.6几个注意点

1.对象抽象为实体集还是属性?


2.多个实体间的对象设计为二元联系还是多元联系?


3.设计为实体的属性还是联系的属性?

2.4概念结构设计的方法

对于一个学校的综合信息管理系统,可能包含多个业务功能子系统,那么如何来设计面向整个应用领域的全局数据库的概念结构呢?
设计方法主要有自顶向下、自底向上、由内而外和混合法等方法

2.4.1自底向上法

2.4.2集成过程中存在的结构冲突

2.4.3集成过程存在冗余的属性或联系

3.逻辑结构设计

3.1实体转换为关系模式

3.2实体间的联系转换为关系模式

3.2.1 1:1联系的转换




3.2.2 1:n联系的转换




3.2.3 m:n联系的转换



3.2.4 多元联系的转换


3.2.5 子实体和ISA联系的转换


3.2.6 弱实体和依赖联系的准换


3.2.7 案例系统


3.3关系模式的优化

3.3.1 逻辑结构设计原则

3.3.2 关系模式的优化





4.物理结构设计

4.0引言

4.0.1准备工作

4.0.2解决的问题

4.1定义模式结构

4.1.1定义概念模式

4.1.2定义用户外模式

4.1.3定义内模式

4.2创建数据库

4.2.1定义数据库

4.2.2物理结构设计策略

三.总结

详细介绍 数据库设计 的各个阶段与方法相关推荐

  1. SOC 时钟源PLL锁相环详细介绍——IC设计时序逻辑的灵魂

    SOC 时钟源PLL详细介绍--IC设计时序逻辑的灵魂 本节介绍SOC设计中时钟的组件PLL部分的介绍,PLL可以认为是IC设计中时序逻辑的灵魂所在,理解和掌握PLL的结构和原理是非常有必要的

  2. 详细介绍了Linux下配置文件的读取方法及fgyhtrh读取操作的C代码实现

    认识指针数组和数组指针从内存方面分析 Linux具有免费.可靠.安全.稳定.多平台等特点,因此深受广大程序员的欢迎.  为了体现软件产品的灵活性,可添加配置文件存放某些重要的参数,在部署的时候根据实际 ...

  3. 数据库设计三范式详细介绍--数据库设计规范之数据库设计三范式

    为什么需要数据库设计 1. 我们在设计数据表的时候要考虑很多问题问题,比如: 用户都需要什么数据?需要在数据表中保存哪些数据? 如果保证数据表中数据的正确性,当插入.删除.更新的时候该进行怎么样的约束 ...

  4. MySQL数据库三段式_对数据库模式进行规范化处理,是在数据库设计的什么阶段?...

    对数据库模式进行规范化处理,是在数据库设计的"逻辑设计阶段".数据库的逻辑结构设计就是把概念结构设计阶段设计好的基本实体-关系图转换为与选用的数据库管理系统产品所支持的数据模型相符 ...

  5. 阿里P8架构师谈:Dubbo的详细介绍、设计思路、以及4大适用场景

    Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用 ...

  6. 详细介绍软件架构设计的三个维度

    如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 架构设计是一个非常大的话题,不管写几篇文章,接触到的始终只是冰山一角,更多的是实践中 ...

  7. pythoncv2模块详细介绍_python中cv2模块的安装方法

    python中cv2模块的安装方法 发布时间:2020-07-09 14:40:18 来源:亿速云 阅读:115 作者:清晨 小编给大家分享一下python中cv2模块的安装方法,希望大家阅读完这篇文 ...

  8. 对接京东获取任务工单接口jingdong.homefw.task.search,附接口字段详细说明,数据库设计,Java实现

    目录 接口详细说明 jingdong.homefw.task.search(获取任务工单) 任务工单字段详细说明 数据库设计 任务工单表结构 日志表结构 接口Java实现 接口详细说明 jingdon ...

  9. 数据库的锁的详细介绍

    数据库的锁和索引的详细介绍 数据库的锁的详细介绍 全局锁 表级锁 表锁 元数据锁 意向锁 行级锁 行锁 间隙锁 临键锁 数据库的锁的详细介绍 最近看了一下数据库的锁和索引的相关知识,写个博客加深一下记 ...

最新文章

  1. 【linux】tc命令使用总结
  2. linux默认csh修改命令,Solaris中默认Shell的修改以及命令行补全的设置
  3. Python与MySQL
  4. 搭建认证服务器 - Spring Security Oauth2.0 集成 Jwt 之 【授权码认证流程】 总结
  5. 运用python的方式_六、python 方法的使用
  6. 基于业务解释的特征重要性计算
  7. sql语句基础学习(不涉及多表查询)
  8. matlab将矩阵分解成lu,10行代码实现矩阵的LU分解(matlab)
  9. ML、DL、CNN学习记录3
  10. PyTorch 1.0 中文文档:torch.distributions
  11. jest java_使用JestClient操作ElasticSearch的简单demo
  12. java 继承 封装 多态 详解
  13. MySQL中根据A表画更新B表
  14. python程序运行后没有反应_为什么我的电脑在运行这个python程序时速度变慢,没有反应?...
  15. html页面载入完毕返回顶部,HTMl页面中返回顶部如何实现 HTMl页面中返回顶部实现代码...
  16. html黑洞效果,HTML5+Canvas的黑洞特效
  17. 图片Base64解码
  18. 【算法很美】递归、查找、排序 (下)
  19. 让我们的爱洒满孩子们的心
  20. C++11 智能指针shared_ptr一篇足以

热门文章

  1. android 切换相机,Android如何切换前后摄像头
  2. ccna认证知识点总结
  3. ucore lab1练习3
  4. 函数设计之高扇入合理扇出
  5. Windows下安装fbprophet
  6. Redis数据类型String
  7. 2021秋招总结 | 字节跳动基础架构四面面经 |笔试+技术面+主管面 | 本人已拿到offer
  8. 点乘和叉乘的基本概念,集合意义和推导过程
  9. 孕期补微量元素钙后不要马上喝茶
  10. Excel中如何超链接到另一张表格的匹配数据