`
学会做人
  • 浏览: 118541 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论
阅读更多
其实、在工作中,数据库在后台这边全部设计好之后,前台就简单的多了!
而且,用有些用工具可以帮助完成前台的实现,但是只有数据库设计这一块是无法用工具帮助完成的!可见数据库在设计中是多么的重要!
  
   一、数据库分析的前提条件
  
   1.掌握关系型数据库理论:
     关系DB = 实体 + 关系 = PK + FK
     关系 =  一对一(11) + 一对多(1M,11)+多对多(MM,MM)

  
多对多一般要转换为两个一对多,通过中间表
   为啥要用中间表呢?
  其实是为了更加方便的增加属性!但是不能再PDM中直接修改增加属性和字段
! 一般设计是在CDM中就必须要完成!(特殊情况例外)


  2.数据库设计的3范式

     1NF : 不能将多个信息放入到一个字段中去(列不可再分),每个表都必须要有主键
(每一行都必须不同)。
     2NF : 每个表都必须要有他的自己的固有属性(非主键列必须要依赖主键列)
   例如:找学生,只能找姓名、年龄等信息!而不能找班级信息
     3NF : 非主键列之间不相互依赖,而是相互独立的!例如:找员工实体,但是
   他的出生日期和年龄不要设计在一个表中。








============================================================================================================================================

  3、熟悉PD建模方法

  说说关于DB设计的一些概念,所谓DB设计就是在软件工程中,通过需求分析来获取信息,然后抽象出一个虚拟的设计图,把整个工程中的数据实体和关系从宏观的角度描述出来,做到一个整体的把握,是建立实际数据库的基础和前提。

        DB设计的基本步骤是先设计ER图(即概念数据模型,又称CDM),
CDM设计完之后再转换为物理数据模型(PDM),从CDM向PDM转换的时候,其实是CDM针对于哪一个RDBMS来进行转换的。例如,把一个CDM可以转换成相应的SQL物理数据模型,也可以将其转换成与ORACLE相对应的PDM。到PDM的阶段的时候其实已经产生了相应的实际数据库建表语句了,这个时候即可以用来进行程序开发。

             在整个DB设计中其实我们需要做的只是完成2个事情:第一个是找实体,第二个是找关系。这两件事情才是DB设计的关键与核心,只有完善好这两项任务才能够设计出良好的RDBMS。

        我们先从找实体来说起,从这一点上来看,我们可以很容易的联想到面向对象这种思想,在DB中其实一个表对应的是一个实体,其实就是一个类,而表中的每一行则对应了一个对象,在面向对象程序设计中,我们的目标其实就是要做好封装,简化代码,提高代码性能,其实从另外一个角度来说,也就是让我们所定义的类更新纯粹,降低与其他类(其实也就是对象与对象之间)之间的耦合性,


从设计CDM上来看,找实体的工作其实也类似如此,如果找到的实体能够更加独立,与其他实体之间有明显的区别,设计的效果将会是更加完美,因为在DB设计中,如果一个实体本应该可以分为两个实体进行处理的时候,却只当做了一个实体进行处理,那么则会造成很危险的后果,比如说在数据库中进行增加数据和删除数据时会产生异常情况,如果将实体分的更加纯粹,那么将会有效的避免这种情况的发生,另外一个方面,通常在这种情况下会出现数据冗余的现象,这种现象是我们要在DB设计中所高度重视的,一定要坚决的避免这种现象的发生。
        下面看一个例子,来说说如果找到的实体没有尽可能的纯粹会产生的一些异常现象:



学号        姓名        性别        年龄        班级        班级楼层
1        张三        男        20        二班        一楼
2        张三        男        20        一班        二楼

        这个是一个学生的信息表,上面有学号,姓名,性别,年龄,班级5个字段,
这个表似乎一看没有什么错误之处,但是却隐藏着巨大的弊端,假如,这个表中我们要删除关于学号为1的这个学生,但是并不想删除班级的信息,这个时候我们要怎么做呢,显然我们是做不到的,我们使用delete语句进行删除记录时只能针对一行记录进行删除,不能够删除一行的部分记录,这就产生了一种删除时造成的异常。另外一种情况,假如现在我们要增加一条记录,
如下表所示:






学号        姓名        性别        年龄        班级        班级楼层
1        张三        男        20        二班        一楼
2        张三        男        20        一班        二楼
3        李四        男        21        2班        一楼




        这个时候我们来看一下,我们增加的学生号为3的一条记录,在字段班级处,我们输入的是记录二是数字2,我们想表达的意思其实是二班,但是却在输入记录的时候用阿拉伯数字表示二,用人类的思维来理解,这两个班所表达的意思是完全一致的,但是交给计算机处理的时候这2个班将会是两个完全不同的班级,这种情况也会引发出一种异常,增加异常。


        出现上述两种情况的原因其实就是把多个实体放在了一个实体之中,没有完完全全的找到纯粹的实体,所以在DB设计的第一步找实体的时候我们应该努力找到尽量纯粹的实体,只有这样才能设计出完善的DBMS,之后再进行设计的下一个步骤。


        在找完实体之后我们要做的是找关系,其实就我个人而言,DB设计中最复杂的部分也就是此处了,RDBMS之中关系是一个非常重要的概念,如何才能真正的理解它,一是要读懂需求,二则是要理解RDBMS之中非常重要的概念,一对一,一对多,多对多的三种关系模式,这
里就不详细叙述了,只有对这三种模式有深刻的理解才能够在DB设计中设计出良好的关系图。


        另外一个方面,关系其实是非常复杂的,特别在对于大型项目设计的时候,实体的数量会非常的多,关系也会错综复杂,对RDBMS中三种关系深刻的理解将会在DB设计中起到举足轻重的作用。


        在关系型数据库世界之中,其实就是众多的实体加上关系产生的一个虚拟的世界,实体的标志是主键,而关系的标识则是外键,从这个角度来说,其实关系型数据库就满足这个公式:        关系型数据库 = 外键 + 主键


        现在再来详细讲讲范式,范式是什么呢,它是数据库表的一种规范,为什么EXCEL的表是表,数据库中的表也是表,他们不一样呢,正是因为数据库中的表满足范式。
范式一共有5种,但是其中我们只用到常见的3种,另外2种不必去掌握。

第一NF:
        表必须具有主键列
        不能让多个信息放到一个字段之中
        每行的属性(字段)必须相同
在第一范式中,我想说的是,将多个信息放入到一个字段之中,这个并不能完全的去遵守它,只能说在通常的情况下我们要按照范式去做,因为有时候在需求的驱动下,我们有必要把多个信息放入到一个字段之中。



第二NF:
        表中要有主键列和非主键列,非主键列必须依赖与主键列
        表中必须要有实体加关系的结构
这里说的非主键列不包含关系这种字段,比如说在刚才提及到的表中,班级这个字段,它是另外一个实体主键,是做为外键加入到学生表之中的,它是属于关系的字段,而不是属于非PK字段,这个则是第二范式的一个重点




第三NF:
        非PK字段之间是关系独立的
这个范式我想说明的是有时候可以不遵循第三范式,因为有时候我们没有必要做到非PK字段之间的关系是完全独立的,但是第一NF和第二NF是我们必须所遵守的。



关于范式其实就是一个规范,如果说当我们做为一些查询必须用到的表,有可能违背了三个范式,但是这样会提高我们查询的效率,这个时候我们也可以打破范式的约束,具体情况具体分析,因为在RDBMS之中,任何东西都是非常灵活的。


        数据库是程序设计的基础,就像整个软件工程是一个座高楼大厦,数据库则是地基,数据库设计的好坏,直接影响到整座大厦今后的结构,DB设计是如此重要,我们必须深入了解其中的奥秘,才能在今后的IT生涯当中发现更多宝贵的财富。
    

    
分享到:
评论

相关推荐

    ERStudio资料总结

    ERStudio8使用说明.pdf ER Studio 快速入门向导.pdf ERStudio英文教程.pdf ER Studio中文教程.pdf ERStudio使用指南.ppt

    软件分析与建模课程设计 家具城进销存管理系统 报告+cdm+pdm+数据库+UML图+ER图文件

    第一章 系统概述 1 1.1. 项目背景 1 1.2. 系统描述 1 1.3. 系统目标 1 第二章 需求分析 3 2.1 功能需求分析 3 2.2 需求模型 3 2.3 业务流程图 3 第三章 系统的数据模型和...第五章 设计过程总结与分析 18 参考文献 18

    雷达有源干扰设备数据库ER概念模型建模

    雷达电子战设备数据库是雷达电子战仿真系统的...以雷达有源干扰设备数据库ER概念模型为例,总结建立雷达电子战设备数据库ER盖帘模型的思路和关键技术,采用powerdesigner软件,建立了雷达有源干扰设备数据库ER盖帘模型

    大数据实践之数据建模.pdf

    ER模型在实践中最典型的代表是Teradata公司基于⾦融业务发布的FS-LDM(Financial Services Logical Data Model),它通过对⾦融业务的⾼度抽象和 总结,将⾦融业务划分为10⼤主题,并以设计⾯向⾦融仓库模型的核⼼...

    数据仓库的几种建模方法

    想写一篇数据仓库常用模型的文章,但是自己对数据仓库模型的理解程度和建设架构并没有下面这个技术专家理解的深刻,并且自己去组织语言,可能会有不准确的地方,怕影响大家对数据仓库建模的理解,数据仓库属于一个...

    软件工程-教材管理系统.doc

    需求分析 7 5.1 总体目标 7 5.2 具体目标 7 5.2.1系统数据建模(ER图) 7 5.2.2系统功能建模(数据流程图) 10 5.2.3数据字典 11 6. 总体设计 13 6.1总体设计HIPO技术 13 6.2系统层次图 13 6.3数据库设计 14 7. ...

    数据库系统概论【史嘉权】

    突出重点、注重总结;概念清晰、 分析深入;例题丰富、实用性强;叙述深入浅出、语言流畅生动。 本书是高等院校计算机专业本科生数据库课程的教材,也可作为其他专业本科生数据库课程的教材。对于从事数据库研制、...

    基于证据推理规则的数据驱动的近似因果推理模型

    基于信念规则(BRB)的方法被开发用于建模先前属性之间的复杂非线性因果关系并且因此基于ER算法和传统的基于IF-THEN规则的系统,并且本质上,它与贝叶斯网络(BN)保持方法上的一致性。 本文首先介绍ER规则,然后...

    黑龙江大学《软件开发综合设计》商品管理系统选题实验报告(代码用C#实现)

    包括需求规约说明书、领域模型、详细设计报告、系统实现报告和实验总结。 系统参与者包括系统管理员、进货员、供货商、顾客。功能包括:商品信息管理、人员管理、订单管理、账户信息管理、用户信息管理。用例描述...

    基于微信小程序办公用品采购系统的设计与实现.rar(毕业论文+程序源码+后端源码)

    3.4 用例建模 3.5非功能性需求 4 系统的设计 4.1流程图设计 4.2数据库系统设计 4.2.1系统ER图设计 4.2.3数据库设计 5系统功能模块实现 5.1.功能页面实现 5.1.1登录注册模块实现 5.1.2采购信息列表模块实现...

    基于javaweb项目ssm食品管理系统设计与实现(论文+程序设计源码+数据库文件)

    3.4 用例建模 9 3.4.1用例图 9 3.5 系统主要的类模型 10 3.6非功能性需求 10 4 系统的设计 11 4.1流程图设计 11 4.2系统时序图设计 12 4.2.1登陆操作时序图 12 4.3.2系统ER图设计 12 4.3.3数据库设计 14 数据库设计...

    软件工程知识点

    也称为ER图,是应用最广泛的数据库建模工具。需要通过数据实体、数据关系和数据属性这三类图形元素建立数据关系模型。 (4)系统状态模型。通过系统的外部事件、内部状态为基本元素来描绘系统的工作流程,这种建模...

Global site tag (gtag.js) - Google Analytics