设计数据库之概念模式:E-R模型

news2024/9/27 21:21:34

Chapter3:设计数据库之概念模式:E-R模型

笔记来源:《漫画数据库》—科学出版社

设计数据库的步骤:
概念模式

概念模式(conceptual schema)是指将现实世界模型化的阶段进而,是确定数据库理论结构的阶段。
概念模式的设计是通过E-R模型把握现实世界,进而规范化表格来实现的。

内部模式

内部模式是从计算机内部看到的数据库,是确定数据库物理构造的阶段。
内部模式的设计通过设计数据库高速检索方法来实现。

外部模式

外部模式是从用户和应用的角度来观察的数据库。
外部模式的设计是通过设计应用程序所必要的数据来实现的。

3.1 分析现状:E-R模型

设计数据库前需要对现实状况进行分析,这时就需要ER模型
实体就是能够认知的现实世界的事物。例如:例如将水果出口至其他国家这件事,就可以将水果和出口国作为实体来考虑。

关系就是表示实体之间有着怎样的关联。例如:水果和出口国之间就是由水果卖给出口国,这时可以把销售作为关系来考虑

实体(Entity),关系(Relationship)两个概念来考虑现实世界的模型就是E-R模型

一对一的关系
一个出口国管理一个出口记录信息。

一对多的关系
一个公主多个仆人

多对多的关系
水果销往多个出口国。
出口国购买多种水果。

3.2 规范化表格


将销售报表制作成表格

因为报表一行有两个数值,这个表格还不能直接用于数据库,如果一行只有一个数值的表格就容易处理了,这时需要把一张表拆分成多张表(一行仅有一个数值)

最初表格(非范式)分割为多个表格得到第一范式

非范式

非范式是没有除去数据重复的表格。关系数据库中是不能使用这种表格来进行数据管理的。因此需要对其做分割表格的规范化工作。


拆分为橙色圈住的一张表和蓝色圈住的一张表

第一范式

第一范式:表中每一列的属性都不可再分.
比如地址这个属性,很显然它可以分为省、市、区、乡镇等等,根据你的实际需求,如果你需要获取用户所在省份的话,很显然如果你只设计一个地址属性,是不方便直接获取省份的。
–引自如何通俗理解第一、二、三范式?

第一范式将表格分割为单纯的二元表格,即一栏中只有一个项目,每一列都是不可分割的基本数据项。分割表格时除去了重复项目。—引自《漫画数据库》—科学出版社

分成日期、出口国编码、出口国名称的表格 (销售表)和 商品编码、商品名称、单价、数量的表格(销售明细表(第一范式2))报表编码在两张表格中均有

我们看看第一范式2是否可以正确管理商品

在销售明细表中,如果橙子还没有销售,但此时橙子又进来货了,这是进货而不是销售,所以不能向销售明细表中更新进货的数据,至此单单一张销售明细表还不能正确管理商品,我们需要将销售明细表再次拆分
商品表(第二范式1)中商品编码是主键、销售明细表(第二范式2)中报表编码+商品编码这个组合是主键

我们再来看看第一范式1是否可以正确管理商品

我们发现销售表满足第二范式要求,由于上面第一范式2已经拆分为第二范式1和2,所以我们将其称之为第二范式3

第二范式:表中每一列的属性都不可再分,且非主属性完全依赖于主属性.
–引自如何通俗理解第一、二、三范式?
主键的值可以确定其他列的值

第二范式(second normal form)是按照通过可识别数据的键来确定其他列值的原则分割表格。这样,通过主键确定其他列的数值
关系数据库中这种“通过某一列的值确定其他列的数值”的原则我们称之为函数依赖。
第二范式是根据主键和其他列之间的函数依赖关系分割表格的。—引自《漫画数据库》—科学出版社

如果某个国家现在没有进口我国的水果,但想将其作为未来潜在用户加入到表中,这时这个国家是不能放到销售表中的,我们将此第二范式3再次拆分,拆为销售表和出口国表

第三范式:表中每一列的属性都不可再分,且非主属性完全依赖于主属性,且每个非主属性都不传递函数依赖于主属性.
–引自如何通俗理解第一、二、三范式?
由主键唯一确定其他列的表格叫第三范式

