目录

  • 数据库设计的基本步骤
  • 引言
  • 1.需求分析阶段(常用自顶向下)
  • 2.概念结构设计阶段(常用自底向上)
  • 3.逻辑结构设计阶段(E-R图)
  • 4.物理设计阶段
  • 5.数据库实施阶段
  • 6.数据库运行和维护阶段

数据库设计的基本步骤

按照规范设计的方法,考虑数据库及其应用系统开发全过程,将数据库设计分为以下6个阶段

  1. 需求分析
  2. 概念结构设计
  3. 逻辑结构设计
  4. 物理结构设计
  5. 数据库实施
  6. 数据库的运行和维护

引言

数据库设计通常分为6个阶段:1、分析用户的需求,包括数据、功能和性能需求;2、概念结构设计:主要采用E-R模型进行设计,包括画E-R图;3、逻辑结构设计:通过将转换成表,实现从E-R模型到关系模型的转换;4、主要是为所设计的数据库选择合适的和存取路径;5、数据库的实施:包括编程、测试和试运行;6、数据库运行与维护:系统的运行与数据库的日常维护。),主要讨论其中的第3个阶段,即逻辑设计。

在数据库设计过程中,需求分析和概念设计可以独立于任何数据库管理系统进行,逻辑设计和物理设计与选用的DAMS密切相关。

1.需求分析阶段(常用自顶向下)

进行数据库设计首先必须准确了解和分析用户需求(包括数据与处理)。需求分析是整个设计过程的基础,也是最困难,最耗时的一步。需求分析是否做得充分和准确,决定了在其上构建数据库大厦的速度与质量。需求分析做的不好,会导致整个数据库设计返工重做。

需求分析的任务,是通过详细调查现实世界要处理的对象,充分了解原系统工作概况,明确用户的各种需求,然后在此基础上确定新的系统功能,新系统还得充分考虑今后可能的扩充与改变,不仅仅能够按当前应用需求来设计。

调查的重点是,数据与处理。达到信息要求,处理要求,安全性和完整性要求。

分析方法常用SA(Structured Analysis) 结构化分析方法,SA方法从最上层的系统组织结构入手,采用自顶向下,逐层分解的方式分析系统。

数据流图表达了数据和处理过程的关系,在SA方法中,处理过程的处理逻辑常常借助判定表或判定树来描述。在处理功能逐步分解的同事,系统中的数据也逐级分解,形成若干层次的数据流图。系统中的数据则借助数据字典(data dictionary,DD)来描述。数据字典是系统中各类数据描述的集合,数据字典通常包括数据项,数据结构,数据流,数据存储,和处理过程5个阶段。

2.概念结构设计阶段(常用自底向上)

概念结构设计是整个数据库设计的关键,它通过对用户需求进行综合,归纳与抽象,形成了一个独立于具体DBMS的概念模型。
设计概念结构通常有四类方法:

自顶向下。即首先定义全局概念结构的框架,再逐步细化。
自底向上。即首先定义各局部应用的概念结构,然后再将他们集成起来,得到全局概念结构。
逐步扩张。首先定义最重要的核心概念结构,然后向外扩张,以滚雪球的方式逐步生成其他的概念结构,直至总体概念结构。
混合策略。即自顶向下和自底向上相结合。

3.逻辑结构设计阶段(E-R图)

逻辑结构设计是将概念结构转换为某个DBMS所支持的数据模型,并将进行优化。

在这阶段,E-R图显得异常重要。大家要学会各个实体定义的属性来画出总体的E-R图。

各分E-R图之间的冲突主要有三类:属性冲突,命名冲突,和结构冲突。

E-R图向关系模型的转换,要解决的问题是如何将实体性和实体间的联系转换为关系模式,如何确定这些关系模式的属性和码。

4.物理设计阶段

物理设计是为逻辑数据结构模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。

首先要对运行的事务详细分析,获得选择物理数据库设计所需要的参数,其次,要充分了解所用的RDBMS的内部特征,特别是系统提供的存取方法和存储结构。

常用的存取方法有三类:

  1. 索引方法,目前主要是B+树索引方法。
  2. 聚簇方法(Clustering)方法。
  3. 是HASH方法。

5.数据库实施阶段

数据库实施阶段,设计人员运营DBMS提供的数据库语言(如sql)及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制和调试应用程序,组织数据入库,并进行试运行。

6.数据库运行和维护阶段

数据库应用系统经过试运行后,即可投入正式运行,在数据库系统运行过程中必须不断地对其进行评价,调整,修改。

