在 SQL 数据建模器中将逻辑模型转换为关系模型时出现问题

Posted

技术标签:

【中文标题】在 SQL 数据建模器中将逻辑模型转换为关系模型时出现问题【英文标题】:I have problem while converting logical model to Relational model in SQL data modeler 【发布时间】:2022-01-06 09:31:12 【问题描述】:

我正在尝试为我的作业开发一个数据库。我在 SQL 数据建模器中设计了一个逻辑模型。我试图将其转换为关系模型,但关系被创建为表。不喜欢关系。我在 youtube 上观看了一些视频并尝试做相同的表格。我又遇到了同样的问题。我的错误在哪里,我该如何解决?非常感谢...

Logical Model

Relational Model

【问题讨论】:

多对多关系是通过关系数据库中的交叉表实现的 “但关系是作为表创建的”——表是关系数据库中关系的表示。所以创建表没有问题。 为什么会有重复字段的“演员”、“经理”、“导演”和“制片人”表(尤其是如果 1 人可以担任多个角色)?为什么不拥有一个包含常见(id、name、DoB 和性别)字段的单个“人员”表,然后您可以拥有与工作相关的表,以便数据在 3NF 中。 逻辑模型关系物理模型中的表。顺便说一句,两者都是关系模型。 请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:

数据建模中使用了不同的术语,不同的工具提供了几种类型的模型并且命名不同,所以关系模型的确切含义(我从未听说过)将取决于您使用的工具.从截图来看,它似乎是一个物理模型,包括表、列、外键、索引、存储详细信息等。如果您想要不同的东西,请描述它是什么。

传统上有

    逻辑模型,也称为实体模型或实体关系图 (ERD),它与数据库无关,仅对业务实体、它们的属性、唯一键和关系进行建模。

    一个物理模型,定义一个准备在特定供应商的 RDBMS 中实施的模式。这有包含列、主键、检查约束、索引等的表。

根据我的经验,工具通常会模糊实体和表格之间的界限。

按照我的学习方式,实体是业务感兴趣的概念项目,例如 “医生”“患者”,因为模型的目的是为了展示什么是医生,什么是病人,以及它们之间的关系,这就是为什么它们以单数命名的原因。然而,数据库表(在物理模型中)通常包含代表许多医生和患者的行,因此复数形式是合适的。但意见不同。

【讨论】:

以上是关于在 SQL 数据建模器中将逻辑模型转换为关系模型时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

将数据库模型转换为 Ruby On Rails 上的模型

数据仓库数仓建模之星型模型与维度建模

数据持久化

DBMS-数据库设计与E-R模型:E-R模型约束E-R图E-R扩展特性E-R图转换为关系模式UML建模

Django 和 postgres - 在模型字段中将数据存储为 json 的缺点

谁能告诉我SQL数据库如何建模?