5-2数据库设计

5-2数据库设计

tags:数据库

基本步骤

步骤:

1. 需求分析阶段

进行数据库设计首先必须准确了解与分析用户需求.需求分析是整个设计过程的基础,是最困难和最耗费时间的一步.

2. 概念结构设计阶段

概念设计是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,行程一个独立于具体数据库管理系统的概念模型.

在概念结构设计阶段行程独立于机器特点,独立于各个关系数据库管理系统产品的概念模式,一般用ER图表示

3. 逻辑结构设计阶段

逻辑结构设计是将概念结构转为某个数据库管理系统所支持的数据模型,并对其进行优化.

在逻辑结构设计阶段将ER图转为具体的数据库产品支持的数据模型,如关系模型,行程数据库逻辑模式,然后根据用户处理的要求,安全性的考虑,在基本表的基础上再建立必要的视图,行程数据库的外模式.

4. 物理结构设计阶段

物理结构设计是为逻辑数据模型选取一个最合适应用环境的物理结构.报过存储结构和存取方法.

在物理结构设计阶段,根据关系数据库管理系统的特点和处理的需要进行物理存储安排,建立索引,行程数据库内模式

5. 数据库实施阶段

在数据库实施阶段,设计人员运用数据库管理系统提供的数据库语言及宿主语言,根据逻辑设计和物理设计的结果建立数据库,编写与调试应用程序,组织数据入库,并进行试运行

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

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

需求分析

需求分析调查的重点是”数据”和”处理”,通过调查、收集与分析,获得用户对数据库的如下要求:

1. 信息要求.指用户需要从数据库中获得信息的内容与性质.由信息要求可以导出数据要求,即在数据库中需要存储哪些数据.

2. 处理要求.指用户要完成的数据处理功能,对处理性能的要求.

3. 安全性与完整性要求.

概念设计

将需求分析得到的用户需求抽象为信息结构的过程就是概念结构的设计.

它是整个数据库设计的关键.

概念模型的主要特点

特点:

1. 能真实,充分的反映现实世界,包括事物和事物之间的联系,能满足对数据的处理要求,是现实世界的一个真是模型.

2. 易于理解,可以用它和不熟悉计算机的用户交换意见.

3. 易于更改,当应用环境的应用要求概念时容易对概念模型修改和扩充.

4. 易于向关系,网状,层次等各种数据模型转换.

ER模型

实体之间的联系

联系:

1. 两个实体型之间的联系,一对一,一对多,多对多.

2. 两个以上的实体型之间的联系,一对一,一对多,多对多.

3. 单个实体型内的联系,一对一,一对多,多对多.

ER图画法

画法:

1. 实体型用矩形表示,矩形框内写明实体名.

2. 属性用椭圆形表示,并用无向边将其与相应实体型连接起来.

3. 联系用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边上表上联系的类型.

4. 如果一个实体型的存在依赖于其他实体型存在,则这个实体型叫弱实体型,否则叫强实体型.

ER图的集成

集成方法:

1. 合并,解决各分ER图之间的冲突,将ER图合并起来生成初步ER图.

各个局部应用所面向的问题不同,且通常是由不同的设计人员进行局部视图设计,这就导致各个子系统的ER图之间必定会存在许多不一致的地方,称之为冲突.

2. 修改和重构,消除不必要的冗余,生成基本ER图.消除属性冲突,命名冲突,结构冲突.

不是所有的冗余数据与冗余练习都必须加以消除,有时为了提高效率,不得不以冗余信息作为代价.因此在设计数据库概念结构时,哪些冗余ixnxi必须消除,哪些冗余信息允许存在,需要根据用户的整体需求来确定。

逻辑设计

逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构.

关系模型转换方法

转换方法:

1. 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并

2. 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并.

3. 一个m:n联系转为一个关系模式,与该联系相关联的实体的码以及联系本身的属性均转换为关系的属性.

4. 三个或者三个以上的实体间的一个多元联系可以转换为一个关系模式.

5. 具有相同码的关系模式可合并.

关系模型的优化

数据库逻辑设计的结果不是唯一的.为了进一步提高数据库应用系统的性能,还应该根据应用需要适当的修改,调整数据模型的结构,这就是数据哦行的优化.

优化方法:

1. 确定依赖.按照需求分析阶段得到的语义,分别写出每个关系模式内部各个属性之间的数据依赖以及不同关系模式属性之间的数据依赖.

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

