概念结构设计ER图

article/2025/5/1 17:29:26

文章目录

  • 概念层数据模型——E-R模型
    • 实体:
    • 属性:
    • 联系:
  • E-R图表示
  • 两个实体之间的联系
    • 一对一联系
    • 一对多联系
    • 多对多联系
    • 多个实体之间的联系
  • 概念设计的特点和策略
  • 设计全局E-R模型
  • E-R图之间的冲突
  • 优化全局E-R模型
  • 逻辑结构设计
  • E-R模型的转换一
  • E-R模型的转换二
  • E-R模型的转换三



数据库开发的基本步骤
在这里插入图片描述

数据模型的概念
用于概念结构设计和逻辑结构设计

模型是对事物、对象、过程等客观系统中感兴趣的内容的模拟和抽象表达,是理解系统的思维工具。

数据模型(Data Module)是对现实世界中数据特征的抽象和表示 。

常用数据模型分为概念数据模型和组织数据模型。

概念数据模型:

也称概念模型或信息模型,是按用户的观点对数据和信息进行建模,是现实世界到信息世界的第一层抽象,强调其语义表达功能,易于用户理解,是用户和数据库设计人员交流的语言,主要用于数据库设计。

组织数据模型:

它是按计算机系统的观点对数据进行建模,是现实世界数据特征的抽象,用于实现具体的DBMS。组织数据模型有层次模型、网状模型、关系模型和面向对象模型。

概念模型应该具有较强的语义表达能力,能够方便、直接的表达应用中的各种语义知识,还应该简单、清晰、易于用户理解

概念层数据模型——E-R模型

E-R模型的主要元素包括实体、属性和关系。实体用矩形表示,属性用椭圆形表示,关系用菱形表示。实体之间的关系由关系连接线表示,连接线上标注了关系的名称和类型,如一对一、一对多或多对多等。

E:代表实体;R:代表关系

这里分享画ER图的网站——Process On

常用的概念模型有实体-联系(Entity-Relationship,简称E-R)模型、语义对象模型。

这里只介绍实体-联系模型。

实体:

在E-R图中,实体(Entity)是一个具有独立身份和特征的对象,通常用矩形表示。实体可以是现实世界中的一个具体对象,如人、车、书等,也可以是一个抽象概念,如订单、客户等。

实体在E-R图中通常包含以下三个要素:

  1. 实体名称:通常用名词来表示,如“员工”、“产品”等。

  2. 实体属性:即实体具有的特征或属性,通常用椭圆形表示,包括实体的属性名称和数据类型。例如,“员工”实体的属性可以包括姓名、性别、年龄等。

  3. 实体主键:用于唯一标识实体的属性或属性组合,通常用下划线标记。实体主键可以作为关系中的外键,用于建立实体之间的联系。

在E-R图中,实体的属性和主键决定了实体之间的关系,也影响着数据库表的设计和数据存储方式。
因此在设计E-R图时,需要仔细分析实体之间的关系和属性,确保E-R图能够准确地反映现实世界中的业务需求。

属性:

在E-R图中,属性(Attribute)是实体所拥有的特征或者数据,通常用椭圆形表示。在实体上画出该属性表示该属性属于该实体。

属性具有以下两个要素:

  1. 属性名称:通常用名词来表示,如“员工”实体的属性可以包括姓名、性别、年龄等。

  2. 数据类型:属性的数据类型定义了该属性可以存储的数值类型,例如文本、数字、日期等。属性的数据类型可以根据不同的数据库管理系统进行不同的设置。

属性的数量和类型决定了实体内部的数据结构和数据存储方式。
在实际的E-R图设计中,应该仔细考虑每个属性的含义和作用,确保只有必要的属性被包含在实体中,从而提高数据库的效率和操作的简便性。

联系:

在E-R图中,联系(Relationship)表示实体之间的关系,用来描述不同实体之间的相互作用和联系。
联系通常用菱形表示,并用两条线将联系和实体连接在一起。E-R图中联系的类型包括一对一(1:1)、一对多(1:N)和多对多(M:N)。联系也可以有属性。

一对一表示两个实体之间只存在一个关联,例如每个人只能有一个身份证号码,一个身份证号码只能对应一个人。

一对多表示一个实体可以和多个另外的实体相关联,例如一个部门可以有多个员工,但一个员工只能属于一个部门。

多对多表示两个实体之间存在多个对应,例如一个学生可以选多门课程,每门课程也可以被多个学生选择。

联系的类型也决定了数据库表之间的关系,因此在后续的数据库设计中需要根据E-R图中的联系建立相应的外键关系,从而保证数据的完整性和一致性。

