E-R 图的不同表示方法(Chen 方法和 Crow's foot 方法)

本贴最后更新于 1268 天前,其中的信息可能已经沧海桑田

E-R 图,中文名称叫实体-关系图,是数据库设计所使用的重要模型。

E-R 图最早由 Peter Chen 提出,他现在是路易斯安那州立大学的教授,中文名叫陈品山,是出生于台湾的美国计算机科学家。这是他的照片:

chen.jpeg

他刚提出来 E-R 图的时候,使用矩形表示实体集,椭圆形表示属性,菱形表示关系。类似于这样:

image.png

这种表示方法叫做 Chen 方法(陈氏表示法)。有人常常把 Chen 方法当作 E-R 图的唯一的方法,我之前也以为是这样,实际上是不对的,这只是 E-R 图刚诞生时的画法,之后有各种各样的改进方法。这个方法存在的最大问题就是当一个实体存在很多属性的时候,就是产生非常多的椭圆,导致图片非常混乱,不清晰明了。在 Chen 方法的基础上,后人有做一些增补和改进,但这些改动没有改变属性用椭圆来表示这一最大的缺点,因此依然可以称之为 Chen 方法。

后来的一种比较有名的改进方法叫做 Crow's foot 方法,示例如图:

ERdiagramofthesubjectdomainCrowsFootnotation.png

这种方式将每个实体用一个上下分割的方框来表示,上半部分写实体名称,下半部分写实体属性,类似于 UML 类图的表示方法。同时用鸦爪符号表示“……对多”或“多对……”关系,这也是 Crow's foot(乌鸦脚)这个名字的由来。这种方法使得实体和关系的表示更加清晰明了。它的详细画法如下图所示:

在这里插入图片描述

对于 E-R 图的多种不同表示方法,在 Abraham Silberschatz 所著的数据库系统概念(第 6 版)这本书中有一张图做了一个集锦,如下(没找到电子版的,只能拍照了):

535bfe1b7b3ae25cb97c848897d6410.jpg

数据库系统概念(第 6 版)这本书中也提到,在本书第 5 版及以前的版本中,使用陈氏表示法来表示 E-R 图,但随着 UML 使用的增多,第 6 版采用了更接近于 UML 类图的形式。此外它还提到了美国国家标准和技术研究院还定义过一个叫 IDEF1X 的标准,也使用鸦爪形符号,但本书没有对 IDEF1X 做具体展开。关于 IDEF1X 的内容,推荐大家观看哈尔滨工业大学战德臣老师讲授的数据库原理在线课程,在中国大学 mooc 和 B 站上都有,这门课程对 IDEF1X 做了具体讲授。

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Hprose

    Hprose 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。

    9 引用 • 17 回帖 • 641 关注
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖 • 4 关注
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    346 引用 • 760 回帖
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 498 关注
  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    43 引用 • 208 回帖 • 1 关注
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖 • 1 关注
  • 倾城之链
    23 引用 • 66 回帖 • 167 关注
  • 笔记

    好记性不如烂笔头。

    311 引用 • 794 回帖
  • OnlyOffice
    4 引用 • 19 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    10210 引用 • 46385 回帖 • 62 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 685 关注
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    172 引用 • 541 回帖
  • CAP

    CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

    12 引用 • 5 回帖 • 634 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 471 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 88 关注
  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 522 关注
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    19 引用 • 23 回帖 • 742 关注
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    17 引用 • 7 回帖 • 3 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 446 关注
  • V2Ray
    1 引用 • 15 回帖 • 4 关注
  • 导航

    各种网址链接、内容导航。

    45 引用 • 177 回帖
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖 • 5 关注
  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 158 关注
  • 分享

    有什么新发现就分享给大家吧!

    248 引用 • 1795 回帖 • 1 关注
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 645 关注
  • 百度

    百度(Nasdaq:BIDU)是全球最大的中文搜索引擎、最大的中文网站。2000 年 1 月由李彦宏创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。

    63 引用 • 785 回帖 • 67 关注
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    7 引用 • 28 回帖