3. 按照数据依赖的理论对关系模式逐一进行分析,考察是否存在部分函数依赖,传递函数依赖,多值依赖等,确定各个关系模式分别属于第几范式.

4. 根据需求分析阶段得到的处理要求分析对于这样的应用环境这些模式是否合适,确定对某些模式进行合并或者分解.

5. 对关系模式进行必要的分解,提高数据操作效率和存储空间利用率.常用的两种分解方法是水平分解和垂直分解.

设计用户子模式

将概念模型转换为全局逻辑模型后,还应该根据局部应用需求,结合具体关系数据库管理系统的特点设计用户的外模式.

目前关系数据库管理系统一般都提供了视图概念,可以利用视图公呢个设计更符合用户需要的用户外模式.

定义数据库全局模式主要草丛时间,空间,易维护等三个角度触发.而定义用户外模式时一般考虑以下几个方面:

1. 使用更符合用户习惯的别名.

2. 对不同级别的用户定义不同的视图,以保证系统的安全性.

3. 简化用户对系统的使用.

名词解释

水平分解

水平分解是把基本关系的元组分为若干子集合,定义每一个子关系,以提高系统的效率.根据80/20原则,一个大关系中经常被使用的数据只是关系的一部分,约20%,可以把经常使用的数据分解出来,行程一个子关系,如果关系R上具有n个事务,而且多数事务存取的数据不相交,则R可以分解为少于或者等于n个子关系,让每个事务的存取对应一个关系.

垂直分解

垂直分解是把关系模式R的属性分解为若干子集合,形成若干子关系模式,垂直分解的原则是,将经常在一起使用的属性从R中分解出来,行程一个子关系模式.垂直分解可以提高某些事务的效率,但也可能使另一些事务不得不进行链接操作,从而降低了效率,因此是否进行垂直分解取决于分解后R上的所有事务的总效率时候得到了提高.垂直分解需要确保无损连接性和保持函数依赖,即保证分解后的关系具有无损连接和保持函数依赖性.

数据字典

数据字典在需求分析阶段被建立。

数据字典是一个预留空间,一个数据库,这是用来储存信息数据库本身。

数据字典还有另一种含义,是在数据库设计时用到的一种工具,用来描述数据库中基本表的设计,主要包括字段名、数据类型、主键、外键等描述表的属性的内容。

数据字典的组成:

1、数据项

2、数据结构

3、数据流

4、数据存储

5、处理过程

数据字典各部分的描述

①数据项:数据流图中数据块的数据结构中的数据项说明

数据项是不可再分的数据单位。对数据项的描述通常包括以下内容:

数据项描述={数据项名,数据项含义说明,别名,数据类型,长度,

取值范围,取值含义,与其他数据项的逻辑关系}

其中“取值范围”、“与其他数据项的逻辑关系”定义了数据的完整性约束条件,是设计数据检验功能的依据。

若干个数据项可以组成一个数据结构。

②数据结构:数据流图中数据块的数据结构说明

数据结构反映了数据之间的组合关系。一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或由若干个数据项和数据结构混合组成。对数据结构的描述通常包括以下内容:

数据结构描述={数据结构名,含义说明,组成:{数据项或数据结构}}

③数据流:数据流图中流线的说明

数据流是数据结构在系统内传输的路径。对数据流的描述通常包括以下内容:

数据流描述={数据流名,说明,数据流来源,数据流去向,  组成:{数据结构},平均流量,高峰期流量}

其中“数据流来源”是说明该数据流来自哪个过程,即数据的来源。“数据流去向”是说明该数据流将到哪个过程去,即数据的去向。“平均流量”是指在单位时间(每天、每周、每月等)里的传输次数。“高峰期流量”则是指在高峰时期的数据流量。

④数据存储:数据流图中数据块的存储特性说明

数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。对数据存储的描述通常包括以下内容:

数据存储描述={数据存储名,说明,编号,流入的数据流,流出的数据流,  组成:{数据结构},数据量,存取方式}

其中“数据量”是指每次存取多少数据,每天(或每小时、每周等)存取几次等信息。“存取方法”包括是批处理,还是联机处理;是检索还是更新;是顺序检索还是随机检索等。

另外“流入的数据流”要指出其来源,“流出的数据流”要指出其去向。

⑤处理过程:数据流图中功能块的说明

数据字典中只需要描述处理过程的说明性信息,通常包括以下内容:

处理过程描述={处理过程名,说明,输入:{数据流},输出:{数据流},  处理:{简要说明}}