第三范式是按照只能由主键确定其他列值的原则分割的表格
在关系数据库的函数依赖中,“通过某一列的值间接确定其他列的值”我们称之为传递依赖
第三范式是去除传递依赖而分割表格得到的
—引自《漫画数据库》—科学出版社

下图来自:第一范式,第二范式,第三范式,BCNF范式理解

最初的一个销售报表最终拆分为销售表、出口国表、销售明细表、商品表,四张满足第三范式的表格,主键的值确定,则其他列的值唯一确定。这个拆分过程是逐步剔除主键与非主键部分依赖和传递依赖关系的过程,使得各个表即使添加数据也不会出现不一致的数据等问题,也使得各表间的关系明确。


各个第三范式的表格间关系明确

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1538782.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PMSM 永磁同步电机滑膜控制 SVPWM矢量控制 matlab simulink 仿真

仿真搭建平台: (1)该模型采用matlab/simulink 2016b版本搭建,使用matlab 2016b及以上版本打开最佳; (2)该模型已经提前转换了各个常用版本(最低为matlab2012b),防止出现提示版本过高的情况。 模型截图: 算…

基于springboot+vue的反欺诈平台的建设

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

律师如何看待项目管理中的技术风险

大家好,我是不会魔法的兔子,是一枚北京的执业律师,创建[项目管理者的法小院儿],持续从法律的角度分享项目管理中的风险问题及预防,让项目管理者能够提早发现与解决项目执行过程中的风险,同时欢迎大家一起交…

Vue3 + Django 前后端分离项目实现密码认证登录

1、功能需求 通常中小型前后端项目,对安全要求不高,也可以采用密码认证方案。如果只用django来实现非常简单。采用 Vue3 前后端分离架构,实现起来稍繁琐一点,好处是可以利用各种前端技术栈,如element-plus UI库来渲染…

蓝桥杯 2022 省B 李白打酒加强版

这题用递归暴力的方法如下&#xff1a; #include<iostream> #include<bits/stdc.h> using namespace std; int num; int N,M; void dfs(int now,int n,int m) {if(now<0 || n>N ||m>M)return ;if(nN && mM){if(now1)num1;return;}dfs(now-1,n,m1…

DDR4总结最全纯干货分享

DDR存储器发展的主要方向一言以蔽之&#xff0c;是更高速率&#xff0c;更低电压&#xff0c;更密的存储密度&#xff0c;从而实现更好的性能。 DDR4 SDRAM&#xff08;Double Data Rate Fourth SDRAM&#xff09;&#xff1a;DDR4提供比DDR3/ DDR2更低的供电电压1.2V以及更高的…

如果搭建axb回拨

AXB回拨技术是一种先进的电话通讯技术&#xff0c;它通过在A&#xff08;主叫方&#xff09;与B&#xff08;被叫方&#xff09;之间引入一个中间号码X&#xff0c;实现了双方的通话连接。这种技术可以有效避免直接拨打被叫方的电话号码&#xff0c;从而保护了用户的隐私。 具体…

GPT2从放弃到入门(三)

引言 上篇文章我们看到了如何从零训练一个聊天机器人&#xff0c;本文在此基础上介绍各种生成策略的原理和实现。最后通过Gradio构建一个聊天机器人应用。 定义生成框架 def generate(model,tokenizer,prompt,max_length255,temperature1.0,top_k50,top_p1.0,repetition_pen…

【WEEK4】 【DAY4】AJAX第一部分【中文版】

【WEEK4】 【DAY4】AJAX第一部分【中文版】 2024.3.21 Thursday 目录 8.AJAX8.1.简介8.2.伪造ajax8.2.1.新建module&#xff1a;springmvc-06-ajax8.2.2.添加web支持&#xff0c;导入pom依赖8.2.2.1.修改web.xml8.2.2.2.新建jsp文件夹 8.2.3.新建applicationContext.xml8.2.4.…

tftp使用

下载 sudo apt-get install tftpd-hpa 创建文件夹 mkdir /home/ljl/work/tftpd mkdir /home/ljl/tftpd chmod 777 tftpd/编辑 sudo vim /etc/default/tftpd-hpa //服务器端 sudo apt-get install tftp-hpa //客户端编辑权限 sudo vi /etc/default/tftpd-hpa 内容&#xff1…

