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图,手机这个实体有三个属性,分别是商品编码,商品名称和单价,渠道商这个实体有两个属性,分别是渠道商编码和渠道商名称;这个
手机和渠道商之间就是由手机卖给渠道商这件事联系起来的,这时就可以把“销售”作为关系来考虑了
- 我们再来看这个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模型的更多相关文章
- 数据库设计与 ER 模型 - 数据库系统原理
数据库系统生存周期 数据库应用系统的开发是一项软件工程,一般具有信息的采集.组织.加工.抽取.综合.传播等功能,但又有自己的特点,所以称为 数据库工程. 数据库应用系统从开始规划.设计.实现.维护到最 ...
- 数据库设计和ER模型-------之ER模型的基本概念(第二章)
ER模型(实体联系模型)的基本元素 实体:是一个数据对象,在ER模型中,实体用方框表示,方框内注明实体的名称 联系:表示一个或多个实体之间的关联关系,联系用菱形框表示,并用线段将其与相关的实体联系起来 ...
- 数据库设计和ER模型-------之关系模型的基本概念(第二章)
关系模型的基本术语 定义:用二维表格来表示实体集,用关键码表示实体之间联系的数据模型称为关系模型 有时也习惯称呼关系为表或表格,元组为行(Row),属性为列.关系中属性个数称为“元数”,元组个数称为“ ...
- 数据库设计和ER模型-------之数据库系统生存期(第二章)
数据库设计 概念:开发人员利用开发环境表达用户要求.设计构造最优的数据模型,然后据此建立数据库以及其应用系统,这个过程称为数据库设计 数据库生存期 1968年首次提出“软件工程”的概念 概念:我们把数 ...
- 数据库原理 第七章 数据库设计和ER模型
第七章讲述一个E-R设计如何转换成一个关系模式的集合以及如何在该设计中找到某些约束. 1.概念设计定义了数据库中表示的实体.实体的属性.实体之间的联系,以及实体和联系上的约束 在设计一个数据库模型的时 ...
- 第六章 数据库设计之ER模型
在ER图中实体用方框表示 实体其实就相当于一个二维表,实体实例就相当于二维表中的一行 属性在二维表中用椭圆表示,属性就是描述实体特征的数据项 概念:键(也被成为候选键):1,属性集合K上的行唯一 ...
- 数据库系统(四)---关系型数据库设计及E-R图
1.关系型数据库: 关系型数据库是一类采用关系模型作为逻辑数据模型的数据库系统,遵从数据库设计的基本步骤,包括:需求分析.概念结构设计.逻辑结构设计.物理结构设计.数据库实施.数据库的运行和维护等阶段 ...
- SQL Server数据库学习笔记-E-R模型
实体(Entities)联系(Relationships)模型简称E-R模型也称E-R方法,是由P.P.Chen于1976年首先提出的.还有一个关键元素Attributes-属性,它提供不受任何数据库 ...
- 使用MySQL Workbench进行数据库设计——MySQL Workbench用法总结
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/48318877 本文出自[我是干勾鱼的博客] 1 简单介绍 MySQL Workb ...
随机推荐
- IDEA忽略不必要提交的文件
1.在idea中安装插件用来生成和管理 .gitignore 文件,安装成功后重启idea 2.新建.gitignore 文件 3.将不需要提交的文件添加到.gitignore 4.删除缓冲文件 . ...
- Opencl 学习笔记
1. HelloWorld
- 关于el-select 单选与多选切换的时候报错的解决办法
错误: 出错原因: 估计是单选切换到多选的时候元素没有刷新的原因,猜测 解决办法: 1.在el-select上面加上一个条件判断, 条件判断中绑定一个变量值 例如 :multiple="is ...
- MGB的生成代码解析
目录 @ 问题描述 文字描述 问题是在我刚刚学习MyBatis逆向工程时出现的,我发现使用Example是可以创建两个Criteria对象,并且两个对象也都可以添加条件,但是在运行过程中只会执行第一次 ...
- 鼠标指针光标样式css cursor default pointer hand url
一.cursor语法与结构 1.cursor语法:cursor : auto | crosshair | default | hand | move | help | wait | text | w- ...
- MyBatis核心配置文件详析mybatis-cfg.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC & ...
- ASTA存在的问题
1.客户端执行一个查询,提示xx字段不存在.跟踪代码,原来服务端ADOQuery设置BCD返回,客户端AstaClientDataSet在设计期加了字段是ftFloat类型,这两个类型不同产生的错误. ...
- CentOS 7安装Hadoop集群
准备三台虚拟机,ip分别为192.168.220.10(master).192.168.220.11(slave1).192.168.220.12(slave2) 准备好jdk-6u45-linux- ...
- 使用SQLAlchemy,以及问题处理
https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0014021031294178 ...
- [Selenium3+python3.6]自动化测试3-八种元素元素定位(Firebug和firepath)
参考http://www.cnblogs.com/yoyoketang/p/6123890.html #coding=utf-8 from selenium import webdriverdri ...