数据建模(E-R图)
※ 软件开发的步骤可大致分为(瀑布模型):
1.需求分析
2.系统设计
3.编码实现
4.系统测试
5.运行维护
※ 建模是在步骤2设计中的,(软件powerdesigner)
※ 实体-关系图
※ 实体-关系图(Entity Relationship Diagram),也称为E-R图,提供了表示实体、
属性和关系的方法,用来描述现实世界的概念模型。
※ 构成E-R图的基本要素是实体、属性和关系
1 .实体(Entity):实体用来表示具有相同特征和性质的事物(类似于java的类),实体由实体名和实体属性来表示。
2 .属性(Attribute):实体所具有的某一特性,一个实体可以有若干个属性
3 .关系(Relationship):实体彼此之间相互连接的方式称为关系。
一般可分为以下 3 种类型:
一对一关系 (1 ∶ 1)一对多关系 (1 ∶ N)多对多关系 (M ∶ N)
※ 构建E-R图的标记
实体之间关系
may-be(虚线) 和 must-be(实线)
在实体与实体之间的关系中,都会存在着may-be和must-be这俩种情况,例如:
系统中有顾客和订单俩个实体(1:N关系),一个顾客对应多个订单,一个订单对应一个顾客,而且一个顾客可以(may be)没有订单和他对应,一个订单一定(must be)会有顾客和它对应.
ER图中实体中符号的表示
1) # : 唯一, 以后可能表示为主键
2) * : 非空
3) o : 可有可无
4) 虚线: may be 顾客这边虚线,顾客可能没有订单
5) 实线: must be 订单这边实线,订单一定是属于某个客户。
6) 竖杠(|): 代表要强制在(|)一方建立一个联合主键,将对方ID拿过来做联合主键
7) 伞状图标代表多的一方,不是伞状图标则代表一的一方
※ 数据库设计步骤:
1.实体的名字转换为表的名字
2.实体的属性转换为表中的列
3.具有唯一特点的属性设置为表中的主键
4.根据实体之间的关系设置为表中某列为外键列(主外键关联)
注意:第四步主要是:实体关系—>表关系
注意:
设计关系数据库时,遵从不同的规范要求,才能设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。
※ 关系数据库有六种范式:
第一范式(1NF)
第二范式(2NF)
第三范式(3NF)
巴斯-科德范式(BCNF)
第四范式(4NF)
第五范式(5NF,又称完美范式)
注:满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。
※ 第一范式(原子性,列不可分)
一个表中,每个列里面的值是不能再分割的.
例如:我们设计的表中有一个列是:爱好这个列的值可能会是这样:足球篮球乒乓球但是这值是可以再分割的:足球、篮球、乒乓球
所以这种设计是不满足第一范式
※ 第二范式(非主键列都必须依赖于主键列)
第二范式是在满足第一范式的基础上
表中的非主键列都必须依赖于主键列
例如:订单表: 订单编号 是主键订单编号 订单名称 订单日期 订单中产品的生产地
这几个非主键列中,产品生产地是不依赖于订单编号的,所以这种设计是不满足第二范式
※ 第三范式:(不能产生依赖传递)
第三范式是在满足第二范式的基础上
表中的非主键列都必须直接依赖于主键列,而不能间接的依赖.
例如:订单表: 订单编号 是主键订单编号 订单名称 顾客编号 顾客姓名
顾客编号依赖于订单编号,顾客姓名依赖于顾客编号,从而顾客姓名间接的依赖于订单编号,那么这里产生了依赖传递,所以这个设计是不满足第三范式的
※ 主外键说明
※ 主键:
1.能做主键的列必要满足非空唯一的特点
2.只要满足非空唯一的任何列都可以做主键
3.可以让表中一个有意义的列做主键,比如说学号,它既表示学生学号又作为表中的主键,因为这个列满足非空唯一的条件
4.也可以找一个没有意义的列做主键,就是用来唯一标识一行记录的
5.我们可以让多个列联合在一起做表中的主键,那么它就是联合主键,要求这几个列的值联合在一起是非空唯一的
※ 外键:
1.表中的某一个列声明为外键列,一般这个外键列的值都会引用于另外一张表的主键列的值(有唯一约束的列就可以,不一定非要引用主键列)
2.另外一张表的主键列中出现过的值都可以在外键列中使用,没有出现过的值,都不能使用
3.外键列值也可以为空的,提前是这个外键列在表中不做主键,因为我们也可以把表中的外键列当做主键来使用(只有满足非空唯一的要求就可以)
4.如果把B表中的联合主键的值引用到A表中做外键,因为是俩个列在B表中做联合主键,那么A表引用过来的时候也要把俩个列的值都引用过来,那么它们在A表中就会作为一个联合外键出现
数据建模(E-R图)相关推荐
- 【R图秀-3】——“全球和平指数”可视化
作者简介Introduction 傅兴:个人公众号:Rapp 往期回顾 [R图秀-1]12306列车数据可视化 [R图秀-2]社交网络数据可视化(一) 今天在Tableau Public的网站上看到一 ...
- R语言使用ggradar包可视化基本雷达图(radar chart、蜘蛛图spider plot)、可视化单个数据对象的雷达图
R语言使用ggradar包可视化基本雷达图(radar chart.蜘蛛图spider plot).可视化单个数据对象的雷达图 目录
- R语言使用ggradar包可视化基本雷达图(radar chart、蜘蛛图spider plot)、可视化单个数据对象的雷达图、自定义雷达图的线条类型、线条宽度、数据点大小、色彩等
R语言使用ggradar包可视化基本雷达图(radar chart.蜘蛛图spider plot).可视化单个数据对象的雷达图.自定义雷达图的线条类型.线条宽度.数据点大小.色彩等(Customize ...
- ER图,数据建模与数据字典
需求分析是做项目中的极为重要的一环,而作为整个项目中的'血液'--数据,更是重中之重.viso,workbench,phpmyadmin等软件可以帮我们更好的处理数据分析问题. ER图 E-R方法是 ...
- 哈工大大数据实验_【新闻动态】南京大学PASA大数据实验室在KDD Cup 2020 AutoGraph自动化图数据建模国际挑战赛中荣获第二名...
近期,在素有"数据世界杯"之称的KDD Cup 2020数据挖掘国际大赛AutoML自动化机器学习赛道(AutoGraph自动化图数据建模)中,南京大学PASA大数据实验室代表队P ...
- R 数据可视化 02 | 火山图
R 数据可视化 02 | 火山图 文章目录 R 数据可视化 02 | 火山图 一. 示例数据准备 二. 环境需求 三. 绘制火山图 1. 火山图 2. 标记基因的火山图 四. 保存为图片 五. 详细参 ...
- 数据建模基础知识——实体关系图
数据建模是设计数据库的重要组成部分.如果要获得最佳结果,请确保利用可用的数据模型.请继续阅读以了解更多信息. 每个关系数据库都有明确定义的对象以及这些对象之间的关系.它们共同构成了数据模型. 本文介绍 ...
- R语言使用fmsb包可视化基本雷达图(radar chart、蜘蛛图spider plot)、数据预处理(计算每个变量的最大值和最小值、并合并到原数据集)、可视化单个数据对象的雷达图
R语言使用fmsb包可视化基本雷达图(radar chart.蜘蛛图spider plot).数据预处理(计算每个变量的最大值和最小值.并合并到原数据集).可视化单个数据对象的雷达图 目录
- R语言 零基础入门教程第11章 Rattle可视化数据挖掘工具(1)Rattle简介及安装 功能预览 数据导入 数据探索 数据建模 模型评估 Rattle实例
关注公众号凡花花的小窝,收获更多的考研计算机专业编程相关的资料 本章内容 Rattle简介及安装 功能预览 数据导入 数据探索 数据建模 模型评估 Rattle实例 本章目标 了解Rattle的安装及 ...
最新文章
- javascript去除首尾空白字符
- java 导入包报错_Intellij IDEA 导入个推jar包 报错java.lang.NoClassDefFoundError
- 15套漂亮的 PSD 格式的图标,不一样的视觉效果
- 21、HTML <select>标签(下拉列表)
- LiveMigration之四配置高可用虚拟机
- (原創) 我有牙周病了 (日記)
- 专访|从程序员到架构师:交流和分享最能让技术人进步
- Java Web学习总结(27)——JavaEE中Web服务器、Web容器、Application服务器区别及联系
- Linux 进程虚拟地址空间布局
- 自建CA生成证书详解
- [渝粤教育] 西南科技大学 土木工程施工 在线考试复习资料(2)
- 【手写数字识别】基于matlab GUI BP神经网络手写数字识别系统【含Matlab源码 1639期】
- SQLServer------基本操作
- oracle触发器实例
- 如何使用Steam在线播放游戏
- 世界海洋日 | TcaplusDB号召你一同保护海洋生物多样性
- 【小菜虫的学习笔记--n5x刷机root】
- 大数据与人工智能人脸识别
- Java操作Excel三种方式POI、Hutool、EasyExcel
- 实验07 PHP互动网页