2.1数据库规划

数据库设计规范1.简介

数据库设计是指对一个给定的应用环境,构造优的数据库模式,建立数据库及其他应用系统,使之能有效地存储数据,满足各种用户的需求。数据库设计过程中命名规范很是重要,命名规范合理的设计能够省去开发人员很多时间去区别数据库实体。

近也因为工作需要所以整理出了这个word文档,望大家指正。

 

2.1数据库规划

定义数据库应用系统的主要目标,定义系统特定任务,包括工作量的估计、使用资源、和需求经费,定义系统的范围以及边界。

2.2需求分析

2.1.1需求分析步骤与成果

涉及人员:用户和分析人员

任务:对现实世界要处理的对象进行详细的调查,收集基础数据及处理方法,在用户调查的基础上通过分析,逐步明确用户对系统的需求,包括信息的要求及处理的要求。

方法与步骤:1.通过与用户的调查,对用户的信息需求进行收集。

2.在收集数据的同时,设计人员要对其进行加工和整理,以数据字典和数据流图的形式描述出来,并以设计人员的角度向用户讲述信息,根据用户的反馈加以修改并确定(该过程是反复的过程)

成果:数据流图,数据字典,各种说明性表格,统计输出表以及系统功能结构图。

2.1.2数据流图基本元素与数据流图

外部实体:存在于软件系统之外的人员或组织(正方形或立方体表示)。

加工:数据处理,表示输入数据在此进行变换,产生输出数据(圆角巨型或圆形表示)。

数据流:表示流动着的数据(箭头线表示)。

数据存储:用来表示要存储的数据(开门矩形或两条平行横线表示)。

 

 

 

订单处理系统顶层流程图:

0层数据流图:

                                    

 

 

2.3数据库设计

2.3.1概念结构设计

  • 对事务加以抽象以E-R图的形式描述出来
  • E-R图(实体联系图):包括实体,联系,属性

实体:现实中的事物例如,学生,老师

联系:两个实体之间的关系,1:1、1:N、M:N三种关系

属性:实体所具有的属性,例如 学生的学号、姓名、性别等

例如:一个学生属于一个班级,一个班级拥有多名学生,E-R图如下

 

 

 

