其实、在工作中,数据库在后台这边全部设计好之后,前台就简单的多了!
而且,用有些用工具可以帮助完成前台的实现,但是只有数据库设计这一块是无法用工具帮助完成的!可见数据库在设计中是多么的重要!
一、数据库分析的前提条件
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生涯当中发现更多宝贵的财富。
分享到:
相关推荐
总结本章,学习目标包括理解ER图的基础概念,掌握实体、属性和联系的表示,了解建模原则和约束,熟悉弱实体集,以及学习绘制和使用ER图的技巧和高级技术。通过这些知识,可以更有效地设计出符合需求的数据库模型,...
报刊订阅管理系统中使用的相关技术包括Java编程语言、关系型数据库管理系统、ER图设计方法、UML统一建模语言等。 二、需求分析 需求分析是软件开发的重要阶段,目的在于明确软件的需求和功能。在报刊订阅管理系统...
总结起来,ER建模是软件产品设计的核心,因为它确保了软件能够正确反映和处理现实世界的复杂关系。通过清晰的实体和关系定义,设计师可以构建出能够适应变化、支持扩展的系统。在案例中,老王和小李的讨论揭示了ER...
总结,UML提供了一套丰富的图形符号和规范,使得软件开发人员能够以统一的方式描述、构建和交流复杂系统的模型。ER图虽然在UML中没有直接的对应图表,但其思想可以通过类图和对象图来体现。通过深入学习和熟练运用...
ERStudio是一款强大的数据库建模工具,它被广泛用于设计、管理和理解复杂的数据库结构。这款工具提供了数据建模、数据仓库建模以及元数据管理等多种功能,帮助IT专业人员高效地进行数据库开发和管理。 首先,我们来...
总结,Case Studio作为一款强大的数据库建模工具,不仅提供了直观的图形化界面,还支持多种数据库的模型导出,是数据库设计者和开发者的重要辅助工具。通过本次实验,学生不仅掌握了软件操作,还深化了对数据库模型...
### ERSTUDIO资料建模工具的关键知识点 #### 1. 关联式数据库设计与ERSTUDIO的作用 **ERSTUDIO**作为一款强大的数据库设计与管理工具,能够在多种数据库环境中进行高效的数据模型设计与管理。其核心功能之一在于...
其中,ER(实体-关系)模型是一种常用的概念模型,它由Peter Chen在1976年提出,是数据建模的基础。 **4.1 E-R模型基本概念及表示** E-R模型由三个主要组成部分构成:实体、关系和属性。 1. **实体(Entity)**:...
#### 第6章 软件工程建模总结 - **回顾**: 整个建模过程从需求分析到最终部署。 - **重点**: 强调各阶段的关键技术和工具。 - **反思**: 评估建模过程的有效性,提出改进措施。 #### 第7章 总结 - **总结**: 综合...
总结来说,这份“PowerDesigner建模资料整理”是学习和提升数据库建模技能的宝贵资源,无论你是新手还是经验丰富的开发者,都能从中受益。通过阅读文档、实践操作和案例学习,你可以深入理解PowerDesigner的使用,...
总结来说,该文档深入探讨了在微积分、流体力学、电磁场、微波、天线与电波传播等众多领域的应用基础——曲线坐标变换的相关理论。文档详细说明了正交曲线坐标系、单位向量与逆变向量的数学定义和运算规则,阐述了...
Datablau Data Modeler作为数据建模工具,具备了通用建模、ER图可视化、智能数据标准落标、数据库差异比较等关键能力。软件架构包含客户端工具、WebPortal和模型库服务器,支持Web数据模型的协同工作。工具还提供了...
标签“ER设计的利器”强调了ER Studio在ER建模方面的专业性和实用性。对于数据库设计师和管理员来说,这款工具能够提高工作效率,减少错误,并且在项目规划和团队协作中起到重要作用。 在压缩包子文件的文件名列表...
实体关系模型(Entity Relationship Model, ER Model)是一种数据建模技术,用于表示实体及其之间的关系。它在数据库设计中扮演着重要角色,帮助开发者理解业务需求并据此构建有效的数据存储结构。本章将深入探讨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盖帘模型的思路和关键技术,采用powerdesigner软件,建立了雷达有源干扰设备数据库ER盖帘模型
总结来说,"建模我们的世界"是一个综合性的概念,它涉及IT领域的多个方面,包括数据管理、系统设计、软件开发、图形呈现和智能决策。通过建模,我们可以更有效地理解和操控现实世界的复杂性,推动技术创新和发展。
总结起来,数据建模与数学模型的结合,是理解和解决复杂问题的有效途径,对于IT专业人士来说,掌握这些技能至关重要。通过深入学习和实践,我们可以更好地理解和应用这些模型,以推动业务发展和创新。