• MySQL数据分析-(5)数据库设计之ER模型


    大家好,我是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图,手机这个实体有三个属性,分别是商品编码,商品名称和单价,渠道商这个实体有两个属性,分别是渠道商编码和渠道商名称;这个
    手机和渠道商之间就是由手机卖给渠道商这件事联系起来的,这时就可以把“销售”作为关系来考虑了

    @数据分析-jacky

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

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

    (三)具体设计-三范式

    2.1基础铺垫

    2.1.1 第一范式(1NF)

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

    2.1.2 第二范式(2NF)

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

    2.1.3 第三范式(3NF)

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

    2.2 三范式的核心逻辑

    • 数据库的核心思想

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

      • 不要出现冗余数据(用最少的空间存储最多的信息),第二范式是避免了冗余行的出现,第三范式是避免了冗余列的出现;
  • 相关阅读:
    python递归可视化
    python递归基础
    python之双端队列及回文检测
    python接口多线程压测
    python获取文件目录下文件名并修改名称
    Linux 截取日志命令
    python计算后续表达式
    python十进制数转换成任意进制数
    python|os库
    python|英文标题格式化
  • 原文地址:https://www.cnblogs.com/shujufenxi/p/8543531.html
Copyright © 2020-2023  润新知