实际项目的数据库设计基本方法

目录
实际项目的数据库设计基本方法
一、 数据库设计规范化方法

  1. 需求分析阶段(常用自顶向下)
  2. 概念结构设计阶段(常用自底向上)
  3. 逻辑结构设计阶段
  4. 物理设计阶段
  5. 数据库实施阶段
    6.数据库运行和维护阶段
    二、 数据库设计实例
  6. 数据库数据分析
  7. 数据库概念结构设计
  8. 数据库逻辑结构设计
  9. 数据库物理结构设计
  10. 具体教程可以参见

一、 数据库设计规范化方法
数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。
数据库设计的基本步骤:

  1. 需求分析阶段:需求收集和分析,得到数据字典和数据流图。
  2. 概念结构设计阶段:对用户需求综合、归纳与抽象,形成概念模型,用E-R图表示。
  3. 逻辑结构设计阶段:将概念结构转换为某个DBMS所支持的数据模型。
  4. 数据库物理设计阶段:为逻辑数据模型选取一个最适合应用环境的物理结构。
  5. 数据库实施阶段:建立数据库,编制与调试应用程序,组织数据入库,程序试运行。
  6. 数据库运行和维护阶段:对数据库系统进行评价、调整与修改。
  1. 需求分析阶段(常用自顶向下)
    进行数据库设计首先必须准确了解和分析用户需求(包括数据与处理)。需求分析是整个设计过程的基础,也是最困难,最耗时的一步。需求分析是否做得充分和准确,决定了构建数据库大厦的速度与质量。需求分析做的不好,会导致整个数据库设计返工重做。

需求分析的任务,是通过详细调查现实世界要处理的对象,充分了解系统工作概况,对用户进行详细调查并与之沟通,充分掌握用户的各种需求,然后在此基础上还得充分考虑今后可能的扩充与改变,不仅仅能够按当前应用需求来设计。
注意:调查的重点是,数据与事务。达到信息要求,事务处理要求,安全性和完整性要求。

从系统分析出发,可将需求分析方法大致分为功能分解方法、结构化分析方法、信息建模法和面向对象的分析方法。
(1)功能分解方法。
将新系统作为多功能模块的组合。各功能义可分解为若干子功能及接口,子功能再继续分解。便可得到系统的雏形,即功能分解——功能、子功能、功能接口。
(2)结构化分析方法。
结构化分析方法是一种从问题空间到某种表示的映射方法,是结构化方法中重要且被普遍接受的表示系统,由数据流图和数据词典构成并表示。此分析法又称为数据流法。其基本策略是跟踪数据流,即研究问题域中数据流动方式及在各个环节上所进行的处理,从而发现数据流和加工。结构化分析可定义为数据流、数据处理或加工、数据存储、端点、处理说明和数据字典。
(3)信息建模方法。
它从数据角度对现实世界建立模型。大型软件较复杂;很难直接对其分析和设计,常借助模型。模型是开发中常用工具,系统包括数据处理、事务管理和决策支持。实质上,也可看成由一系列有序模型构成,其有序模型通常为功能模型、信息模型、数据模型、控制模型和决策模型。有序是指这些模型是分别在系统的不同开发阶段及开发层次一同建立的。建立系统常用的基本工具是E—R图。经过改进后称为信息建模法,后来又发展为语义数据建模方法,并引入了许多面向对象的特点。
信息建模可定义为实体或对象、属性、关系、父类型/子类型和关联对象。此方法的核心概念是实体和关系,基本工具是E-R图,其基本要素由实体、属性和联系构成。该方法的基本策略是从现实中找出实体,然后再用属性进行描述。
(4)面向对象的分析力法。
面向对象的分析方法的关键是识别问题域内的对象,分析它们之间的关系,并建立三类模型,即对象模型、动态模型和功能模型。面向对象主要考虑类或对象、结构与连接、继承和封装、消息通信,只表示面向对象的分析中几项最重要特征。类的对象是对问题域中事物的完整映射,包括事物的数据特征(即属性)和行为特征(即服务)。

