首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关系模式到ER图

关系模式到ER图
EN

Stack Overflow用户
提问于 2017-04-21 08:33:05
回答 1查看 11.3K关注 0票数 0

我为一个大学数据库设计了一个关系模型,如下所示。现在我被要求为这个数据库做一个ER图。我只想知道,是否有任何工具可以从关系模式生成ER图。如果不是,从关系模型生成ER图的步骤是什么?

EN

回答 1

Stack Overflow用户

发布于 2017-04-21 20:14:41

我不知道有任何工具可以从关系模型生成正确的ER图。这些工具的一个困难是,并非所有关系模型都可以解释为ER模型。虽然关系模型可以表达任何有限的事实集(因为它等价于一阶逻辑),但实体关系模型是比较有限的。

要将关系模型转换为ER图,我建议执行以下步骤:

  1. 对ER模型有一个很好的理解是有价值的。研究陈的论文The Entity-Relationship Model - Toward a Unified View of Data
  2. 对于每一列,确定它是表示实体集还是值集。实体键通常是一个表中的主键,而另一个表中是外键。值集通常表示标签和度量值,并位于依赖列中。
代码语言:javascript
复制
- For example, in `teacher`, `T_ID` and `dept_name` are entity keys, while `name` and `password` represent value sets.

  1. 确定关系。关系由同一表中的两个或多个实体键表示,其中至少一个是主键的一部分。
代码语言:javascript
复制
- For example, in `teacher`, the pair `(T_ID, dept_name)` represents a relationship between the entity sets identified by `T_ID` and `dept_name`. We can call those entity sets `teacher` and `department`, but don't confuse them with the tables that have the same names. Another example is `advisor (T_ID, S_ID)`.

  1. 识别属性。属性是从实体集或关系到值集的映射。表的主键将确定与依赖列(值集)相关联的实体或关系集(原子或复合PK),从而形成属性。
代码语言:javascript
复制
- For example, in `teacher`, `T_ID -> name` is an attribute, and `T_ID -> password` is another.

  1. 做个图表。用矩形表示每个实体集,用菱形表示每个关系集。将关系连接到相关实体集。将键和属性绘制为附加到确定实体或关系集的椭圆。我们不为关系绘制键--它们是由关联实体集的键决定的。

这只是一个基本的起点--这个过程实际上更复杂,因为我们需要寻找弱键、弱实体集、标识关系、关联实体集、总参与或部分参与以及关系基数。

再一次,我强烈建议你仔细研究陈的论文。

PS。我相信section的主键(以及teachestakes中相应的外键)是不正确的。我怀疑主键应该仅仅是sec_id,但是由于我不确定您的模型实际代表了什么(除了我自己对表和列名的解释之外),所以我不能确定。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43537743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档