答案 0 :(得分:1)
我不知道任何可以从关系模型生成正确ER图的工具。这些工具的一个难点是并非所有关系模型都可以解释为ER模型。虽然关系模型可以表达任何有限的事实(因为它等同于一阶逻辑),但实体关系模型更受限制。
要将关系模型转换为ER图,我建议采取以下步骤:
对ER模型的充分理解将是有价值的。研究陈的论文The Entity-Relationship Model - Toward a Unified View of Data
。
对于每列,确定它是表示实体集还是值集。实体密钥通常是一个表中的主键和其他表中的外键。值集通常表示标签和度量,并且位于依赖列中。
teacher
中,T_ID
和dept_name
是实体键,而name
和password
代表值集。确定关系。关系由同一个表中的两个或多个实体键表示,其中至少有一个是主键的一部分。
teacher
中,对(T_ID, dept_name)
表示由T_ID
和dept_name
标识的实体集之间的关系。我们可以调用这些实体集teacher
和department
,但不要将它们与具有相同名称的表混淆。另一个例子是advisor (T_ID, S_ID)
。识别属性。属性是从实体集或关系到值集的映射。表的主键将确定与从属列(值集)关联的实体或关系集(原子或复合PK),从而形成属性。
teacher
中,T_ID -> name
是属性,T_ID -> password
是另一个属性。制作图表。用矩形表示每个实体集,并用菱形设置每个关系。将关系连接到相关实体集。将键和属性绘制为附加到确定实体或关系集的椭圆。我们不会为关系绘制关键字 - 它们由关联实体集的关键字决定。
这只是一个基本的起点 - 这个过程实际上更复杂,因为我们需要注意弱键,弱实体集,识别关系,关联实体集,全部或部分参与以及关系基数。
同样,我强烈建议你学习陈的所有细节。
PS。我相信section
的主键(以及teaches
和takes
中的相应外键)不正确。我怀疑主键应该只是sec_id
,但由于我不确定你的模型实际代表什么(除了我自己对表和列名的解释),我无法肯定地说。