暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据模型设计:漫画E-R模型

会飞的一十六 2025-03-28
169

0 E-R模型
        露娜公主和凯恩使用E-R模型掌握了王国的水果出口现状。

        首先,当然是要先掌握作为数据库管理对象的现实世界了。 使用E-R模型的分析,从现实世界抽取了实体(Entity)。实体就是像水果、出口国这些在现实世界存在的事物。从实体入手,自然就可以很容易地分析对象了。

另外,通过E-R模型的分析,还可以掌握实体之间的关系(Relationship)。通过分析实体之间的关系,就可以把握现实世界了。露娜公主和凯恩就是把握了水果和出口国之间的"销售关系"从而,进行分析的。

       编码王国的水果出口到多个国家。另外,每个国家都会进口多种水果。因此,使用E-R模型分析出水果和出口国之间存在着多对多的关系,可以认为是M种水果对应N个出口国。这种实体之间的对应个数我们称做基数(Cardinality)。

核心概念提取:

E-R模型三要素:
  • 实体(Entity):水果、出口国等现实事物
  • 关系(Relationship):实体间的关联(如销售关系)
  • 基数(Cardinality):多对多关系(M种水果↔N个出口国)
分析流程:
现实世界→抽取实体→分析关系→建立多对多模型→通过基数量化关系
1 ER模型分析方法
示例1:一对一关系
一个出口国管理一个出口记录信息。
这样的关系我们称之为1对1的关系(one to one)
示例2:一对多的关系
露娜公主有多个仆人,这些仆人不属于其他的公主或国王。
这样的关系我们称之为1对1的关系(one to many)
示例3:多对多的关系
水果销往多个出口国,出口国购买多种水果。
这样的关系我们称之为1对1的关系(many to many)
2 试着用ER模型来分析

参照上面的事例分析,画出下面事例的 E - R 图。

Q1
一名职员负责多个客户。一个客户不会由两个或两个以上的职员来负责。

Q2
学生可以借出多本图书。
图书可以借给多个学生。

Q3
学生上多个科目的课程。
一个课程有多个学生。
一个老师教授多门课程。
一个课程由一个老师负责。
Q4
顾客可以开设多个储蓄账户。
一个账户只能由一个顾客开设。
各银行管理着多个储蓄账户。
一个账户只能由一个银行管理。
用 E-R 模型分析出来的结果不一定只有一个。因为观察世界的方法多种多样,我们只要按照自己的方法来做就可以了。通过 E-R 模型的分析,能够把握现实世界。当然也就能够将沉默的现实世界套入模型进行分析了。
4 表格的规范化
    露娜公主和凯恩后来学习了规范化 (normalization)。规范化就是将现实世界落实在关系数据库表格里的工作。为了使用关系数据库正确管理从现实世界提取的数据,规范化的工作就非常必要。我们将本章中的规范化工作总结如下 ( 阴影部分为主键 ):
非范式是没有除去数据重复的表格。关系数据库中是不能使用这种表格来进行数据管理的。因此需要对其做分割表格的规范化工作。
第一范式 (first normal form) 将表格分割为单纯的二元表格,即一栏中只有一个项目,每一列都是不可分割的基本数据项。分割表格时除去了重复项目。
第二范式 (second normal form) 是按照通过可识别数据的键来确定其他列值的原则分割表格。这样,通过主键确定其他列的数值。
关系数据库中这种 “通过某一列的值确定其他列的数值” 的原则我们称之为函数依赖 (functionally dependant)。第二范式是根据主键和其他列之间的函数依赖关系分割表格的。
第三范式 (third normal form) 是按照只能由主键确定其他列值的原则分割的表格。在关系数据库的函数依赖中,“通过某一列的值间接确定其他列的值” 我们称之为传递依赖 (transitively dependant)。第三范式是去除传递依赖而分割表格得到的。
5 试着规范化
以下情况该如何进行规范化呢?请思考一下。

Q5下表如 Q2 所述,是管理借书的表格。他们被规范化到第几层了?

表格内容

Q6下表是管理借书的表格。他们被规范化到第几层了?

表格内容

Q7下表是记录各部门所属职员每月销售额的表格。一个部门有多个职员,职员不能属于多个部门。请规范化至第三范式。

表格内容

职员编号职员姓名职员销售额部门编号部门名称

Q8下表显示的是订单系统,请规范化至第三范式。注意,一个订单只能处理一个顾客。另外,一个订单编号能够处理多个商品。一个订单只能由一个人来负责。

表格内容

订单号日期顾客编号顾客名称商品编号商品名称单价负责人编号负责人数量
Q9
下表显示的是订单系统,请规范至第三范式。但是,商品是按照商品品类来划分的。

表格内容

订单号日期顾客编号顾客名称商品编号商品名称单价商品品类编号商品
针对各种各样的状况都能够设计出一套关系数据库表格,这一点,非常重要。

6 设计数据库

这里我们学完了设计数据库的知识。但是,数据库的设计并未就此结束。我们还需要学习数据库内部文件构造的详细设计知识及数据库的录入、显示方法等相关知识。通常作为设计数据库的步骤,可以分为 “概念模式”、“内部模式” 和 “外部模式” 三部分。概念模式 (conceptual schema) 是指将现实世界模型化的阶段进而,是确定数据库理论结构的阶段。概念模式的设计是通过 E-R 模型把握现实世界,进而规范化表格来实现的。内部模式 (internal schema) 是从计算机内部看到的数据库,是确定数据库物理构造的阶段。内部模式的设计通过设计数据库高速检索方法来实现。外部模式 (external schema) 是从用户和应用的角度来观察的数据库。外部模式的设计是通过设计应用程序所必要的数据来实现的。

露娜公主和凯恩在本章以概念模式为中心设计了数据库,但仍需要继续学习以便更好地设计数据库。
基础的数据库设计已经完成了,在下一章我们马上就要开始学习如何使用数据库了。

7 小 结

● E-R 模型用来分析实体和关系。
● 实体之间的关系数分为一对一、一对多和多对多。
● 关系数据库的表格有必要规范化。
● 关系数据库的设计分为概念模式、内部模式和外部模式三个部分。

往期精彩
憨憨雷军 VS 小米数据团队面试官:全量表变增量表,表名还需要区分吗?
面试提问:数仓宽表是不是字段越多越好?宽表多宽才合适,有标准吗?
面试提问:数仓中维度退化一般在哪一层做?可不可以不进行维度退化?
数仓面试提问: DWD层可不可以不按业务过程进行原子性拆分?
数仓面试提问: DWD层可不可以不按业务过程进行原子性拆分?
从O(n²)到O(n):基于累计求和模型的线性递归模式优化与多场景实战

文章转载自会飞的一十六,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论