新人浅谈__(数据库的设计__数据库模型图,数据库E-R图,三大范式)
>>>> 为什么需要规范的数据库设计
在实际的项目开发中,如果系统的数据存储量较大,设计的表比较多,表和表之间的关系比较复杂,就需要首先考虑规范的数据库设计,然后进行创建库,创建表的工作.
如果设计不当,会存在数据操作异常,修改复杂,数据冗余等问题,程序性能会受到影响,通过进行规范化的数据库设计,可以消除不必要的数据冗余,获得合理的数据库设计,提高项目的应用性能.
>>>>设计数据库的步骤
1.收集信息
需要了解数据库需要存储哪些信息(数据),实现哪些功能.
2.标识实体
在收集需求信息后,必须标识数据库要管理的关键对象或实体,实体可以是有形的事物,如人和产品;也可以是无形的事物,如商业交易公司部门或发薪周期...
3.标识每个实体需要存储的详细信息(即实体的属性)
就是需要细分出每个实体中包含的子成员信息,也称为该实体的属性,这些属性将组成表中的列.
4.标识实体之间的关系
要标识实体之间的关系,需要分析数据库表,确定这些表在逻辑上是如何相关的,然后添加关系列建立起表之间的连接.
--在需求分析阶段解决了客户的业务和数据处理需求后,就进入了概要设计阶段,我们需要和项目的其他成员及客户沟通,讨论数据库的设计是否满足客户的业务和数据的处理需求,数据库的设计也需要图形化的表达方式--E-R(Entity-Relationship)图,也称之为 实体-关系图
>>>>E-R(Entity-Relationship)图
(实体使用矩形表示,一般是名词;属性使用椭圆表示,一般也是名词;联系使用菱形表示,一般是动词)
1.实体
就是指现实世界中具有区分其他事物的特征或属性并与其他实体有联系的实体.严格的说,实体是指表中一行特定数据,也 常把整个表称之为一个实体.
2.属性
属性可以理解为实体的特征.属性对应表中的列.
3.联系
联系是两个或多个实体之间的关联关系
根据E-R图绘制酒店管理系统的E-R图

>>>>映射基数
映射基数表示通过联系与该实体关联的其他实体的个数,对于实体集X和Y之间的二元关系,映射基数必须为下列技术之一:
>>一对一:X中的一个实体最多与Y中的一个实体相关联,并且Y中的一个实体最多与X中的一个实体相关联.
>>一对多:X中的一个实体可以与Y中的任意数量实体相关联;Y中的实体最多与X中的一个实体相关联.
>>多对一:X中的一个实体最多与Y中的一个实体相关联;Y中的实体可以与X中的任意数量实体相关联.
>>多对多:X中的一个实体可以与Y中的任意数量实体相关联,反之亦然.
>>>>逻辑设计——绘制数据库模型图
操作步骤:(1.新建数据库模型图 2.添加实体 3.添加数据列及相应的属性 4.添加实体之间的映射关系)

