数据库系统原理(第三章数据库设计 )

一、数据库设计概述

数据库的生命周期

 

 

 数据库设计的目标:

  • 满足应用功能需求(存、取、删、改),
  • 良好的数 据库性能(数据的高效率存取和空间的节省 共享性、完整性、一致性、安全保密性)

数据库设计的内容

 

 

 数据库设计的方法

  • 直观设计法( 最原始的数据库设计方法)
  • 规范设计法:(新奥尔良设计方法:需求分析、概念结构设计、逻辑结构设计、物理结构设计 ; 基于E-R模型的数据库设计方法 ;基于第三范式的设计方法,是一类结构化设计方法)
  • 计算机辅助设计法( 辅助软件工程工具)

数据库设计的过程

 

 

二、数据库设计的基本步骤

需求分析(数据库设计的起点)

  • 目标:是了解与分析用户的信息及应用处理的要求,并将结果按一定格式整理 而形成需求分析报告。
  • 作用:该分析报告是后续概念设计、逻辑设计、物理设计、数据库建立与维护的依据。

需求分析的步骤:

  • 确定数据库范围(数据库的第一项工作)
  • 应用过程分析---了解并分析数据与数据处理间的关系
  • 收集与分析数据
  • 编写需求分析报告

********************确定数据库范围(数据库的第一项工作)**************

(1)有效地利用计算机设备及数据库系统的潜在能力; (2)提高数据库的应变能力; (3)避免应用过程中对数据库做太多或太大的修改; (4)延长数据库的生命周期。

********************应用过程分析********************************************

应用过程分析的结果是数据库结构设计的重要依据

(1)用到哪些数据; (2)数据使用的顺序; (3)对数据作何处理和处理的策略以及结果;

******************************收集与分析数据*******************************

数据收集与分析的任务是了解并分析数据的组成格式及操作特征,每个数 据元素的语义及关系等,并将它们收集起来整理归档。

 

分析内容:

静态结构 --- 不施加应用操作于其上时数据的原始状况(数据的( 静态结构 )是指不施加应用操作于其上时数据的原始状况, 这可通过数据分类表和数据元素表进行说明)

  • 数据分类表:用于数据的总体描述
  • 数据元素表:指通常意义下的数据项或属性

    

动态结构 ---将应用操作施加于数据之上后数据的状况

 

  • 任务分类表:一个任务指为完成某一特定处理功能的相对独立的操作序列
  • 数据特征操作表:用以描述任务和数据之间的关系,它包括不同任务对数据执行不 同操作的频率

    

数据约束 ---使用数据时的特殊要求

  • 1)数据的安全保密性
  • 2)数据的完整性
  • 3)响应时间
  • 4)数据恢复

**************************编写需求分析报告*****************************

 

 

概念结构设计(概念模型):独立于任何软件与硬件  主要目标:最大限度的满足应用需求;关系的规范化理论主要用于概念设计阶段。

  • 实体分析法 (自顶向下法)
  • 属性综合法 (自底向上法)
  • 概念模型 (自顶向下) 

逻辑结构设计:目标将概念模型转换为等价的、并为特定DBMS所支持数据模 型的结构;在基本表的基础上再建立必要的视图,形成数据的外模式

 

 

物理设计:具体任务主要是确定数据库在存储设备上的存储结构及存取方法, 因DBMS的不同还可能包括建立索引和聚集,以及物理块大小、缓冲区个 数和大小、数据压缩的选择等。

数据库实施:

  • 加载数据(收集、分类、整理、校验、输入等)  输入与校验 不是由人工完成
  • 应用程序 设计
  • 数据库试 运行:有利于工作人员掌握并熟悉系统; 有利于正式运行时避免人为的操作不当等损害。

数据库运行与维护:保证数据库的正常运行;系统维护中最困难的工作是 数据库重组与重构。

 三、关系数据库设计方法

关系数据库设计过程与各级模式

 

 

 

 *************************E-R图的表示方法*********************************

 

 

 

 

 

概念结构设计方法:

