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

《数据库概述》 第七章 数据库设计

7.1 数据库设计概述

数据库设计:根据给定环境,构造优化逻辑模式和物理结构,据此建立数据库及其应用系统。以此满足各种用户的需求,包括信息管理数据操作

信息管理要求:在数据库中应该存储和管理哪些数据对象

数据操作要求:对数据对象需要进行哪些操作,例如增删改查。

数据库设计的目标:为用户和各种应用系统提供一个信息基础设施高效率的运行环境。

高效率的运行环境:数据库数据存取效率高、数据库存储空间的利用率高、数据库系统运行管理的效率高

7.1.1 数据库设计的特点

数据库建设基本规律:三分技术、七分管理、十二分基础数据(数据收集、整理、组织、更新)

将数据库结构设计和数据处理设计密切结合

7.1.2 数据库设计方法

  1. 手工试凑法:根据设计人员经验进行设计,缺乏科学理论和工程方法支持。维护代价大。
  2. 规范设计法:不断迭代和逐步求精
  • 新奥尔良方法:四个阶段,明确阶段功能。(需求设计-概念设计-逻辑设计-物理设计)

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

  • 3NF设计方法:消除传递函数依赖

  • 面向对象的数据库设计方法

  • 统一建模语言(UML)方法

7.1.3 数据库设计基本步骤

六个阶段:需求分析(要求)、概念结构设计(根据要求描述)、逻辑结构设计(按表格建立)、物理结构设计(怎样存放于计算机)、数据库实施、数据库运行和维护、

  • 需求分析和概念设计独立于任何数据库管理系统
  • 逻辑设计和物理设计与选用的数据库管理系统密切相关

7.1.4 数据库设计过程中的各级模式

需求分析阶段:综合各用户需求

概念设计阶段:独立于及机器特点,独立于各个数据库管理系统产品的概念模式

逻辑设计阶段:将E-R图转换成具体数据库产品支持的模型

物理设计阶段:根据数据库管理系统特点和处理需要,进行物理存储安排,形成内模式

7.2  需求分析

7.2.1 需求分析的任务

  1. 了解要处理的对象
  2. 充分了解原系统的工作概况
  3. 明确用户的各种需求
  4. 确定新系统的功能

重点是“数据”和“处理”:信息要求、处理要求、安全性和完整性要求

7.2.2 需求分析的方法

目的:调查清楚用户的实际需求并进行初步分析,最终与用户达成共识

步骤:调查组织情况 - 调查各部门业务情况 - 协助用户明确对新系统的各种要求

方法:跟班作业、开调查会、请专人介绍、询问、设计调查表请用户填写、查阅记录

结构化分析法(SA):从最上层的系统组织机构入手,自顶向下、逐层分析

7.2.3 数据字典

数据字典是关于数据库中数据的描述,不是数据本身。

数据字典内容:数据项、数据结构、数据流、数据存储、处理过程

数据项:不可再分的数据单位

数据项名、数据项含义说明、别名、数据类型、长度、取值范围、取值含义、与其他数据项的逻辑关系、数据项的联系

数据结构:反映了数据之间的组合关系

数据结构名、含义说明、组成

数据流:数据结构在系统内传输的路径

数据流名、说明数据流来源及去向、组成

数据存储:数据结构停留或保存的地方,也是数据流的来源和去向之一

数据存储名、输入的数据流、输出的数据流

处理过程:判定表或判定树来描述

7.3  概念结构设计

7.3.1 概念模型

特点:真实、易于理解、易于更改、易于各种数据模型转换

7.3.2 E-R模型

联系的度:参与联系的实体型的数目

1. 实体之间的联系

(1)两个实体型之间的联系

一对一联系:实体集A与实体集B具有一一对应联系

一对多联系:实体集A与实体集B又一对多联系

多对多联系:实体集A与实体集B具有多对多联系

(2)两个以上实体型之间的联系

同样有又一对一、一对多、多对多联系

(3)单个实体型内的联系

同样有又一对一、一对多、多对多联系

2.E-R图

E-R图提供了表示实体型、属性和联系的方法

实体型:用矩形

属性:用椭圆

联系:用菱形,需要写明(1:1)(1:n)等,联系可以有属性

7.3.3  扩展的E-R模型

7.3.4 UML

7.3.5 概念结构设计

准则:

(1)作为属性,不能再具有需要描述的性质。

(2)属性不能与其他实体具有联系,E-R图表示的联系是实体间的联系。

(属性只能对应一个实体)

E-R图的集成

第一步:合并。消除各部分的冲突,合并初步E-R图。

冲突:属性冲突(取值类型、范围)、命名冲突(同名异义、命名冲突)、结构冲突(在不同应用中具有不同抽象)

第二步:修改和重构。消除不必要的冗余,生成基本E-R图。

7.4  逻辑结构设计