其中“简要说明”中主要说明该处理过程的功能及处理要求。功能是指该处理过程用来做什么(而不是怎么做);处理要求包括处理频度要求,如单位时间里处理多少事务,多少数据量,响应时间要求等,这些处理要求是后面物理设计的输入及性能评价的标准。

物理结构设计

数据库在物理设备上的存储结构与存取方法成为数据库的物理结构,它依赖于选定的数据库管理系统.为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是数据库的物理设计.

通常关系数据库物理设计的主要内容包括为关系模式选择存取方法, 以及设计关系,索引等数据库文件的物理存储结构.

关系模式存取方法选择

存取方法是快速存取数据库中数据的技术.数据库管理系统一般提供多重存取方法.常用的存取方法为索引方法和聚簇方法.

所谓存取方法的选择,实际上就是根据应用要求确定对关系的哪些属性建立索引,哪些属性建立组合索引,哪些索引要设计为唯一索引等.

B+树索引存取方法的选择

  1. 如果一个属性或者属性组经常在查询条件中出现,则考虑在这个属性或属性组上建立索引.
  2. 如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引.
  3. 如果一个属性或者属性组经常在连接操作的连接条件中出现,则考虑在这个属性上建立索引.

hash索引存取方法的选择

如果一个关系的属性主要出现在等值连接条件中或主要出现在等值比较选择条件中,而且满足以下两个条件之一,则此关系可以夏煊泽hah存取方法.

1. 一个关系的大小可以预知,而且不变.

2. 关系的大小动态改变,但数据管理系统提供了动态hsh存取的方法.

聚簇存取方法的选择

为提高某个属性或者属性组的查询速度,把这个或这些属性上具有相同值的元组几种存放在连续的物理块中称为聚簇.该属性成为聚簇码.

聚簇功能可以大大提高某个属性或者属性组的查询速度

例如,要查询信息系的所有学生名单,设信息系有500名学生,在极端情况下,这500名学生所对应的数据元组分布在500个不同的物理块上,尽管对学生关系已经按照所在系建立索引,由索引可以很快找到元组标志,然而在由元组去访问数据块时就要存取500个物理块,执行500次I/O操作.如果将同一系学生元组几种存放,则每读一个物理块可以得到多个满足查询条件的元组,从而显著的减少了访问磁盘的次数.

必须强调的是,聚簇智能提高某些应用的性能,而且建立与维护聚簇的开销是相当大的.对于已有关系建立聚簇将导致关系中元组移动其物理存储位置,并使此关系上原来建立的所有索引无效,必须重建.

时间: 2024-08-24 10:32:51

5-2数据库设计的相关文章

Java精品高级课,架构课,java8新特性,P2P金融项目,程序设计,功能设计,数据库设计,第三方支付,web安全,视频教程

36套精品Java架构师,高并发,高性能,高可用,分布式,集群,电商,缓存,性能调优,设计模式,项目实战,P2P金融项目,大型分布式电商实战视频教程 视频课程包含: 高级Java架构师包含:Spring boot.Spring  cloud.Dubbo.Elasticsearch,Redis.ActiveMQ.Nginx.Mycat.Spring.MongoDB.ZeroMQ.Git.Nosql.Jvm.Mecached.Netty.Nio.Mina.java8新特性,P2P金融项目,程序设计,

数据库设计时不得不违背三范式的情景

1.在进销存系统中,订单信息中关联到好多其他的基本信息,比如:客户,付款方式,货运方式等,这些信息是有专门表进行维护的,在下订单时也是用下拉框选择的,但在保存订单信息时,不能只记录所谓的外键ID,而是应该同时记录名称等其他的信息. 这是因为订单不能因为没有了客户ID或是付款方式ID而不知道客户与付款方式了.对于订单这种客观存在的事物,是具有一定的历史性质的,因此在设计时应该与其他的关联信息可以“断开”,这也就是保证了订单的独立性. 摘自:http://www.cnblogs.com/tongtk

从零开始编写自己的C#框架(9)——数据库设计与创建

对于千万级与百万级数据库设计是有所区别的,由于本项目是基于中小型软件开发框架来设计,记录量相对会比较少,所以数据库设计时考虑的角度是:与开发相结合:空间换性能:空间换开发效率:减少null异常......当然不同的公司与项目要求不同,初学者要学会适应不同的项目开发要求,使用本框架开发时,必须严格按照本章节的要求来设计数据库,不然可能会产生不可控的异常. 从零开始编写自己的C#框架 数据库设计规范   文件状态: [√] 草稿 [  ] 正式发布 [  ] 正在修改 文件标识: C#框架 当前版本