1、局部信息结构设计   

  •   确定局部范围:局部范围主要依据需求分析报告中标明的用户视图范围来确定;往往与子模式范围相对应。
  •        选择实体:数据分类表是选择实体的直接依据。 实体选择的最大困难是如何区别实体与属性
  •   选择实体 的关键字 属性:实体的存在依赖于其关键字的存在。
  •   确定实体 间联系:数据间的联系必须在概念设计时确定。
  •   确定实体 的属性:属性分为标识属性和说明属性

2、全局信息结构设计

3、逻辑结构设计方法

  • 将E-R图转换为关系模型
  • 对关系数据模型进行优化
  • 设计面向用户的外 模式

 

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

  • 一个实体型转换为一个关系模式,实体的属性作为关系的属性,实体的码作为关系的码
  • 一个一对一联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并
  • 一个一对多联系可以转换为一个独立的关系模式,也可以与N端对应的关系模式合并
  • 一个多对多联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为 关系的属性
  • 三个或以上实体间的一个多元联系可以转换为一个关系模式
  • 具有相同码的关系模式可合并

数据模型的优化:

数据库逻辑设计的结果,不是唯一的。

  • 1)确定各属性间的函数依赖关系
  • 2)对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。
  • 3)判断每个关系模式的范式,根据实际需要确定最合适的范式。
  • 4)按照需求分析阶段得到的处理要求,分析这些模式对于这样的应用环境 是否合适,确定是否要对某些模式进行合并或分解。
  • 5)对关系模式进行必要的分解,提高数据操作的效率和存储空间的利用率

设计用户子模式

  • 1)可以通过视图机制在设计用户视图时,重新定义某些属性的别名,使 其更符合用户的习惯,以方便使用。
  • 2)可以对不同级别的用户定义不同的视图,以保证系统的安全性。
  • 3)简化用户对系统的使用。

