我为大学数据库设计了一个关系模型,如下所示。现在我被要求制作这个数据库的 ER 图。我只想知道是否有任何工具可以用来从关系模式生成 ER 图。如果不是,从关系模型制作 ER 图的步骤是什么?
1 回答
我不知道有任何工具可以从关系模型生成正确的 ER 图。此类工具的一个困难是并非所有关系模型都可以解释为 ER 模型。虽然关系模型可以表达任何有限的事实集(因为它等同于一阶逻辑),但实体关系模型更受限制。
要将关系模型转换为 ER 图,我建议执行以下步骤:
对 ER 模型的良好理解将是有价值的。研究陈的论文
The Entity-Relationship Model - Toward a Unified View of Data
。对于每一列,确定它是代表一个实体集还是一个值集。实体键通常是一个表中的主键和其他表中的外键。值集通常表示标签和测量值,并且位于相关列中。
- 例如, in
teacher
和T_ID
是dept_name
实体键,而name
和password
表示值集。
- 例如, in
识别关系。关系由同一张表中的两个或多个实体键表示,其中至少一个是主键的一部分。
- 例如,在 中
teacher
,该对表示由和(T_ID, dept_name)
标识的实体集之间的关系。我们可以将这些实体集称为和,但不要将它们与具有相同名称的表混淆。另一个例子是。T_ID
dept_name
teacher
department
advisor (T_ID, S_ID)
- 例如,在 中
识别属性。属性是从实体集或关系到值集的映射。表的主键将确定实体或关系集(原子或复合 PK),与相关列(值集)相关联,形成属性。
- 例如,in
teacher
是T_ID -> name
一个属性,并且T_ID -> password
是另一个。
- 例如,in
做一个图表。用矩形表示每个实体集,用菱形表示每个关系集。将关系连接到相关的实体集。将键和属性绘制为附加到确定实体或关系集的椭圆。我们不为关系绘制键 - 它们由关联实体集的键确定。
这只是一个基本的起点——这个过程实际上更复杂,因为我们需要注意弱键、弱实体集、识别关系、关联实体集、全部或部分参与以及关系基数。
再次,我强烈建议你仔细研究 Chen 的论文。
PS。我相信您的主键(以及andsection
中的相应外键)不正确。我怀疑主键应该是 only ,但由于我不确定您的模型实际代表什么(除了我自己对表和列名的解释),我不能肯定地说。teaches
takes
sec_id