E-R图表示

实体用矩形表示

属性在E-R图中用圆角矩形或者是椭圆形表示

在矩形框内写上属性的名字,并用连线将属性矩形框与它所描述的实体联系起来。

主码用属性名字加下划线表示
在这里插入图片描述

两个实体之间的联系

一对一联系

指实体集E1中的一个实体最多只与实体集E2中的一个实体相联系。

例如:电影院的座位和观众实体之间的联系

一对一联系:如果实体A中的每个实例在实体B中至多有一个(也可以没有)实例与之关联,反之亦然,则称实体A与实体B具有一对一联系。
记作:1 : 1。
在这里插入图片描述

一对多联系

表示实体集E1中的一个实体可与实体集E2中的多个实体相联系。

例如:部门和职工两个实体集 之间的联系

一对多联系:如果实体A中的每个实例在实体B中有n个实例(n≥0)与之联系,而实体B中每个实例在实体A中只有一个实例与之联系,则称实体A与实体B是一对多联系,
记作:1 : n。

加粗样式

多对多联系

表示实体集E1中的多个实体可与实体集E2中的多个实体相联系。

例如:工程项目和职工两个实体集之间的联系

例如:学生和课程,一个学生可以选修多门课程,一门课程也可以被多个学生选修,因此学生和课程之间是多对多的联系。
在这里插入图片描述

多个实体之间的联系

两个以上不同实体之间存在1:1:1、1:1:n、1Ⓜ️n和rⓂ️n的联系。

供应商、项目和零件之间是多对多(r:n:m)的联系。

例:病房、病人和医生之间是一对多(1:n:m)的联系。

在这里插入图片描述

同一实体内的二元关系
同一实体内的各实体之间也存在1:1、1:n和m:n的联系

例:职工实体中的领导与被领导的联系 。
在这里插入图片描述

概念设计的特点和策略

概念结构设计的任务是产生反映企业组织信息需求的数据库概念结构,即概念模型。

概念模型的特点
有丰富的语义表达能力;

易于交流和理解;

易于更改,当应用环境和应用要求发生变化时,能很容易对概念模型进行修改,以反映这些变化;

易于向各种数据模型转换,易于导出与DBMS有关的逻辑模型。

概念结构设计的策略
自底向上:先定义每个局部应用的概念结构,然后按一定的规则把它们集成起来,从而得到全局概念模型。

自顶向下:先定义全局概念模型,然后再逐步细化。

由里向外:先定义最重要的核心结构,然后再逐步向外扩展。

混合策略:将自顶向下和自底向上结合起来使用。先用自顶向下设计一个概念结构的框架,然后以它为框架再用自底向上设计局部概念结构,并把它们集成。

最常用的设计策略是自底向上策略。

概念结构设计步骤
概念结构设计是用集合概念,抽取出现实业务系统的元素及其应用语义关联,最终形成E-R模型。

采用E-R方法的概念结构设计可分为如下三步
设计局部E-R模型。局部E-R模型的设计内容包括确定局部E-R模型的范围、定义实体、联系以及它们的属性。

设计全局E-R模型。这一步是将所有局部E-R图集成为一个全局E-R图,即全局E-R模型。

优化全局E-R模型

设计全局E-R模型

把局部E-R图集成为全局E-R图时,可以采用一次将所有的E-R图集成在一起的方式。

当将局部E-R图集成为全局E-R图时,需要消除各分E-R图合并时产生的冲突。

E-R图之间的冲突

属性冲突

属性域冲突。即属性的类型、取值范围和取值集合不同。

属性取值单位冲突。

命名冲突

包括同名异义和异名同义

结构冲突

同一对象在不同应用中具有不同的抽象。

同样一实体在不同的局部E-R图中所包含的属性个数和属性的排列次序不完全相同。

优化全局E-R模型

一个好的全局E-R模型除了能反映用户功能需求外,还应满足如下条件。

实体个数尽可能少;

实体所包含的属性尽可能少;

实体间联系无冗余。

优化的目的就是要满足上述三个条件,即相关实体的合并,一般是把具有相同主码的实体进行合并。

逻辑结构设计

逻辑结构设计的任务是把概念结构设计阶段设计好的基本E-R图转换为具体的数据库管理系统支持的数据模型,也就是导出特定的DBMS可以处理数据库的逻辑结构。

关系DBMS处理的是关系模型。

补充:关系中的概念
候选码(候选键):如果关系中的某一个或者一组属性的值能够唯一的确定一个元组,则该属性或者属性组称为候选码(候选键)。

主码(主键):如果一个关系包含多个候选码,可以任选其中一个作为主码(主键)。因为一个关系只能设定一个主码。

