大家好,我是jacky,很高兴跟大家分享本课时的内容,从本节课开始,就开始了我们第二章的学习,第一章我们抛出了若干问题,从第二章开始往后,都是解决问题的一个过程;

第一章的案例中,我们拿手机销售公司举例,我们看到了因为没有构架数据共享体系,该公司的数据管理是混乱并且低效的,那么本章节,我们就来给这家公司构建一个数据库体系吧;

(一)数据库设计四步曲

数据库设计是整个实际业务项目里最为核心的部分,如果说我们把项目中数据库设计攻克了,那么通常来说,这个项目就成功了一半;如果在数据库设计的环节出了问题,即使我们代码写的再牛,框架用的再熟,项目大概率都是要失败的;

我们说,无论我们要设计的数据库的大小和复杂程度如何,在进行数据库设计时,都遵循着下面这四个步骤:

  • (1) 收集信息

  • (2) 标识实体

  • (3) 标识每个实体需要存储的详细信息

  • (4) 标识实体之间的关系

1.1 收集信息

在创建数据库之前,我们要充分理解数据库需要完成的任务和功能。简单的说,就是需要了解数据库需要存储哪些信息和数据,要实现哪些功能;拿手机销售公司为例,为了给大家讲的深入浅入,jacky这里就给定这家公司一个任务和功能,就是将手机销售给各个渠道商代理;

  • 我们说手机销售给各个渠道商代理这个情景就是我们收集到的信息;

1.2 标识实体

我们说设计数据库的第二个步骤就是标识实体;这里jacky解释下实体的含义,实体可以使有形的事物,比如说人或产品;也可能是无形的事物,比如说金融交易、公司的部门等等。

  • 设计数据库就要在我们的系统中标识出这些实体,那么给我们手机销售给渠道商这个特定场景标识下实体;

    • 手机和渠道商
  • 这里jacky特别强调两下:

    • 实体一般是名词,一个实体只描述一件事情,不能重复出现含义相同的实体;

    • 数据库中的每个不同的实体都拥有一个与其相对应的表,按照我们举例的需求,在手机销售管理的数据库中,因为有手机和渠道商两个实体,所以至少有手机表和渠道商表这两张表,再深入的解释,jacky下次课分享,本课时,大家先做一个了解;

1.3 标识每个实体需要存储的详细信息

在标识实体后,我们接下来就要标识每个实体存储的详细信息,也就是实体的属性,这些属性将组成表中的列;比如案例中手机的属性有商品编码、商品名称、单价这3个属性;渠道商有渠道商编码和渠道商姓名2个属性

1.4 标识实体之间的关系

关系数据库有一项非常强大的功能,就是它能够关联数据库中各个项目的相关信息,那么我们给定的手机销售给渠道商这个任务中,把手机和渠道商关联起来的就是销售,大家说是不是;

(二)概要设计-绘制E-R图

我们说每个行业都有各自不同的图形化表达方式:机械行业需要机械制图,建筑行业需要施工图,那么我们数据库设计也需要图形化的表达方式——E-R图,我们也叫实体-关系图,

拿手机销售公司为例,数据库设计就是要把现在公司的销售管理现状制作成模型,这样才便于分析,这个分析中使用的模型就“E-R模型”

2.1 如何绘制

E-R图以图形的方式将数据库的整个逻辑结构表示出来;E-R图的组成包括以下几个部分:

  • 矩形:表示实体集;

  • 椭圆:表示属性;

  • 菱形:表示联系集;

  • 直线:用来连接属性和实体集,也用来连接实体集和联系集

2.2 案例实操

我们看一下这张E-R图,手机这个实体有三个属性,分别是商品编码,商品名称和单价,渠道商这个实体有两个属性,分别是渠道商编码和渠道商名称;这个

手机和渠道商之间就是由手机卖给渠道商这件事联系起来的,这时就可以把“销售”作为关系来考虑了

  • 我们再来看这个E-R图,,这个M与N是什么意思呢?就是M种品牌手机销售给N个渠道商,这时我们也可以通过E-R模型分析出手机与渠道商之间存在着多对多的关系,我们给这种实体之间的对应个数一个更学术一点的名称,就是“基数”;

上面就是本课时的分享,谢谢大家

(三)具体设计-三范式

2.1基础铺垫

2.1.1 第一范式(1NF)

  • 数据库的列不可分割,如果有的列包含多种信息,可以把它抽取出来成为一个单独的表;

2.1.2 第二范式(2NF)

  • 数据表中的每一行,都应该有唯一的标识,即每一行都应有主键区分

2.1.3 第三范式(3NF)

  • 数据表中的所有非关键字段,必须依赖于主键

2.2 三范式的核心逻辑

  • 数据库的核心思想

    • 为了数据的存储
  • 三范式的核心思想

    • 不要出现冗余数据(用最少的空间存储最多的信息),第二范式是避免了冗余行的出现,第三范式是避免了冗余列的出现;