智能风扇的新篇章:唯创知音WTK6900G语音识别芯片引领行业革新

随着科技浪潮的推进&#xff0c;智能化技术逐渐渗透到生活的每一个角落&#xff0c;家电领域尤为明显。风扇&#xff0c;这一夏日清凉神器&#xff0c;也通过智能化改造&#xff0c;焕发出前所未有的光彩。其中&#xff0c;智能语音控制功能的加入&#xff0c;为风扇的使用带来…

算法系列--递归(2)

&#x1f495;"什么样的灵魂就要什么样的养料&#xff0c;越悲怆的时候我越想嬉皮。"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;算法系列–递归(2) 前言:今天带来的是算法系列--递归(2)的讲解,包含六个和二叉树相关的题目哦 1.计算布尔⼆叉树的…

Redis中文乱码问题

最近排查问题&#xff0c;发现之前的开发将日志写在redis缓存中&#xff08;不建议这样做&#xff09;&#xff0c;我在查看日志的时候发现没办法阅读&#xff0c;详细是这样的&#xff1a; 查阅资料后发现是进制问题&#xff0c;解决方法是启动客户端的时候将redis-cli改为red…

【RPG Maker MV 仿新仙剑 战斗场景UI (八)】

RPG Maker MV 仿新仙剑 战斗场景UI 八 状态及装备场景代码效果 状态及装备场景 本计划在战斗场景中直接制作的&#xff0c;但考虑到在战斗场景中加入太多的窗口这不太合适&#xff0c;操作也繁琐&#xff0c;因此直接使用其他场景。 代码 Pal_Window_EquipStatus.prototype.…

STM32之HAL开发——启动文件详解【精华版】

启动文件介绍 启动文件是使用机器认识的汇编语言&#xff0c;由汇编编写&#xff0c;是系统上电复位后第一个执行的程序&#xff0c;经过一些必要的配置&#xff0c;最终能够调用 main 函数&#xff0c;使得用户程序能够在 MCU上正常运行起来的必备文件。 无论是是何种MCU&…

腾讯三面被问到有没有参加过CTF_我反手就是一套军体拳打得面试官哑口无言!

目录 ​ 前言&#xff1a; 正文&#xff1a; 什么是CTF&#xff1f; 什么是PWN? 为什么要学CTF&#xff1f; CTF竞赛模式&#xff1a; CTF各大题型简介&#xff1a; 学之前的思考&#xff1a;分析赛题情况 常规做法 CTF比赛需要的知识储备 CTF比赛的神器&#xff…

基于甘特图的资源调度优化策略

资源在项目管理中是一个永恒的话题。无论人力、物力还是财力资源,总是捉襟见肘,都希望用最少的资源完成最大的工作。这就要求我们在资源调度方面果断精准,做到最优化。而甘特图作为项目时间规划的重要工具,恰恰能为资源调度提供绝佳帮助。 甘特图能反映出任务之间的制约关系,有…

vulnhub-----pWnOS1.0靶机

文章目录 1.信息收集2.漏洞测试3.爆破hash4.提权 首先拿到一台靶机&#xff0c;就需要知道靶机的各种信息&#xff08;IP地址&#xff0c;开放端口&#xff0c;有哪些目录&#xff0c;什么框架&#xff0c;cms是什么&#xff0c;网页有什么常见的漏洞&#xff0c;如sql注入&…

DC-3靶机

一.环境搭建 下载地址&#xff1a; http://www.five86.com/downloads/DC-3-2.zip 下载不下来的可以用迅雷输入上面的网址进行下载 虚拟机配置&#xff1a; 切换连接桥接模式为nat模式&#xff0c;启动靶机&#xff0c;出现如下报错&#xff0c;进入虚拟机配置 选中CD/DVD&…

C语言:自定义类型(结构体)

目录 一、结构的特殊声明二、结构的自引用三、结构体内存对齐1.对齐规则2.为什么存在内存对齐(1)平台原因 (移植原因)&#xff1a;(2)性能原因&#xff1a; 3.修改默认对齐数 四、结构体传参五、结构体实现位段1.什么是位段2.位段的内存分配3.位段的跨平台问题4.位段使用的注意…