外码: 参照某一张表的主码的属性。其如果取值必须参照该主码的取值范围。

E-R模型的转换一

1.实体的转换
一个实体映射为一个关系模式。实体名就是关系名,实体的属性就是关系的属性,实体的主码就是关系的主码。

E-R模型的转换II

2.一对一联系的转换
一个1:1联系,可以转换为一个独立的表,也可以与任意一端的实体所对应的表合并。

如果单独转换为一张表,则联系的名称作为表的名称,与联系相关联的两个实体的主码以及联系本身的属性都作为这张表的属性,任选一个与之相关联的实体的主码作为转换后关系的主码。

如果与某端实体所对应的关系合并,则需要在该关系中添加另一端实体转换后关系的主码和联系本身的属性作为该表的属性。
在这里插入图片描述

E-R模型的转换二

3.一对多联系的转换
一个1:n联系,可以单独转换为一张表,也可以合并到多端实体所对应的表中。

如果单独转换为一张表,则联系的名称作为表的名称,与联系相关联的两个实体的主码以及联系本身的属性都作为这张表的属性,与联系相关联的多端实体的主码作为联系转换后关系的主码。

如果与多端实体所对应的表合并,则需要在该表中添加一端实体所对应表的主码和联系本身的属性作为该表的属性。
在这里插入图片描述

E-R模型的转换三

4.多对多联系的转换
一个m:n联系只能映射为一个独立的关系模式

联系的名称作为表的名称,相关联的两个实体的主码以及联系本身的属性都作为该表的属性,两端实体的主码联合起来作为该表的主码。
在这里插入图片描述

练习
将此E-R图转换成关系模式
在这里插入图片描述

答案

设备(型号,功率,备注,名称)

供货厂商(联系人,电话,传真,厂址)

订货(名称,联系人)

逻辑结构设计的步骤

  1. 将系统的全局E-R模型按照转换原则转换为关系模式。

  2. 对转换后的关系模式进行优化。如:主码相同的关系可以进行合并。

  3. 设计数据库的外模式(即视图)。


http://chatgpt.dhexx.cn/article/gHvkTyub.shtml

相关文章

怎样绘制ER图

E-R图也称实体-联系图(Entity Relationship Diagram),1976年由P.Pchen 提出,提供了表示实体类型、属性和联系的方法。 ER图是我们在上数据库课的时候提到的,简单来说就是辅助数据库设计的概念模型。 1.表示方法 实体型:用矩形框&…

【系统架构】ER图

