为什么要规范的数据库设计
先思考一个问题,如果是盖一间房屋,会有人花钱去设计房屋图样吗?应该没 有人。但如果是开发一个楼盘呢,就会需要设计施工图样以方便施工 ,甚至很多专业的购房者也会在看房时要求开发商出示设计图样
同样的道理,在实际开发的项目值,如果系统对的数据存储数据量大,涉及的表比较多,表和表之间的关系比较复杂,就需要首先考虑规范的数据库设计,然后进行具体的创建数据库设计。如果设计不当,会存在数据操作异常,修改复杂,数据沉余等问题,程序新能可能会受到影响。
什么是数据库设计
数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。
数据库设计的设计内容包括:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的实施和数据库的运行和维护。
数据库设计步骤
数据库设计包括六个主要步骤:
1、需求分析:了解用户的数据需求、处理需求、安全性copy及完整性要求;
(1):需求分析也称为软件需求分析、系统需求分析或需求分析工程等,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。
需求分析的任务,是通过详细调查现实世界要处理的对象,充分了解原系统工作概况,明确用户的各种需求,然后在此基础上确定新的系统功能,新系统还得充分考虑今后可能的扩充与改变,不仅仅能够按当前应用需求来设计。
调查的重点是,数据与处理。达到信息要求,处理要求,安全性和完整性要求。
2、概念设计:通过数据抽象,设计系统概念模型,知一般为E-R模型;
(2):概念结构设计是整个数据库设计的关键,它通过对用户需求进行综合,归纳与抽象,形成了一个独立于具体DBMS的概念模型。
设计概念结构通常有四类方法:
自顶向下。即首先定义全局概念结构的框架,再逐步细化。
自底向上。即首先定义各局部应用的概念结构,然后再将他们集成起来,得到全局概念结构。
逐步扩张。首先定义最重要的核心概念结构,然后向外扩张,以滚雪球的方式逐步生成其他的概念结构,直至总体概念结构。
混合策略。即自顶向下和自底向上相结合。
3、逻辑结构设计:设计系统的模式和外模式,对于关系模型主要是基本表和视图;
(3):逻辑结构设计是将概念结构转换为某个DBMS所支持的数据模型,并将进行优化。 在这阶段,E-R图显得异常重要。大家要学会各个实体定义的属性来画出总体的E-R图。各分E-R图之间的冲突主要有三类:属性冲突,命名冲突,和结构冲突。
E-R图向关系模型的转换,要解决的问题是如何将实体性和实体间的联系转换为关系模式,如何确定这些关系模式的属性和码。
4、物理结构设计:设计数据的存储结构和存取方法,道如索引的设计;
(4):物理设计是为逻辑数据结构模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。 首先要对运行的事务详细分析,获得选择物理数据库设计所需要的参数,其次,要充分了解所用的RDBMS的内部特征,特别是系统提供的存取方法和存储结构。
常用的存取方法有三类:
(1)索引方法,目前主要是B+树索引方法。
(2)聚簇方法(Clustering)方法。
(3)是HASH方法。
5、系统实施:组织数据入库、编制应用程序、试运行;
(5):数据库实施阶段,设计人员运营DBMS提供的数据库语言(如sql)及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制和调试应用程序,组织数据入库,并进行试运行。
6、运行维护:系统投入运行,长期的维护工作。
(6):数据库维护是指当一个数据库被创建以后的工作都叫做数据库维护。包括备份系统数据、恢复数据库系统、产生用户信息表,并为信息表授权、监视系统运行状况,及时处理系统错误、保证系统数据安全,周期更改用户口令。
数据库三大范式
1.第一范式:
第一范式(Normal Formate,1NF)得目标是确保每列的原子性。如果每列(或每个属性值)都是不可再分的最小数据单元(也称为最小的原子单位),则满足第一范式。
2.第二范式:
第二范式(2NF)在第一范式得基础上更上一层,其目标是确保表中的每列都和主键相关。如果一个关系满足第一范式,并且除了主键以外的其他列都全部依赖于该主键,则满足第二范式。
3.第三范式:
第三范式(3NF)在第二反思反思的基础上更上一层,第三范式的目标是确认每列都和主键列直接相关,而不是间接相关。如果一个关系满足第二范式(2NF),并且除了主键以外的其他列都只能依赖于主键列,列和列之间不存在相互依赖关系。则满足第三范式(3NF)。