MySQL数据分析-(5)数据库设计之ER模型的更多相关文章

  1. 数据库设计与 ER 模型 - 数据库系统原理

    数据库系统生存周期 数据库应用系统的开发是一项软件工程,一般具有信息的采集.组织.加工.抽取.综合.传播等功能,但又有自己的特点,所以称为 数据库工程. 数据库应用系统从开始规划.设计.实现.维护到最 ...

  2. 数据库设计和ER模型-------之ER模型的基本概念(第二章)

    ER模型(实体联系模型)的基本元素 实体:是一个数据对象,在ER模型中,实体用方框表示,方框内注明实体的名称 联系:表示一个或多个实体之间的关联关系,联系用菱形框表示,并用线段将其与相关的实体联系起来 ...

  3. 数据库设计和ER模型-------之关系模型的基本概念(第二章)

    关系模型的基本术语 定义:用二维表格来表示实体集,用关键码表示实体之间联系的数据模型称为关系模型 有时也习惯称呼关系为表或表格,元组为行(Row),属性为列.关系中属性个数称为“元数”,元组个数称为“ ...

  4. 数据库设计和ER模型-------之数据库系统生存期(第二章)

    数据库设计 概念:开发人员利用开发环境表达用户要求.设计构造最优的数据模型,然后据此建立数据库以及其应用系统,这个过程称为数据库设计 数据库生存期 1968年首次提出“软件工程”的概念 概念:我们把数 ...

  5. 数据库原理 第七章 数据库设计和ER模型

    第七章讲述一个E-R设计如何转换成一个关系模式的集合以及如何在该设计中找到某些约束. 1.概念设计定义了数据库中表示的实体.实体的属性.实体之间的联系,以及实体和联系上的约束 在设计一个数据库模型的时 ...

  6. 第六章 数据库设计之ER模型

    在ER图中实体用方框表示 实体其实就相当于一个二维表,实体实例就相当于二维表中的一行 属性在二维表中用椭圆表示,属性就是描述实体特征的数据项 概念:键(也被成为候选键):1,属性集合K上的行唯一   ...

  7. 数据库系统(四)---关系型数据库设计及E-R图

    1.关系型数据库: 关系型数据库是一类采用关系模型作为逻辑数据模型的数据库系统,遵从数据库设计的基本步骤,包括:需求分析.概念结构设计.逻辑结构设计.物理结构设计.数据库实施.数据库的运行和维护等阶段 ...

  8. SQL Server数据库学习笔记-E-R模型

    实体(Entities)联系(Relationships)模型简称E-R模型也称E-R方法,是由P.P.Chen于1976年首先提出的.还有一个关键元素Attributes-属性,它提供不受任何数据库 ...

  9. 使用MySQL Workbench进行数据库设计——MySQL Workbench用法总结

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/48318877 本文出自[我是干勾鱼的博客] 1 简单介绍 MySQL Workb ...

随机推荐

  1. 使用RabbitMQ实现分布式事务

    RabbitMQ解决分布式事务思路: 案例: 经典案例,以目前流行点外卖的案例,用户下单后,调用订单服务,让后订单服务调用派单系统通知送外卖人员送单,这时候订单系统与派单系统采用MQ异步通讯. Rab ...

  2. 箭头函数的arguments不可用

    ES5中的arguments function func(a,b,c){ console.log(arguments[0],arguments[1],arguments[2]) } func(1,2, ...

  3. liteide

    /liteide$ bin/liteide Cannot mix incompatible Qt library (version 0x40806) with this library (versio ...

  4. VBA运算符(九)

    运算符可以用一个简单的表达式定义,例如:4 + 5等于9.这里,4和5称为操作数,+被称为运算符.VBA支持以下类型的运算符 - 算术运算符 比较运算符 逻辑(或关系)运算符 连接运算符 算术操作符 ...

  5. LeetCode 【2】 Reverse Integer --007

    六月箴言 万物之中,希望最美:最美之物,永不凋零.—— 斯蒂芬·金 第二周算法记录 007 -- Reverse Integer (整数反转) 题干英文版: Given a 32-bit signed ...

  6. BP神经网络—java实现

    神经网络的结构 神经网络的网络结构由输入层,隐含层,输出层组成.隐含层的个数+输出层的个数=神经网络的层数,也就是说神经网络的层数不包括输入层.下面是一个三层的神经网络,包含了两层隐含层,一个输出层. ...

  7. 【Hibernate】一级缓存

    一.概述 二.证明Hibernate的一级缓存的存在 三.一级缓存中快照区 四.管理一级缓存 五.Hibernate一级缓存的刷出时机 六.操作持久化对象的方法 一.概述 什么是缓存: 缓存将数据库/ ...

  8. Android 连接.net WebService 工具类代码

    安卓代码: import android.os.Handler;import android.os.Message; import org.ksoap2.SoapEnvelope;import org ...

  9. 用pythoninstall cefpython打包exe,制作自己的浏览器

    cefpython浏览器 介绍 用pythoninstall cefpython打包exe,制作自己的浏览器, 软件架构 PyInstaller: 3.4 Python: 3.5.4 Platform ...

  10. Image Processing and Analysis_15_Image Registration:Mutual-Information-Based Registration of Medical Survey——2003

    此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...