热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

ER图基础知识

转至:点击打开链接2.1E-R模型基本符号实体的表示:用长方形联系的表示:用菱形,1:1、1:n(m:1)、(m:n)
转至: 点击打开链接

2.1 E-R模型基本符号

  • 实体的表示:用长方形

  • 联系的表示:用菱形,1:1、1:n (m:1)、(m:n)

  • 属性的表示:用椭圆形

E-R图具有以下几个特性:

  • 一个联系集合可以定义在两个或两个以上的实体集合上,例如老师--学生--课程的联系集合S-T-C,就是定义在三个实体上。

  • 一个联系集合也可以定义在一个实体集合上,例如零件下又分有子零件,每个零件又可由m个子零件组成,每个子零件又可组合成n个零件。

  • 对于给定的实体集合,可以定义一个以上的联系集合,例如工程项目--工人可以定义两个联系集合,其中一个表示工程项目和工人的联系,另一个表示工程项目和工人中的工程项目负责人的联系。前者是n:m的联系,后者是1:1的联系。

  • 实体联系图可以表示一个实体类型对另一个实体类型的存在的依赖性,例如工人这一实体下反映其被抚养者的关系,就是依赖关系,这种联系用箭头表示,说明抚养者这个实体的存在取决于工人中的相应的那个实体。

2.2 初步E-R图设计

    在数据分析的基础上,就可以着手设计概念结构。设计初步E-R图的步骤:

  • 先设计局部E-R图,也称用户视图

  • 综合各局部E-R图,形成总的E-R图,即用户视图的集成。

    在设计初步E-R图时,要尽量能充分地把组织中各部门对信息的要求集中起来,而不需要考虑数据的冗余问题。

    局部概念模型设计是从用户的观点出发,设计符合用户需求的概念结构。局部概念模型设计的就是组织、分类收集到的数据项,确定哪些数据项作为实体,哪些数据项作为属性,哪些数据项是同一实体的属性等。确定实体与属性的原则:

  • 能作为属性的尽量作为属性而不要划为实体;

  • 作为属性的数据元素与所描述的实体之间的联系只能是1:n的联系;

  • 作为属性的数据项不能再用其他属性加以描述,也不能与其他实体或属性发生联系。

例1:一个机械制造厂的简单管理系统。首先按工厂技术部门和工厂供应部门设计两个局部E-R图。工厂技术部门关心的是产品的性能参数,及由哪些零件组成,零件的材料和耗用量等;工厂供应部门关心的是产品的价格,使用材料的价格及库存量等。

例1图 局部E-R图

    综合这两个分E-R图,得到初步E-R图。

例1图 初步E-R图

    初步E-R图是现实世界的纯粹表示,可能存在冗余的数据和实体间冗余的联系。所谓冗余的数据是指可由基本数据导出的数据,冗余的联系是指可由基本联系导出的联系。

2.3 基本E-R图设计

    初步E-R图由于存在冗余的信息,会破坏数据库的完整性,给数据库的管理带来麻烦,以至引起数据不一致的错误。因此,必须消除数据上的冗余和联系上的冗余,消除冗余后的E-R图,称为基本E-R图。

    消除冗余的方法,可以采用分析的方法。

例1图 基本E-R图

例2:某书店购图书汇总登记表,经过1NF、2NF、3NF分析得

对应的基本E-R图

例2图 图书汇总登记表基本E-R图

基本E-R图满足第三范式要求。

    用例1的分析方法,对于一个庞大的复杂系统是有困难的,可以将初步E-R图转换成函数依赖关系,利用规范化理论,将其分解为多个符合第三范式的函数依赖关系,再构成基本E-R图。

3 逻辑结构设计

    任务:将基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。
    过程:

  • 将概念结构转换为现有DBMS支持的关系、网状或层次模型中的某一种数据模型;

  • 从功能和性能要求上对转换的模型进行评价,看它是否满足用户要求;

  • 对数据模型进行优化

3.1 E-R图向关系模型的转换

原则:
(1)一个实体型转换为一个关系模型,实体的属性就是关系的属性,实体的键就是关系的键;
(2)一个联系转换为一个关系模式,与该联系相连的每个实体型的键以及联系的属性都转换为关系的属性。这个关系的键分为以下三种不同的情况:

  • 若联系为1:1,则相连的每个实体型的键均是该关系模式的侯选键。

  • 若联系为1:n,则联系对应的关系模式的键取n端实体型的键。

  • 若联系为m:n,则联系对应的联模式的键为参加联系的诸实体型的键的组合。

