当前位置: 首页 > news >正文

实体-联系图

       为了把用户的数据要求清楚、准确地描述出来,系统分析员通常建立一个概念性的数据模型(也称为信息模型)。概念性数据模型是一种面向问题的数据模型,是按照用户的观点对数据建立的模型。它描述了从用户角度看到的数据,它反映了用户的现实环境, 而且与在软件系统中的实现方法无关。

       数据模型中包含3种相互关联的信息:数据对象、数据对象的属性及数据对象彼此间相互连接的关系。

1 数据对象
       数据对象是对软件必须理解的复合信息的抽象。所谓复合信息是指具有一系列不同性质或属性的事物,仅有单个值的事物(例如、宽度)不是数据对象。
       数据对象可以是外部实体(例如,产生或使用信息的任何事物)、事物(例如,报表)、行为(例如,打电话)、事件(例如,响警报)、角色(例如,教师、学生)、单位(例如,会计科)、地点(例如,仓库)或结构(例如,文件)等。总之,可以由一组属性来定义的实体都可以被认为是数据对象。
       数据对象彼此间是有关联的,例如,教师“教”课程,学生“学”课程,教或学的关系表示教师和课程或学生和课程之间的一种特定的连接。
       数据对象只封装了数据而没有对施加于数据上的操作的引用,这是数据对象与面向对象范型中的“类"或“对象”的显著区別。


2 属性
       属性定义了数据对象的性质。必须把一个或多个属性定义为“标识符”,也就是说,当人们希望找到数据对象的一个实例时,用标识符属性作为“关键字”(通常简称为“键”)。
       应该根据对所要解决的问题的理解,来确定特定数据对象的一组合适的属性。例如, 为了开发机动车管理系统,描述汽车的属性应该是生产厂、品牌、型号、发动机号码、车体类型、颜色、车主姓名、住址、驾驶证号码、生产日期及购买日期等。但是, 为了开发设计汽车的CAD系统,用上述这些属性描述汽车就不合适了,其中车主姓名、住址、驾驶证号码、生产日期和购买日期等属性应该删去,而描述汽车技术指标的大量属性应该添加进来。

3 联系
       客观世界中的事物彼此间往往是有联系的。例如,教师与课程间存在“教”这种联系, 而学生与课程间则存在“学"这种联系。
       数据对象彼此之间相互连接的方式称为联系,也称为关系。联系可分为以下3种类型。
       (1) 一对一联系(1:1)
       例如, 一个部门有一个经理,而每个经理只在一个部门任职,则部门与经理的联系是一对一的。额
       (2) 一对多联系(1:N)
       例如, 某校教师与课程之间存在一对多的联系“教”,即每位教师可以教多门课程,但是每门课程只能由一位教师来教。
       (3) 多对多联系(M:N)

       例如,图表示学生与课程间的联系(“学”)是多对多的,即一个学生可以学多门课程,而每门课程可以有多个学生来学。

某校教学管理ER图

       联系也可能有属性。例如,学生“学”某门课程所取得的成绩,既不是学生的属性也不是课程的属性。由于“成绩”既依赖于某名特定的学生又依赖于某门特定的课程,所以它是学生与课程之间的联系“学"的属性。

4 实体-联系图的符号
       通常,使用实体-联系图(entity-relationship diagram)来建立数据模型。可以把实体-联系图简称为 ER图,相应地可把用ER图描绘的数据模型称为ER模型。
       ER图中包含了实体(即数据对象)、关系和属性3种基本成分,通常用矩形框代表实体.用连接相关实体的菱形框表示关系,用椭圆形或圆角矩形表示实体(或关系)的属性,并用直线把实体(或关系)与其属性连接起来。例如,图是某学校教学管理的ER图。
       人们通常就是用实体、联系和属性这3个概念来理解现实问题的, 因此, ER模型比较接近人的习惯思维方式。此外, ER模型使用简单的图形符号表达系统分析员对问题域的理解,不熟悉计算机技术的用户也能理解它, 因此, ER模型可以作为用户与分析员之间有效的交流工具。

http://www.lryc.cn/news/353373.html

相关文章:

  • ROCm上来自Transformers的双向编码器表示(BERT)
  • 期权课程之第一节【用生活的例子解释什么是期权】
  • 【YOLOv10训练教程】如何使用YOLOv10训练自己的数据集并且推理使用
  • [windows系统安装/重装系统][step-4][番外篇-2]N卡驱动重装 |解决:开机几小时后电脑卡顿 | 后台自动运行了上千个Rundll32进程问题
  • Redis开发实战
  • C++ | Leetcode C++题解之第112题路径总和
  • leetcode力扣 2024. 考试的最大困扰度
  • lvgl无法显示中文
  • 读书笔记-Java并发编程的艺术-第1章 并发编程的挑战
  • RUST 和 GO 如何管理它们的内存
  • 对于高速信号完整性,一块聊聊啊(12)
  • C++学习笔记(19)——模板
  • java8新特性——函数式编程详解
  • mybatis-plus小课堂: apply 拼接 in SQL,来查询从表某个范围内的数据
  • 民宿推荐系统-手把手调试搭建
  • 线性回归模型
  • 西门子全球业务调整:数十亿欧元交易额,开启新篇章
  • AI遇上遥感,未来会怎样?
  • 认知架构 cognitive architecture
  • 数据插值之朗格朗日插值(一)
  • 【CCF-CSP】 202309-3 梯度求解
  • jvm的类加载
  • 2024年汉字小达人活动4个多月开赛:18道历年选择题和答案、解析
  • 群晖安装青龙脚本
  • 【机器学习系列】使用高斯贝叶斯模型进行数据分类的完整流程
  • Python中的单例模式:原理、实现与应用
  • Linux基础(六):Linux 系统上 C 程序的编译与调试
  • 移动硬盘难题:不显示容量与无法访问的解决策略
  • 基于springboot+vue的智慧外贸平台
  • @Async详解,为什么生产环境不推荐直接使用@Async?