物理设计方法

  • 建立索引(逻辑连接  ):静态建立 索引 、  动态建立 索引
  • 建立聚集(物理聚集:聚集是将相关数据集中存放的物理存储技术。 数据聚集结构的一种有效方式是块结构方式。 数据聚集可在一个或多个关系上建立。

各个局部ER图的冲突

 

转载于:https://www.cnblogs.com/jalja/p/11595375.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248054.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ajax — 第五天

Ajax-05 xhr(level-2)新特性 responseType属性和response属性 responseType: 表示预期服务器返回的数据的类型 “” ,默认空text,和空一样,表示服务器返回的数据是字符串格式json,表示服务器返回的是js…

Swift傻傻分不清楚系列(十)枚举

本页内容包含: 枚举语法(Enumeration Syntax)使用 Switch 语句匹配枚举值(Matching Enumeration Values with a Switch Statement)关联值(Associated Values)原始值(Raw Values&…

数据库系统原理(第四章:SQL与关系数据库基本操作 )

一、SQL概述 sql是结构化查询语言(Structured Query Language,SQL)是专门用来与数 据库通信的语言,它可以帮助用户操作关系数据库。 SQL的特点: SQL不是某个特定数据库供应商专有的语言; SQL简单易学 &…

selenium操作浏览器窗口最大化和刷新

实际测试过程中经常遇到打开一个页面并不是全屏显示,但是却希望它能够全屏显示或者新增一条记录后需要刷新一下看能不能再列表中正常显示。 于是就有了今天的关于对浏览器窗口的最大化和刷新页面。需要说明的一点:所有和python相关的记录都是基于3.6版本…

Git安装步骤+Mac终端配置

Git安装步骤 其实可以直接略过。因为安装的时候,一路 next 即可。 注意,安装路径中不能出现中文。安装完成后,不得更改安装路径。 检查Git是否安装成功 在任何文件夹,空白处,右键。如果看到 “Git Bash Here”&#xf…

数据库系统原理(第5章:数据库编程)

一、存储过程 概念:存储过程是一组为了完成某项特定功能的SQL语句集, 其实质就是一段存储在数据库中的代码。 它可以由声明式的sql语句和过程式sql语句组成。 特点: 可增强SQL语言的功能和灵活性良好的封装性高性能可减少网络流量可作为一种安…

科学-中医:儒医

ylbtech-科学-中医:儒医"儒医"是一种历史悠久的社会文化现象。阐释了"儒医"的三重境界,即良医、大医、圣医。"良医"注重技,属于知识论,追求的是"真";"大医"注重德,属于道德论,追求的是"善";"圣医…

Ajax — 第六天

Ajax-06 GET和POST的区别 字面意思不同 GET 是获取意思。想从服务器获取数据,用GET方式的请求POST是邮递、邮寄意思。如果提交数据到服务器,用POST方式 请求参数位置不同 GET 请求参数会和url拼接到一起,形如 api/getbooks?id2&age3PO…

iOS Tips 模拟器屏幕截图

当我们发布app到AppStore的时候,在itunes connect里面,苹果官方要求我们提供各种尺寸的屏幕截图。由于受到硬件条件的限制,我们不可能在每个真实的物理机器上测试并截图,相反如果我们能直接在模拟器上进行屏幕截图的话&#xff0c…

数据库系统原理(第6章:数据库安全与保护)

一、数据库完整性 数据库完整性是指数据库中数据的正确性和相容性。 完整性约束条件的作用对象 列级约束: 包括对列的类型、取值范围、精度等的约束元组约束: 指元组中各个字段之间的相互约束表级约束: 指若干元组、关系之间的联系的约束定义…

.net core WebApi 使用Swagger生成API文档

关于 Swagger Swagger能成为最受欢迎的REST APIs文档生成工具之一,有以下几个原因: Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API。Swagger 可以生成客户端SDK代码用于各种不同的平台上的实现。Swagger 文件可…

Git — 初体验

准备工作 版本管理软件 作用 记录代码的版本实现多人协作 分类 集中式,典型代表 SVN分布式,典型代表 Git 注册远程仓库账号 远程仓库相当于中央服务器我们需要在github上或码云上注册一个账号,用于创建远程仓库使用注册的时候&#xff0…

iOS CoreTelephony框架介绍与使用案列

昨晚看一篇文章时看到了私有API这个词,貌似开发者对私有API的使用很反感于是果断百度谷歌,以下是Stackoverflow中关于Private Frameworks的一个解释: Private frameworks are frameworks which you are not allowed to use. They are not exp…

JS数组的迭代器方法

迭代器forEachevery一、迭代器方法 迭代器方法, 这些方法对数组中的每一个元素应用一个函数,可以返回一个值,一组值或一个新数组。 不生成新数组的迭代器方法 1.forEach() forEach()输出 forEach输出结果2.every() 该方法按接受一个返回值为布…

Git 笔记

三个区域 下面三个区域,是Git虚拟的区域,看不到,摸不着。 工作区 工作区,指的是使用Git管理后的文件,这些文件显示在磁盘上,供我们使用或修改的区域。所以,粗略的说,项目文件夹就是…

git -- 练习的笔记

gitgitee.com:my_exercises/my_exercises.githttps://gitee.com/my_exercises/my_exercises/invite_link?invite3ab56c724a0aed34ae2bd193ce87e741e67fe05ee029cc01b7993663152babc57d76203fdafbbb42e766b0d826817bc91.在任意位置右键打开 2.初始化设置 3.添加远程仓库地址 4.…

Swift傻傻分不清楚系列(十二) 属性

本页包含内容: 存储属性(Stored Properties)计算属性(Computed Properties)属性观察器(Property Observers)全局变量和局部变量(Global and Local Variables)类型属性&a…

GIT — 使用回顾

回顾Git的使用 记录每次的变更 工作区 --> 暂存区 git add . / git add 文件 文件夹 .... 工作区 --> 暂存区/本地仓库 前提条件:文件曾经被添加到暂存区或提交到仓库git commit -a -m 提交说明 暂存区 --> 本地仓库 git commit -m 提交说明 / git commi…

Ajax — 大事件项目(第一天)

应用的前端技术 Ajax (重要) — jQuery方式接口请求Layui 框架使用HTML CSS JS 项目说明和演示 线上 DEMO 项目地址:http://www.liulongbin.top:8086/项目的 API 接口地址: https://www.showdoc.cc/escook?page_id3707158761215217 项目请求根路径…

iOS开发实用技巧—Objective-C中的各种遍历(迭代)方式

说明: 1)该文简短介绍在iOS开发中遍历字典、数组和集合的几种常见方式。 2)该文对应的代码可以在下面的地址获得:https://github.com/HanGangAndHanMeimei/Code 一、使用for循环 要遍历字典、数组或者是集合,for循环是…