图 联系为1:1时

图 联系为1:n时

图 联系为m:n时

(3)一些特殊联系的处理,可分为以下几情况:

  • 当一个实体的存在是依赖于另一个实体的存在时,两个实体之间的联系便代表了两个实体间的一种所有关系。

  • 当联系定义在同一个同型实体上时,联系转化为一个关系模式,与该联系相连的实体型的键以及联系的属性转换为关系模式的属性。

图 实体存在依赖关系

图 联系定义在同一同型实体上

3.2 模型评价:功能评价,性能评价

3.3 模型优化:减少连接运算,垂直和水平分割,使用快照,减少数据占用空间



推荐阅读
  • C++基础教程:探索随机数生成
    生活充满了不确定性,这些不确定因素使我们的生活更加丰富多彩。本文将探讨如何在C++编程中利用随机数增加程序的趣味性和实用性。 ... [详细]
  • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
  • 构建Python自助式数据查询系统
    在现代数据密集型环境中,业务团队频繁需要从数据库中提取特定信息。为了提高效率并减少IT部门的工作负担,本文探讨了一种利用Python语言实现的自助数据查询工具的设计与实现。 ... [详细]
  • 微信小程序配置详解:pages、window、tabBar与调试模式
    本文详细介绍了如何在微信小程序中配置pages、window、tabBar以及启用调试模式,帮助开发者更好地理解和应用这些配置选项。 ... [详细]
  • 本文探讨了如何将简单工厂模式与策略模式结合使用,以提高PHP程序设计中的灵活性和可维护性。通过这种方式,客户端代码无需直接实例化具体的算法类,而是通过工厂方法根据输入参数选择合适的策略。 ... [详细]
  • 本文通过具体示例探讨了在 C++ 中使用 extern "C" 的重要性及其作用,特别是如何影响编译后的对象文件中的符号名称。 ... [详细]
  • databasesync适配openGauss使用指导书
    一、database-sync简介database-sync作为一种开源辅助工具,用于数据库之间的表同步,更确切的说法是复制,可以从一个数据库复制表到另一个数据库该工具支持的功能如 ... [详细]
  • 本文详细介绍了如何在Arch Linux系统中安装和配置FlashTool,包括必要的依赖项安装和udev规则设置,以确保工具能够正确识别USB设备。 ... [详细]
  • 本文详细探讨了 Java 中 Daemon 线程的特点及其应用场景,并深入分析了 Random 类的源代码,帮助开发者更好地理解和使用这些核心组件。 ... [详细]
  • 本文档详细介绍了服务器与应用系统迁移的策略与实施步骤。迁移不仅涉及数据的转移,还包括环境配置、应用兼容性测试等多个方面,旨在确保迁移过程的顺利进行及迁移后的系统稳定运行。 ... [详细]
  • 本文介绍了如何利用Python的Turtle库来绘制奥运五环。通过设置不同的颜色和位置,能够精确地模拟奥运标志。 ... [详细]
  • SonarQube配置与使用指南
    本文档详细介绍了SonarQube的配置方法及使用流程,包括环境准备、样本分析、数据库配置、项目属性文件解析以及插件安装等内容,适用于具有Linux基础操作能力的用户。 ... [详细]
  • 本文介绍了使用Node.js开发超市管理系统的经验分享,重点讨论了项目中使用的技术栈及其实现细节,包括前端Bootstrap和后端Express框架的应用,以及MongoDB数据库的操作。 ... [详细]
  • Navicat 使用指南与连接设置
    本文详细介绍了如何首次使用 Navicat 进行数据库连接设置,包括注册过程、输入正确的端口号及认证信息,确保用户能够顺利连接到 MySQL 数据库。 ... [详细]
  • 深度解析:任务宝裂变营销的成功之道
    任务宝裂变作为一种高效用户增长手段,在微信生态下被广泛应用。本文将通过实际案例,探讨如何设计和实施任务宝裂变策略,以实现持续获客的目标。 ... [详细]
author-avatar
哈王豐3_408
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有