数据库设计的三大范式

数据库设计的三大范式 为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式. 在实际开发中最为常见的设计范式有三个: 1.第一范式 第一范式是最基本的范式.如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式. 第一范式的合理遵循需要根据系统的实际需求来定.比如某些数据库系统中需要用到"地址"这个属性,本来直接将"

MySql三大范式与数据库设计和表创建常用语句

[数据库设计的三大范式] 1.第一范式(1NF First Normal Fromate):数据表中的每一列(字段),必须是不可拆分的最小单元.也就是确保每一列的原子性. 例如: userInfo: '山东省烟台市 13181621008' => userAds:'山东省烟台市' tel:'13181621008' 2.第二范式(2NF):满足1NF后,要求:表中所有的列,都必须功能依赖于主键,而不能有任何一列与主键没有关系.(一张表值描述一件事情) 3.第三范式(3NF):满足2NF后,要求:

MVC实战之排球计分(一)—— 需求分析与数据库设计

一.需求分析: 这个程序是排球计分程序,其业务非常简单,具体如下: 1.本程序可以选择用户身份,通过不同角度记录比赛分数. 2.不同身份记录的比赛成绩将会存储在不同的数据表(目前适合运动员和观众使用). 3.用户键入数据后,可以继续对数据进行操作(如:删除.修改.查看详情). 4,不同的身份的用户 ,不能修改非己的数据.只能修改自己的数据. 这个项目的用例图如下: 数据库设计:设计数据表之前,首先进行实体和关系的识别与确定.通过需求分析,可以观察得出,本项目的实体有:观众,运动员.(观众可以修改

02-大鸭梨博客系统数据库设计及Dapper的使用

毫无疑问,数据库的设计在一个系统中起了至关重要的作用.我们都知道,系统设计分为两部分,或者说是两个阶段,即数据库设计和功能设计.构建一个完善的系统需要这两个阶段的充分考量.周密设计.合理联接以及密切配合.数据库设计是整个系统的根基,它关乎系统功能的实现.稳定性.扩展性等多个方面,可见数据库设计的重要性. 那么好的数据库设计应该具备什么样的基本条件呢,大致有这么几点: 1.充分体现系统的需求 不管是数据库设计还是功能设计,我们最终的目的都是要实现客户的业务需求,所以数据库设计的第一准则就是要符合业

学生信息管理系统1(数据库设计篇)

1.系统概述 本次是做一个学生管理系统,在学了数据库之后,希望通过这个系统把所学知识应用与实际项目中去.加强自己的熟练程度. 开发背景:具备数据库,C#的相关知识储备,掌握基本的html知识. 用途:仅作练习用.通过一门语言,将数据库展现出来. 2.功能需求分析 系统概念层设计:功能用例图如下 1. 登录功能:用于身份认证 2. 数据操作:信息查询,数据的增删改.a) 数据操作里,管理员具备所有的操作权限.学生具有选课和查看的功能.以及可以修改自己的个人信息.3. UI设计 3.数据库设计 E-

数据库设计【笔记】

数据库设计 一.设计步骤   1.收集信息(来源项目需求分析)   2.标识实体(一般是需求分析中需要管理的信息名词)   3.标识每个实体的属性   4.实体之间的关系二.画e-r图(实体关系图)   1.矩形表示实体   2.椭圆表示实体的属性   3.菱形表示实体之间的关系   4.用直线连接实体和属性,实体和实体之间的关系三.实体之间的关系:   1.一对一  1:1          车和车位   2.一对多  1:N (1:M) 客人和客房   3.多对多  N:M         

数据库设计系列之二

首先来了解下数据库设计是什么? 通俗的讲就是,根据业务系统的具体需要,结合我们所选用的DBMS(数据库管理系统),为这个业务系统构造出最优的数据存储模型.并建立好数据库中的表结构及表与表之间的关联关系的过程.使之能有效的对应用系统中的数据进行存储,并可以高效的对已经存储的数据进行访问. 接下来是为什么要进行数据库设计? 数据库设计的一些步骤: 一.需求分析: 数据库需求的作用点: 1.数据是是什么? 2.数据有哪些属性? 3.数据和属性各自的特点有哪些? 二.逻辑设计: 使用ER图对数据库进行逻