文章目录 ER图是什么?ER图的组成元素是什么?规范 ER图是什么? E-R图也称实体-联系图(Entity Relationship Diagram),它提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。 ER图(实体关系…

什么是ER图?

实体-联系图(Entity-Relation Diagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段,形成一个独立于机器,独立于DBMS的ER图模型。 通常将它简称为ER图,相应地可把用ER图描绘的数据模型称为ER模型。ER图提供了表示实体(即…

什么是ER图?数据库ER图基础概念整理

前置知识 概述:数据模型的基本概念 模型就是对现实世界特征的模拟和抽象,数据模型是对现实世界数据特征的抽象。对于具体的模型人们并不陌生,如航模飞机、地图和建筑设计沙盘等都是具体的模型。最常用的数据模型分为概念数据模型和基本数据模…

ER图是啥?

文章转载自「开发者圆桌」一个关于开发者入门、进阶、踩坑的微信公众号 E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。 用矩形表示实体型,矩形框内写明实体名&…

ER图是什么?

ER图分为实体、属性、关系三个核心部分。实体是长方形体现,而属性则是椭圆形,关系为菱形。 ER图的实体(entity)即数据模型中的数据对象,例如人、学生、音乐都可以作为一个数据对象,用长方体来表示&#xff…

实体关系 (ER) 图的几种不同风格的符号

什么是 ER 图? 实体关系 (ER) 图是一种流程图,用于说明“实体”(如人、对象或概念)如何在系统中相互关联。ER 图最常用于设计或调试软件工程、商业信息系统、教育和研究领域的关系数据库。也称为 ERD 或 E…

【C】C语言int型数组转化为char型字符串数组

文章目录 C语言int型数组转化为char型字符串数组一、代码二、结果三、说明 C语言int型数组转化为char型字符串数组 一、代码 /* 程序功能&#xff1a;int型数组转化为char型字符串数组*/ #include <stdio.h> #include <stdlib.h> #include <math.h> int nu…

C语言:int型数据向char型数据的强制类型转换原理

int型数据向char型数据强制转换原理 C语言中int是四个字节&#xff0c;char是1个字节&#xff0c;占字节多的int型向字节少的char型强制类型转换的原理就是字节截断。 转换时系统会自动删除高位的三个字节&#xff0c;只留下低位的一个字节&#xff0c;这就是int型想char型转换…

数据类型的大小(int型为例)

上图 int型能表示的范围是-2147483648&#xff08;-215&#xff09; – 2147483647(215 -1) int型占系统分配的4个字节&#xff08;不同系统不一样&#xff09;8个位&#xff0c;最高一位为符号位。10000000时表示-215 、01111111时表示215 - 1 unsigned int 为无符号整型范围…

【C】C语言判断字符串是否是int型正整数

文章目录 【C】C语言判断字符串是否是int型正整数前言一、代码二、结果 【C】C语言判断字符串是否是int型正整数 前言 此程序功能主要是实现&#xff1a;判断在CMD下输入的字符串是是否是int型的正整数。 在判断字符是数值时还可以了解一下isdigit()函数&#xff0c;可…

C:int型指针

2019独角兽企业重金招聘Python工程师标准>>> 环境:mint 13 64bit,gcc 4.6.3。 如无特殊,均为`gcc test.c -o test`的类似方式编译源文件。 在这里主要讨论`int*`,`int**`,`char*`,`char**`等这些比较基本的指针类型,主要以int类型为示例。在64bit环境中地址用…

java float强制转换int类型_float型怎样强制转换成int型

展开全部 运行时所有数据都存储在内存中&#xff0c;32313133353236313431303231363533e4b893e5b19e31333436316236所以相同很正常&#xff0c;float转int会将小数后面的数舍去。 比如定义了一个floata&#xff0c;强制转换成int可写成(int)a。如果是一个表达式&#xff0c;那么…

mysql int 可以是负数吗_int型包括负数吗

展开全部 可以包含负值也可以不包含负值。 在计算机科学中&#xff0c; int()函数是整e69da5e887aa62616964757a686964616f31333433623235数数据类型的数据&#xff0c;积分数据类型可以具有不同的大小&#xff0c;并且可以允许或不允许包含负值。 整数通常在计算机中表示为一组…

int型溢出问题

目录 问题原理奇怪的循环计算机的编码循环的产生 如何识别溢出乘法加法 参考文献 问题 在执行乘法时&#xff08; i ! ∗ 2 i , ( i 0 , 1 , . . . , n − 1 ) i!*2^{i},(i0,1,...,n-1) i!∗2i,(i0,1,...,n−1)&#xff09;&#xff0c;当计算的值超过了int上限后却变成了负数…

C++中int型和string型的相互转换

一、int型转string型 1、to_string函数&#xff0c;头文件#include<string> c11标准增加了全局函数std::to_string: string to_string (int val); string to_string (long val); string to_string (long long val); string to_string (unsigned val); string to_s…

ArcGIS:使用栅格计算器修改特定条件下的值,如将小于100的数修改为0

使用ArcGIS中的栅格计算器可以将特定条件的值进行修改&#xff0c;如原来栅格值的范围为10-1000&#xff0c;可以通过条件语句将其修改为10-100。 修改的时候需要用到栅格计算器中的con条件语句&#xff0c;用法如下&#xff1a; con(条件,满足条件的部分赋值赋值,不满足条件的…

arcgis栅格计算器python教程_arcgis栅格计算器的使用

原标题&#xff1a;arcgis栅格计算器的使用 arcgis栅格计算器的使用 栅格计算器的灵活运用可以解决获取的数据的很多问题和应用。 以dem高程数据为例&#xff0c;可以运用栅格计算器可以直接获取坡度坡向等结果&#xff0c;但是很多时候是需要连续计算多次获得想要的结果。 …

arcgis栅格计算器:将栅格图层指定值设置为Nodata及栅格图层求交

1. 首先需要找到栅格计算器的位置 2. 将栅格图层的某个数据设置为Nodata setnull函数可将特定的栅格值赋值为空值 SetNull("这里是栅格图像名称"0 & 4,1)说明&#xff1a; 将栅格图像中0和4的栅格设置为Nodata&#xff0c;并将其他值设置为1。 结果显示&#x…

【ArcGIS风暴】栅格计算器(Raster Calculator)运算出现错误问题及解决方案汇总

栅格计算器(Raster Calculator) 是一种空间分析函数工具,可以输入地图代数表达式,使用运算符和函数来做数学计算,建立选择查询,或键入地图代数语法。只有熟练的运用并记忆一些常用的公式,才能很好的运用栅格计算器。在使用的过程中,容易出现这样那样的问题,本文就把栅…