分析方法常用SA(Structured Analysis) 结构化分析方法,SA方法从最上层的系统组织结构入手,采用自顶向下,逐层分解的方式分析系统。
数据流图表达了数据和处理过程的关系,在SA方法中,处理过程的处理逻辑常常借助判定表或判定树来描述。在处理功能逐步分解的同时,系统中的数据也逐级分解,形成若干层次的数据流图。系统中的数据则借助数据字典(data dictionary,DD)来描述。数据字典是系统中各类数据描述的集合,数据字典通常包括数据项,数据结构,数据流,数据存储,和处理过程5个阶段。
2. 概念结构设计阶段(常用自底向上)
概念结构设计是整个数据库设计的关键,它通过对用户需求进行综合,归纳与抽象,形成了一个独立于具体DBMS的概念模型。
2.1 设计概念结构通常有四类方法:

  1. 自顶向下。即首先定义全局概念结构的框架,再逐步细化。
  2. 自底向上。即首先定义各局部应用的概念结构,然后再将他们集成起来,得到全局概念结构。
  3. 逐步扩张。首先定义最重要的核心概念结构,然后向外扩张,以滚雪球的方式逐步生成其他的概念结构,直至总体概念结构。
  4. 混合策略。即自顶向下和自底向上相结合。

2.2 使用E-R模型来进行概念模型的设计通常分两步进行,首先是建立局部概念模型,然后综合局部概念模型,成为全局概念模型。

2.2.1 E-R模型基本符号
 实体的表示:用长方形
 联系的表示:用菱形,1:1、1:n (m:1)、(m:n)
 属性的表示:用椭圆形

2.2.2 设计初步E-R图的步骤:
先设计局部E-R图,也称用户视图
综合各局部E-R图,形成总的E-R图,即用户视图的集成。
在设计初步E-R图时,要尽量能充分地把组织中各部门对信息的要求集中起来,而不需要考虑数据的冗余问题。
局部概念模型设计是从用户的观点出发,设计符合用户需求的概念结构。局部概念模型设计的就是组织、分类收集到的数据项,确定哪些数据项作为实体,哪些数据项作为属性,哪些数据项是同一实体的属性等。确定实体与属性的原则:
 能作为属性的尽量作为属性而不要划为实体;
 作为属性的数据元素与所描述的实体之间的联系只能是1:n的联系;
 作为属性的数据项不能再用其他属性加以描述,也不能与其他实体或属性发生联系。
3. 逻辑结构设计阶段
任务:将基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。
过程:
 将概念结构转换为现有DBMS支持的关系、网状或层次模型中的某一种数据模型;
 从功能和性能要求上对转换的模型进行评价,看它是否满足用户要求;
 对数据模型进行优化

3.1 E-R图向关系模型的转换
原则:
(1)一个实体型转换为一个关系模型,实体的属性就是关系的属性,实体的键就是关系的键;
(2)一个联系转换为一个关系模式,与该联系相连的每个实体型的键以及联系的属性都转换为关系的属性。这个关系的键分为以下三种不同的情况:
 若联系为1:1,则相连的每个实体型的键均是该关系模式的侯选键。
一个1:1联系可以转换成一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的键以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选键。如果与某一端实体对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的键和联系本身的属性。
 若联系为1:n,则联系对应的关系模式的键取n端实体型的键。
一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的键以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的键。
 若联系为m:n,则联系对应的联模式的键为参加联系的诸实体型的键的组合。
