当前位置: 首页 > news >正文

数据库设计_理论部分_设计方法设计过程

前言

        对数据库设计的大致流程进行梳理,用一些典型示例帮助理解.

        参考书:"<数据库原理及应用>(MySQL版)第二版".第10章部分内容

概述

        数据库设计包括广义和狭义的数据库设计.广义上数据库设计是数据库及其应用系统的设计.狭义上数据库设计是设计数据库本身.做应用的数据库设计者一般是狭义的数据库设计.数据库应用系统DBMS,与操作系统及硬件的交互,被封装在软件比如MySQL中,程序员会用程序指令即可.

数据库设计要解决的问题

        数据库设计一般不是一个非常结构化的过程,往往可以有多种不同方法,使用不同设计技术和工具

确定用户需求

        数据库的服务一般是面向组织单位的,组织中有多种不同类型的用户,设计者必须明确他们对系统的处理功能、数据类型、数据量、数据的使用和性能要求,以及系统的各种限制.用户的需求与系统限制是整个数据库设计与开发过程的基础与出发点.

数据库与用户关系示意图

注意:对数据库访问存在限制,并不是所有用户都能无限制访问数据库的任何内容.

当前需求和新的需求

        数据库或许不是一成不变的.数据库的结构及其实现不仅要满足用户的当前需求,还必须具有适应新的变化需要的灵活性.

        以上图为例,数据库有内容更新(加入了新的表),或者组织中有了新的用户,都会改变原有的数据库内容.而在数据库设计之初要考虑到这些变化可能带来的影响并提前做好准备.

数据库设计方法

数据库设计的目的

        1>首先,他应该能在合理的时间内以合理的工作量在给定条件下产生一个有效的数据库.

        ---这是站在"工程"的角度去看待数据库设计,数据库架构师需要考虑如何控制成本,进度和质量.

        2>有效数据库能实现各种用户需求,满足各种限制

        ---数据库设计的基本要求,见上图

        3>数据库以最简的数据模型表示

        ---尽可能减少数据冗余,但这条不是绝对,根据实际情况而定.

数据库设计的三种方法

1.基于E-R模型的数据库设计方法

        概念:基本思想是在需求分析的基础上,用E-R图构造一个反映现实世界中实体与实体之间联系的概念模型,然后将此概念转换成基于某一特定的DBMS的逻辑模型.

        ---主流的数据库设计方法,E-R模型可以模拟出现实的实体和联系,既符合用户的阅读需要,也便于数据库设计者开展工作.E-R方法设计原理见其他贴,E-R设计步骤见参考书P252

2.基于3NF的数据库设计方法

        概念:基本思想是在需求分析的基础上确定数据库模式中全部的属性与属性之间的依赖关系,将他们组织为一个单一的关系模式,然后将其投影分解,消除其中不符合3NF的约束条件,把其规范成若干个3NF关系模式的集合.

        ---从数据库最小单位:属性出发构建数据库.看起来他是一种"自底向上"的数据库组织方式,但在只有属性的情况下可能会造成关系模式(表)结构的不合理.

        示例如下:有个属性叫"选修课成绩",目前情况学生只能选修一门课(以后可修多门)

        选修课的E-R图如下:

如果是E-R模型为基础设计,他现在的关系模式(表)应如下:     

学号必修课一成绩必修课n成绩选修课名称选修课成绩

以后有多门选修课(上面的E-R图右边的1改成n),他的关系模式应如下(两张表):       

必修课成绩表 

表一
学号必修课一成绩必修课n成绩

选修课成绩表:

表二
选修课名称学号选修课成绩

如果是3NF的设计模式,关系模式和最早那张表相同.

乍一看,这是需求关系没分析清楚,和设计方法的选择没有关系.是的,您的感觉是对的.但是从两者对比后发现从E-R图的角度,这个问题很容易发现出来(1:1的关系用在这里适合吗?)并及时修改.如果用3NF设计不容易察觉.当然这个例子引出的另一个问题是:需求分析很重要.

3.计算机辅助数据库设计方法

        软件辅助设计数据库,相当于做了一个界面,本质上还是用E-R模型或者3NF来设计.

数据库设计方法的选择

        数据库设计方法之间不是互斥的,可以互相补充.例如用E-R模型设计为主,3NF方法为辅.但从根本上来说,数据库是为了满足需求而设计.不管是E-R方法或者3NF方法,他们设计出来的表是很"干净"的,绝对满足去掉数据冗余的要求,或者满足实体-联系模型.但是不是正是客户所需要的呢?

        举个例子,公司CEO除了对原材料的每日进价外,还想看每日产品的良品率,他需要的表如下:

考勤原料进价零件A良品率产品良品率
每日工作汇报表

        站在程序员的角度,从"人事部","财务部","生产部"的表中把对应数据取出来,做一张表给他.当然表的内容可以用数据库函数来做.但表的设计必须事先沟通好,不可能让用户进入3个部门自己看.

数据库设计过程

        分为规划阶段,需求分析,设计,实现,测试,运行维护这6个阶段,和软件设计是对应的.

小结

        数据库设计方法和设计过程的分析

http://www.dtcms.com/a/461437.html

相关文章:

  • 【三维重建-算法解析】MVS(Multi-View Stereo,多视图立体)
  • 【GPT5系列】ChatGPT5 提示词工程指南
  • 61850协议GOOSE通信AB网通信
  • wordpress开启子站找公司做网站有什么好处
  • SpringBoot+Redis实现电商秒杀方案
  • 电子商务网站模板 html数据型网站
  • 【QT常用技术讲解】QSerialPort串口开发,包含文件发送功能
  • STM32 外设驱动模块【含代码】:SG90 舵机模块
  • 深圳城乡和住房建设局网站263企业邮箱官网登录
  • K8s概念基础(一)
  • 计算机视觉毕业设计选题该如何选?——根据自身情况合理选择
  • 返利网一类的网站怎么做深圳好看的网站建设哪家公司好
  • 2025-2031年全球 MT 插芯市场全景分析报告:技术演进、供需格局与投资前景
  • 优化的网站做域名跳转做网站现在什么尺寸合适
  • 北京网站建设中企云达电商平台项目运营策划方案
  • 符号主义对人工智能自然语言处理中深层语义分析的影响与启示
  • Excel 常用功能自救手册:遇到问题快速排查指南 (个人备忘版)
  • Excel 数据自动校对:AI 助力精准对比与高效复核
  • 迅为RK3568开发板OpenHarmony系统南向驱动开发手册-实操-HDF驱动配置LED-新增topeet子系统
  • 提供佛山顺德网站建设宜宾注册公司
  • AI原生应用架构白皮书 - AI应用开发框架及上下文工程
  • 北京品牌网站建设公司排名广州有哪些建筑公司
  • [教学资料] Web架构 | 前后端开发模式演进:从混合到分离的技术之路
  • IDEA2025无法更新使用Terminal控制台
  • LLaVA-OneVision论文阅读
  • CentOS 7.9安装OpenSSL 1.1.1w
  • JavaWeb后端实战(MySql基础)
  • 网站设计 三把火科技家装商城系统网站建设
  • 新书速览|AI摄影与创意设计:Stable Diffusion-ComfyUI
  • 网站源码是啥wordpress 移植