-
数据库设计
目录
- 数据库设计概述
- 需求分析
- 概念结构设计
- 逻辑结构设计
- 物理结构设计
- 数据库的实施和维护
本文最初由security发布于security的博客,禁止任何形式的剽窃行为
转载原创文章请注明,转载自:security的博客
数据库设计
- 综合性的技术
- 涉及信息技术
- 数据库技术
- 软件工程技术
数据库设计概述
数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统使之能够有效的存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。
- 信息管理要求:在数据库中应该存储和管理哪些数据对象; 数据操作要求:对数据对象需要进行哪些操作,如查询、增、删、改、统计等操作;
- 数据库设计目标
为用户和各种应用系统提供一个信息基础设施的高效率的运行环境;
- 高效率的运行环境
- 数据库数据的存取效率高
- 数据库存储空间的利用率高
- 数据库系统运行管理的效率高
- 数据库设计的特点
- 数据库建设的基本规律
三分技术,七分管理,十二分基础数据
- 管理:
数据库建设项目管理
企业(即应用部门)的业务管理- 基础数据:
数据的收集、整理、组织和不断更新
- 结构(数据)设计和行为(处理)设计相结合
将数据库结构设计和数据处理设计密切结合
- 结构和行为分离的设计
- 传统的软件工程:重行为设计
忽视对应用中数据语义的分析和抽象,只要有可能就尽量推迟数据结构设计的决策- 早期的数据库设计:重结构设计
致力于数据模型和数据库建模方法的研究,忽视了行为设计对结构设计的影响;
- 大型数据库的设计是涉及多学科的综合性技术
- 要求设计人员具有以下多方面的知识和技能管理
- 计算机的基础知识
- 数据库的基本知识
- 软件工程的原理和方法
- 数据库设计的技术
- 序设计的方法和技巧
- 应用领域的专业知识
- 数据库设计的基本步骤
- 需求分析
- 概念结构设计
- 逻辑结构设计
- 物理结构设计
- 数据库实施
- 数据库的运行和维护
注意:需求分析和概念设计独立于任何数据库管理系统 逻辑设计和物理设计与选用的数据库管理系统密切相关
- 参加数据库设计的人员
- 系统分析人员和数据库设计人员
自始至终参与数据库设计,其水平决定了数据库系统的质量- 数据库管理员和用户代表
主要参加需求分析与和数据库的运行和维护- 应用开发人员
包括程序员和操作员
- 总结
- 设计一个完善的数据库应用系统,往往是上述6个阶段的不断反复,这个设计步骤既是数据库设计的过程,也包括数据库应用系统的设计过程
- 把数据的设计和对数据库中数据处理的设计紧密结合起来,两方面的各个阶段同时进行,相互参照,相互补充,以完善两方面的设计
需求分析
是否做得充分与准确,决定了构建数据库的速度和质量
- 需求分析就是分析用户的要求
- 是设计数据库的起点
- 结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用
- 需求分析的任务
- 详细调查现实世界要处理的对象(组织、部门、企业等)
- 充分了解原系统的功能工作概况
- 明确用户的各种需求
- 在此基础上确定新系统的功能
- 新系统必须充分考虑今后可能的扩充和改变
- 调查的重点是“数据”和“处理”,获得用户对数据库的要求
-
信息要求
-
处理要求
-
安全性和完整性要求
-
确定用户最终需求的难点
-
解决方法:不断深入和用户进行交流
-
调查用户需求的步骤
- 调查组织机构的情况
- 调查各部门的业务活动情况
- 协助用户明确对新系统的各种要求
- 确定新系统的边界
- 常用调查方法
- 跟班作业
- 开调查会
- 请专人介绍
- 询问
- 调查表
- 查阅记录
- 分析方法
- 结构化分析方法
- SA方法
采用自顶向下,逐层分解的方法分析系统
- 需求分析的过程
- 数据字典
- 数据字典是关于数据库中数据的描述,即元数据,不是数据本身
- 数据字典是在需求分析阶段监理,在数据库设计过程中不断修改、充实、完善
- 数据字典是进行详细的数据收集和数据分析所获得的主要结果
- 总结
- 把需求收集和分析作为数据库设计的第一阶段是十分重要的
- 第一阶段收集的基础数据(用数据字典表达)是下一步进行概念设计的基础
- 强调两点
- 设计人员应充分考虑到可能的扩充和改变,使设计易于更改,系统易于扩充
- 必须强调用户的参与
概念结构设计
综合、归纳、抽象形成一个独立于具体DBMS的概念模型,常用E-R图表示
-
概念模型:将需求分析得到的用户需求抽象为信息结构(即概念模型)的过程就是概念结构设计
-
概念模型的特点
- 能真实、充分地反映现实世界
- 易于理解
- 易于更改
- 易于向关系等转换
- 描述概念模型的工具
E-R图
- E-R模型
- 实体之间的联系
1对1
1对多
多对多- 提供了表示实体型、属性和联系的方法
实体型(矩形)属性(椭圆形)联系(菱形)
E-R图的集成
- 合并各E-R图,并消除冲突(属性冲突、命名冲突、结构冲突)
- 修改和重构
逻辑结构设计
将概念模型转换为某个数据库管理系统所支持的数据模型,并对其进行优化
- 转换内容
- E-R图由实体型、实体的属性和实体型之间的联系三个要素组成
- 关系模型的逻辑结构是一组关系模式的集合
- 将E-R图转换为关系模型:将实体型、实体的属性和实体型之间的联系转换为关系模式
- 数据模型的优化
- 数据库逻辑设计的结果不是唯一的
- 得到初步数据模型后,还应该适当的修改,调整数据模型的结构
- 关系数据模型的优化通常以规范化理论为指导
物理结构设计
为逻辑数据结构选取一个最适合应用环境的物理结构 包括存储结构和存取方法
- 数据库管理系统常用存取方法
- B+树索引存取方法的选择
关系上定义的索引数过多会带来较多的额外开销- HASH存取方法的选择
该关系大小动态改变- 聚簇存取方法的选择
- 评价物理结构方法
- 存储空间
- 存取时间
- 维护代价
数据库的实施和维护
根据逻辑设计和物理设计结果构建数据库 编写与调试应用程序 组织数据入库并进行试运行
- 数据的载入
组织数据入库是数据库实施阶段最主要的工作
- 数据装载方法
- 人工方法
- 计算机辅助数据入库
- 应用程序的调试
- 数据库应用程序的设计应该与数据设计并行进行
- 组织数据入库的同时还要调试应用程序
- 应用程序的设计、编码、调试的方法,需要具体学习软件工程课程
- 数据库的运行和维护
- 数据库的转储和恢复
- 数据库的安全性和完整性控制
- 数据库性能的监督、分析和改进
- 数据库的重组织与重构造
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式