>>>>数据库规范化
从用户的角度而言,将所有信息放在一个表中很方便,因为这样查询数据库可能会比较容易,但是在数据库的实际操作中会出现很多的问题:
1.信息重复:会造成存储空间的浪费及一些其他的问题,如(不小心输入"标准间","标准" ,则在数据库中将表示两种不同的 客房类型)
2.更新异常:冗余信息不仅浪费存储空间,还会增加更新的难度.
3.插入异常(无法表示某些信息):如(同样是标准间,却因为入住人数不同而造成价格的差异)
4.删除异常(丢失有用的信息):当删除一行的信息时可能会丢失有用的信息.如(当"标准间"的住房记录中只有一条信息,那 么当我们删除此记录的时候会把"标准间"这一记录删除,而"标准间"也就不复存在了)
>>>>规范设计
在设计数据库时,三大范式良好的规避了以上可能出现的错误
1.第一范式
确保每列的原子性.
2.第二范式
确保表中的每列都和主键相关(直接相关和间接相关皆可).
3.第三范式
确保每列都和主键直接相关,而不是间接相关. (在上面的那张数据库设计E-R图就是符合第三范式的)
新人浅谈__(数据库的设计__数据库模型图,数据库E-R图,三大范式)的更多相关文章
- 浅谈Hybrid技术的设计与实现第二弹
前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 接上文:浅谈Hybrid技术的设计与实现(阅读本文前,建议阅读这个先) ...
- 浅谈Hybrid技术的设计与实现
前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术的设计与实现第三弹——落地篇 随着移动浪潮的兴起,各种APP层出不穷,极速的业务扩展提升了团队对开发 ...
- (转)浅谈Hybrid技术的设计与实现
转载地址:https://www.cnblogs.com/yexiaochai/p/4921635.html 前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hyb ...
- 浅谈Hybrid技术的设计与实现【转】
https://www.cnblogs.com/yexiaochai/p/4921635.html 前言 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 浅谈Hybrid技术 ...
- 朱晔的互联网架构实践心得S2E6:浅谈高并发架构设计的16招
朱晔的互联网架构实践心得S2E6:浅谈高并发架构设计的16招 概览 标题中的高并发架构设计是指设计一套比较合适的架构来应对请求.并发量很大的系统,使系统的稳定性.响应时间符合预期并且能在极端的情况下自 ...
- 浅谈Hybrid技术的设计与实现第三弹——落地篇
前言 接上文:(阅读本文前,建议阅读前两篇文章先) 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 根据之前的介绍,大家对前端与Native的交互应该有一些简单的认识了,很多 ...
- 【Fiori系列】浅谈SAP Fiori的设计美感与发展历程
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[Fiori系列]浅谈SAP Fiori的设计美 ...
- iOS开发之浅谈MVVM的架构设计与团队协作
今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
- 浅谈机器人控制与仿真设计----RDS和ROS
机器人控制.仿真或实验,主要由三个部分组成,机器人.环境和算法. 当然各部分又包含很多子部分和功能,这里主要以仿真为主,为了使得仿真结果能够直接应用到实际机器人上,这里分别以RDS和ROS对比介绍.h ...
随机推荐
- Springboot druid监控配置
@Configuration public class DataSourceConfig { @Bean public ServletRegistrationBean statViewServlet( ...
- 洛谷P1028数的计算
https://www.luogu.org/problemnew/show/P1028 只用递归会超时,需要用递归型动规,用一个数组保存已经算过的值,避免重复计算. 求数字为n的方案数的最优子结构为: ...
- String类的转换功能
/* * String类的转换功能 * char[] toCharArray():把字符串转换为字符数组 * String toLowerCase():把字符串转换为小写字符串 * String to ...
- Docker学习总结(18)——阿里超大规模Docker化之路
12月6-7日,由阿里巴巴集团.阿里巴巴技术发展部.阿里云云栖社区联合主办,以"2016双11技术创新"为主题的阿里巴巴技术论坛上,阿里巴巴研究员林昊分享了阿里超大规模Docker ...
- Eclipse 导出的jar包 , 使用后提示重复定义?
导出jar包时,一般会指定一个路径,导出的完整jar包就会自动放到那个指定路径里. 后来我发现那个指定路径的jar包比bin文件夹里面的jar包大,于是就用bin文件夹里面的jar包代替来试试,果然不 ...
- idea结合git版本控制
IntelliJ-IDEA和Git.GitHub.Gitlab的使用(五)----https://blog.csdn.net/milsevol/article/details/72792468
- Leetcode 99.恢复二叉搜索树
恢复二叉搜索树 二叉搜索树中的两个节点被错误地交换. 请在不改变其结构的情况下,恢复这棵树. 示例 1: 输入: [1,3,null,null,2] 输出: [3,1,null,null,2] 示例 ...
- 20170613NOIP模拟赛
共3道题目,时间3小时 题目非原创,仅限校内交流使用 题目名称 Graph Incr Permutation 文件名 graph incr permutation 输入文件 graph.in incr ...
- Java并发:线程安全的单例模式
转载请注明出处:jiq•钦'stechnical Blog 1.饿汉式 public class Singleton { private final static Singleton INSTANCE ...
- 两个栈实现队列,开始做错了 —— 剑指Offer
开始大意了,这道题目居然做错了: https://www.nowcoder.net/practice/54275ddae22f475981afa2244dd448c6?tpId=13&tqId ...