一个m:n联系转换为一个关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的键组成关系的键或关系键的一部分。
实例:在选课系统中,一个学生可以选多门课程,一个课程也有多名学生上课,学生选择的每门课程都有相应的成绩,课程和学生之间的关系就是多对多的关系。
实际项目的数据库设计基本方法_第1张图片
转换为关系模式:
课程(课程号,课程名称,授课教师)主键为课程号
学生(学号,姓名,性别)主键为学号
选课(课程号,学号,成绩)主键为课程号和学号组成的联合主键,外键为课程号,学号。
3.2 示例:将下面的E-R图转换为关系模式,关系的键用下划线标出
实际项目的数据库设计基本方法_第2张图片
部门(部门号,部门名,经理的职工号,…)
此为部门实体对应的关系模式,该关系模式已包含了联系“领导所对应的关系模式。经理的职工号是关系的候选码。
职工(职工号,部门号,职工名,职务,…)
此为职工实体对应的关系模式,该关系模式已包含了联系“属于”所对应的关系模式。
产品(产品号,产品名,产品组长的职工号,…)
此为产品实体对应的关系模式。
供应商(供应商号,姓名,…)
此为供应商实体对应的关系模式 。
零件(零件号,零件名,…)
此为零件实体对应的关系模式。
生产(职工号,产品号,工作天数,…)
此为联系“生产”所对应的关系模式。
供应(产品号,供应商号,零件号,供应量)
此为联系“联系”所对应的关系模式。
4. 物理设计阶段
物理设计是为逻辑数据结构模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
首先要对运行的事务详细分析,获得选择物理数据库设计所需要的参数,其次,要充分了解所用的RDBMS的内部特征,特别是系统提供的存取方法和存储结构。
常用的存取方法有三类:1.索引方法,目前主要是B+树索引方法。2.聚簇方法(Clustering)方法。3.是HASH方法。

  1. 数据库实施阶段
    数据库实施阶段,设计人员运营DBMS提供的数据库语言(如sql)及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制和调试应用程序,组织数据入库,并进行试运行。

6.数据库运行和维护阶段
数据库应用系统经过试运行后,即可投入正式运行,在数据库系统运行过程中必须不断地对其进行评价,调整,修改。

二、 数据库设计实例
超市管理系统数据库设计

  1. 数据库数据分析
    通过对超市管理工作过程的内容和数据流图分析,设计如下的数据项和数据结构。
  1. 员工信息:包括的数据项有:员工编号、姓名、性别、职务、口令、权限级别、身份证号、所属部门编号等。
  2. 部门信息,包括的数据项有:部门编号、部门名称
  3. 供应商信息,包括的数据项有:供应商编号、供应商名称、地址、邮政编号、电话号码、税号、银行账号、开户银行、联系人、备注等。
  4. 会员信息,包括的数据项有:会员编号、姓名、性别、身份证号、消费金额、积分等。
  5. 入库信息,包括的数据项有:入库编号、入库日期、商品编号、计量单位、入库价格、销售价格、数量、总金额、供应商编号、业务编号等。
  6. 商品信息,包括的数据项有:商品编号、所属类别、数量、单价、商品名称等。
  7. 销售出货单主信息,包括的数据项有:销售日期、总金额、是否现金、是否会员、会员编号、收银号编号等。
  8. 销售出货单子信息,包括的数据项有:商品编号、数量、单价、折扣比例、金额等。
  1. 数据库概念结构设计
    根据上述规划的实体,对各个实体具体的描述E-R图如下:
    实际项目的数据库设计基本方法_第3张图片
    实际项目的数据库设计基本方法_第4张图片
    实际项目的数据库设计基本方法_第5张图片
    实际项目的数据库设计基本方法_第6张图片
    实际项目的数据库设计基本方法_第7张图片
    实际项目的数据库设计基本方法_第8张图片
    实际项目的数据库设计基本方法_第9张图片
    实际项目的数据库设计基本方法_第10张图片
    实际项目的数据库设计基本方法_第11张图片

  2. 数据库逻辑结构设计
    实际项目的数据库设计基本方法_第12张图片
    实际项目的数据库设计基本方法_第13张图片
    实际项目的数据库设计基本方法_第14张图片
    实际项目的数据库设计基本方法_第15张图片

  3. 数据库物理结构设计
    不同数据库的SQL命令可能会有小小差别。比如我们这里使用了SQL server数据库。
    实际项目的数据库设计基本方法_第16张图片
    实际项目的数据库设计基本方法_第17张图片
    实际项目的数据库设计基本方法_第18张图片
    实际项目的数据库设计基本方法_第19张图片
    实际项目的数据库设计基本方法_第20张图片
    实际项目的数据库设计基本方法_第21张图片

数据库扩展功能实现:
实际项目的数据库设计基本方法_第22张图片
实际项目的数据库设计基本方法_第23张图片

  1. 具体教程可以参见
    https://blog.csdn.net/zhongliwen1981/article/details/91871895

你可能感兴趣的:(数据库)