项目开发中,数据库是怎么设计的?相关推荐

  1. ssh项目同时使用mysql跟sqlserver数据库_MSSQL_如何把sqlserver数据迁移到mysql数据库及需要注意事项,在项目开发中,有时由于项目 - phpStudy...

    如何把sqlserver数据迁移到mysql数据库及需要注意事项 在项目开发中,有时由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Serve ...

  2. 浅谈软件开发工具CASE在软件项目开发中发挥的作用认识

    浅谈软件开发工具CASE在软件项目开发中发挥的作用认识 内容摘要:阐述了CASE工具作为 一种开发环境在软件项目开发中所起到的开发及管理作用.CASE工具实际上是把原先由手工完成的开发过程转变为以自动 ...

  3. Android之---项目开发中网络框架的选择

    项目开发中网络框架的选择 Android常用的网路框架: 大多数应用程序基本都需要连接网络,发送一些数据给服务端,或者从服务端获取一些数据.通常在 Android 中进行网络连接一般使用 Scoket ...

  4. 在项目开发中应该遵循的准则

    根据我公司实际情况,大致列出在项目开发中应遵循的步骤原则.在各程序员遵循原则的情况下,方能开发出健壮有效的程序,且能提高自己的编程素质. 1.在项目开发初期应该有项目的详细原型.鉴于程序员文档能力有限 ...

  5. aspnet是前端还是后端_项目开发中无法回避的问题:前端和后端如何合作和并行工作?...

    项目开发中无法回避的问题:前端和后端如何合作和并行工作? 前端,后端要想非常愉快的合作开发和集成,那最开始第1步就是要定义一套共用的数据模型接口.这一步是所有工作可以顺利进行的前提. 数据模型接口之后 ...

  6. django 开发中数据库可以怎样优化

    django 开发中数据库可以怎样优化 (1)设计表时,尽量少使用外键,因为外键约束会影响插入和删除性能: (2)使用缓存,减少对数据库的访问: (3)在 orm 框架下设置表时,能用 varchar ...

  7. Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲

    Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲 Java生鲜电商平台:   微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性, ...

  8. 微服务开发中的数据架构设计 1

    GitChat 作者:陈伟荣 原文:微服务开发中的数据架构设计 关注微信公众号:「GitChat 技术杂谈」 一本正经的讲技术 [不要错过文末彩蛋] 前言 微服务是当前非常流行的技术框架,通过服务的小 ...

  9. 软件项目开发中的百分之九十效应

    在软件项目管理中,经常遇到这样的情况:进度到百分之九十后开始停滞,要花很长很长时间很大很大代价(甚至超过前百分之九十所花费的工时.工期)才能完成最后的百分之十.我把这种情况叫作:软件项目的百分之九十效 ...

  10. 视频教程:嵌入式stm32项目开发之心率检测仪的设计与实现

    视频教程:嵌入式stm32项目开发之心率检测仪的设计与实现 本课程主要基于心率检测仪的设计与实现讲解STM32开发技术,STM32开发板广泛应用于仪器仪表.家用电器.医用设备.航空航天.专用设备的智能 ...

最新文章

  1. 本科生顶刊发封面文章!他,是能成就导师的学生
  2. python推荐系统-基于Python的推荐系统的设计与实现
  3. 赛门铁克卸载工具_神奇的安卓恶意软件 xHelper:自卸载且无法删除
  4. boost::type_index模块实现存储有关类型的信息
  5. C# 中的DevExpress CheckedListBoxControl控件
  6. Windows下python安装pymyssql报错
  7. Java实现冒泡排序算法
  8. 食品工业中HACCP应用现状和未来发展(转载)
  9. 中国搜索20年:巨头百度的兴衰密码
  10. Maven 生命周期详解
  11. 计算机三级网络架构图,三级网络技术局域网基础:网络拓扑结构
  12. 华为云服务之公有云架构
  13. 1960-2018年世界各国GDP排名变化--Python动图实现
  14. 国庆车流激增,南京启用无人机报路况
  15. SPP、ASPP与PPM
  16. 802.11基本元素概念介绍
  17. 安利 3 个 pandas 数据探索分析神器!
  18. 无MAC法安装genymotion的解决办法_Invalid reply from server..
  19. 基于形状匹配的螺丝识别(完整代码)
  20. Android socket 实现 wify 通信,简易聊天室 (一)

热门文章

  1. C语言基础教程 之 如何定义变量!
  2. Magic value如何解决?
  3. 数加加众包实习生招募进行中
  4. str.substring(0,str.length() -1)用法
  5. django种表单post出现CSRF verification failed( CSRF验证失败 ) 的两种解决方案
  6. Jquery选择器:通过class名获取ID
  7. 操作系统基础知识用户态和内核态的区别
  8. 用三种方式安装Nginx
  9. 高效构建基于Python的商品评论文本挖掘网页APP
  10. VMware虚拟机三种联网方法及原理和Linux 三种网络