7.4.1 E-R图向关系模型的转换

E-R图由实体型、实体的属性和实体型之间的联系三个要素组成

1.一个实体型转换为一个关系模式

关系属性:实体属性

关系的码:实体的码

2.实体型间的联系有不同情况

7.4.2 数据模型的优化

一般数据模型还需要根据数据库管理系统规定的模型进行转换

优化数据模型的方法:

①确定数据依赖

②对于各个关系模式之间的数据依赖进行极小化处理,消除冗余联系

③按照数据依赖理论对关系模式进行分析

④按照需求分析阶段得到的各种应用对数据处理的要求,分析是否合适

⑤关系模式分解,提高数据操作效率何空间利用率:水平分解(元组)、垂直分解(属性)

并不是规范化程度越高的关系就越优,范式高代价也高

7.4.3 设计用户子模式

定义用户外模式应考虑三方面:

①使用符合用户习惯的别名

②不同级别用户定义不同级别视图

③简化用户对系统的使用

7.5  物理结构设计

物理结构:数据库在物理设备的存储结构和存取方法

7.5.1 数据库物理设计的内容和方法

①准备工作:了解环境、数据库特征

②选择所需参数:数据库查询事务、更新事务、每个事务在各关系上的频率和性能

③关系数据库物理设计内容:为关系模式选择存取方法、设计关系、索引等数据库文件的物理存储结构

7.5.2 关系模式存取方法选择

数据库系统是多用户共享系统,对同一个关系要建立多条存取路径才嫩满足多用户的多种需求。

常用存取方法:

①B+数索引存取方法

②Hash索引存取方法

③聚簇存取方法

7.5.3 确定数据库的存储结构

确定数据存放位置和存储结构,需考虑存取时间、存储空间利用率和维护代价

1.确定存放位置

①易变和稳定分开

②经常存取和存取频率低分开

2.确定系统配置

7.5.4 评价物理结构

评价方法:①存储空间②存取时间③维护代价

7.6  数据库的实施和维护

7.6.1 数据的载入和应用程序的调试

组织数据入库是数据库实施最主要工作,在入库同时要调试应用程序

装载方法:

①人工方法

②计算机辅助数据入库

7.6.2 数据库的试运行

应用程序调试完成,有一小部分数据入库后,可以对数据库系统进行联合调试,也称数据库的试运行。

主要工作:

①功能测试

②性能测试

7.6.3 数据库的运行和维护

数据库维护,由数据库管理员完成:

①数据库的转储和恢复

②数据库安全性、完整性控制

③数据库性能监督、分析和改进

④数据库重组织(增删改查、存储结构)和重构造(调整模式)

相关文章:

  • 6.OpenResty系列之深入理解(二)
  • PHPStudy快速搭建网站并结合内网穿透远程访问本地站点
  • 添加一个编辑的小功能(PHP的Laravel)
  • 计算机创新协会冬令营——暴力枚举题目03
  • 063:vue中一维数组与三维数组联动,类似购物车增减
  • 查看Linux系统内存、CPU、磁盘使用率和详细信息
  • Linux du和df命令
  • web学习笔记(十四)
  • spring-mvc数据绑定和表单标签库(介绍)
  • 51-5 Transformer 论文精读
  • Java反射获取实例并填充注解值
  • 2022 年全国职业院校技能大赛高职组云计算赛项试卷部分解析
  • 对象的复制
  • 【Android Studio】APP练手小项目——切换图片APP
  • 2024开放式耳机测评推荐榜单曝光!超热门开放式耳机选购攻略
  • [译]CSS 居中(Center)方法大合集
  • Fastjson的基本使用方法大全
  • JavaScript的使用你知道几种?(上)
  • Java比较器对数组,集合排序
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • SpingCloudBus整合RabbitMQ
  • Swoft 源码剖析 - 代码自动更新机制
  • Vue 2.3、2.4 知识点小结
  • 分类模型——Logistics Regression
  • 欢迎参加第二届中国游戏开发者大会
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 如何选择开源的机器学习框架?
  • 什么软件可以剪辑音乐?
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 小程序开发之路(一)
  • 学习笔记:对象,原型和继承(1)
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​queue --- 一个同步的队列类​
  • #if #elif #endif
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (13)Hive调优——动态分区导致的小文件问题
  • (C语言)逆序输出字符串
  • (floyd+补集) poj 3275
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (ZT)一个美国文科博士的YardLife
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (原)本想说脏话,奈何已放下
  • (转)ObjectiveC 深浅拷贝学习
  • (转)scrum常见工具列表
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET Reactor简单使用教程
  • .net 生成二级域名
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET6 命令行启动及发布单个Exe文件
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .Net转前端开发-启航篇,如何定制博客园主题
  • .sdf和.msp文件读取
  • @staticmethod和@classmethod的作用与区别