网上购物系统E-R图,该系统数据之间存在下列约束

 

  • 一个客户(编号)可以拥有多个订单,每个订单仅属于一个客户。
  • 一个订单(编号)可以包含多个订购细目,每个订购细目只属于一个订单。
  • 一个商品可以出现多个订购细目中,一个订购细目只包含多个商品。
  • 一个商品类别可以包含多种商品,一种商品只属于一个商品类别。
  •  

     

     

     

    图2.2

    2.3.2逻辑结构设计

    2.3.2.1E-R图转换成关系模式

    •  将E-R图转换成关系模式

    将每个实体转换成一个关系模式,实体的属性即关系模式的属性,实体的标识即关系模式的键。

    •  根据规则合并E-R图中的1:1,1:N,M:N之间的联系
  • 若实体的联系是(1:1),则可以将两个实体转换成两个关系模式,任意一个关系模式的属性中加入另一个关系模式的主键(作为外键)和联系自身的属性
  • 若实体间的联系是一对多(1:n),则将n端的实体类型转换成关系模式中加入1端实体类型的主键(作为外键)和联系类型的属性。
  • 若实体间的联系是多对多(m:n),则将联系类型也转换成关系模式,其属性为2实体类型的主键(作为外键)加上联系类型自身的属性,而该关系模式的主键为2端实体主键的组合。
  • 若关系模式是1:1:1的关系,转换原则同1:1
  • 若关系模式是1:1:n的联系,转换原则同1:n
  • 若关系模式是1:n:m的联系,则可以将联系类型也转换成关系模式,其属性为m端和n端实体类型的主键(作为外键)加上联系类型自身的属性,而关系模式的主键为n和m端实体主键的组合
  • 若关系模式是n:m:p的联系,转换规则同m:n
  • 根据E-R图实体之间的联系可以转换成以下关系模式:

    客户(客户编号,姓名,电话,E-mail)。关系的主键:客户编号;外键:无

    订单(订单编号,订购时间,客户编号)。关系的主键:订单编号;外键:客户编号

    订购细目(订购明细编号,订购数量,支付金额,订单编号)。关系主键:订购明细编号;外键:订单编号。

    出现(订购明细编号,商品编号,类型)。关系的主键:订购明细编号,商品编号;外键:订购明细编号,商品编号。

    商品:(商品编号,商品名称,单价,生产日期,商品类别号,商品类别名)。关系的主键:商品编号;外键:无

    在关系模式设计中可能会出现以下几个问题:数据冗余、数据修改不一致、数据插入异常、数据删除异常,所以提出范式的要求,目的就是低限度地冗余,避免插入、删除、修改异常。

    2.3.2.2范式

    主属性:包含键的所有属性。

    •  关系模式要求达到4NF (减少冗余,消除操作异常)

    范式(1NF):若关系模式R的每一个分量是不可分的数据项,则关系模式属于范式。即每个属性都是不可拆分的.

    第二范式(2NF):R属于1NF,且每一个非主属性完全依赖于键(没有部分依赖),则R属于2NF

    例如:选课关系(学号,课程号,成绩,学分)

    该关系的主键是(学号,课程号),但是课程号→学分,所以学分属性部分依赖于主键,即关系部满足第二范式,可以拆分为(学号,课程号,成绩),(课程号,学分)两个关系

    第三范式(3NF):R属于2NF,且每个非主属性即不部分依赖于码,也不传递依赖于码

    例如:学生关系(学号,姓名,所属系,系地址)

    该关系的主键是:学号

    学号→所属系,所属系→学号,所属系→系地址;根据函数的依赖公理,系地址传递函数依赖于学号,即关系不满足第三范式,可以拆分关系为(学号,姓名,所属系),(所属系,系地址)

    如果不拆分会存在数据修改异常,比如该学生的换了系,修改了所属系,但是系地址没有修改,这样就造成了修改异常

     BCNF:R属于3NF,且不存在主属性对码的部分和传递函数依赖

    例如:关系R(零件号,零件名,厂商名),如果设定每种零件号只有一个零件名,但不同的的零件号可以有相同的零件名,每种零件可以有多个厂商生产,但每家厂商生产的零件应有不同的零件名。这样可以得到:

    零件号→零件名,(厂商名,零件名)→零件号

    所以主属性包括(零件号,厂商名,零件名),但是“零件名”传递依赖于码“厂商名,零件名”,所以关系R不满足BCNF,当一个零件由多个生产厂商生产时,由于零件号只有一个而零件名根据厂商不同而又多个,零件名与零件号之间的联系将多次重复,带来数据冗余和操作异常现象

    可以将关系分解为(零件号,厂商名),(零件号,零件名)

    4NF:关系模式R属于1NF,若对于R的每个非平凡多值依赖X→→Y且Y不包含于X时,X必含码,则R属于4NF

    5NF:对关系进行投影,消除关系中不是由候选码所蕴含的连接依赖

    对于上面的商品关系,由于关系的主键是商品编号,而商品类别号→商品类别名

    所以商品关系部满足第三范式,非主属性商品类别名传递依赖于商品编号,会存在数据冗余,数据修改异常问题。将商品关系分解为:

    商品(商品编号,商品名称,单价,生产日期,商品类别号)

    商品类别(商品类别号,商品类别名)

    2.3.3物理结构设计

    为一个给定的逻辑数据模型设计一个合适应用要求的物理结构的过程

    •  数据库的建立
    •  数据表的建立
    •  索引的建立
    •  视图的建立
    •  触发器的建立
    •  存储过程设计
    • 用户自定义函数设计
    •  对关系模式的数据项加以约束,如检查约束、主键约束、参照完整性约束以保证数据正确性

     

    2.4应用程序设计

    采用语言以结构化设计方法或面向对象方法进行设计

    2.5系统实现

     

    允许模块化程序设计:

    只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。

    允许更快执行:

    如果某操作需要大量 Transact-SQL 代码或需重复执行,存储过程将比 Transact-SQL 批代码的执行要快。将在创建存储过程时对其进行分析和优化,并可在执行该过程后使用该过程的内存中版本。每次运行 Transact-SQL 语句时,都要从客户端重复发送,并且在 SQL Server 每次执行这些语句时,都要对其进行编译和优化。

    减少网络流量:

    一个需要数百行 Transact-SQL 代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。

    可作为安全机制使用: