大家好,我是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. C# 中类的成员有哪些?

    类(class)是C#类型中最基础的类型.类是一个数据结构,将状态(字段)和行为(方法和其他函数成员)组合在一个单元中.类提供了用于动态创建类实例的定义,也就是对象(object).类支持继承(inh ...

  2. tasklist、taskkill命令使用

    tasklist.taskkill命令使用 在Windows XP中新增了两个命令行工具“tasklist.taskkill”.通过“Ctrl+Alt+Del”组合键,打开“任务管理器”就可以查看到本 ...

  3. 动态规划-最大算式 蓝桥杯ALGO-116

    问题描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大.因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号 ...

  4. Windows10+Android Studio 3.5编译项目报错——NDK Resolution Outcome: Project settings: Gradle model version=4.10.1, NDK version is UNKNOWN

    项目背景: 系统有C.D两个盘,Android Studio安装在D盘,sdk安装在C盘. 出现的问题: 从git拉取项目后,一直编译不通过,提示“NDK Resolution Outcome: Pr ...

  5. Mysql的管理

    Linux系统中:mysql进入的命令为mysql -u root -p +你的mysql密码. Mysql是如何添加用户呢? 在mysql命令行下,使用use mysql;进入mysql的数据库中. ...

  6. IDEA部署项目到远程服务器

    一.idea安装阿里插件Alibaba Cloud Toolkit 二.添加Host 三.应用部署 四.修改源程序重新部署 五.查看实时日志 欲买桂花同载酒,终不似,少年游

  7. Codeforces 850C E. Arpa and a game with Mojtaba

    对每个数统计其素数因子各次方数的数,然后通过y = (x>>i) | (x&((1<<(i-1))-1)) 模拟delete x and add  to the lis ...

  8. idou老师教你学Istio 23 : 如何用 Istio 实现速率限制

    使用 Istio 可以很方便地实现速率限制.本文介绍了速率限制的使用场景,使用 memquota\redisquota adapter 实现速率限制的方法,通过配置 rule 实现有条件的速率限制,以 ...

  9. python+Appium自动化:日志logging模块

    日志级别 debug.info.warn.error.critical五个级别 logging模块构成(四部分) logger(记录器,用于日志采集) Handler(处理器,将日志记录发送到合适的路 ...

  10. Fastdfs集群搭建

    1.关于集群,网上说最少要三台,其实也没必要,两台就够了 2.实验环境 192.168.2.201 tracker.storage.nginx + fastdfs-nginx-module-maste ...