【问题标题】:Relationship into table (ER-model into relational model)Relationship into table (ER-model into relational model)
【发布时间】:2023-01-02 17:31:10
【问题描述】:

我正在尝试将 ER 模型转换为关系模型,然后再转换为 SQlite3 代码。

在 ER 模型中,我写了例如关系:

客户 - 有 - 订单

(其中 Customer 和 Order 是实体。Has 是关系)

我知道我需要将实体转换为表并将它们的属性转换为该表的字段

但是,我应该创建一个“订单”和“客户”实体之间“有”关系的表吗?

我应该,根据这篇文章:https://www.google.com/amp/s/www.geeksforgeeks.org/mapping-from-er-model-to-relational-model/amp/

【问题讨论】:

  • 实际上,问题是我认为我总是可以用 SQlite 创建实体表,添加外键,然后用数据填充表。现在,这似乎还不够,在这种情况下我还需要对“有”表进行编码吗?

标签: database sqlite entity-relationship


【解决方案1】:

问题归结为关系类型(一对一、一对多或多对多)。

快速回答:一般来说,当关系类型是多对多时,我们只需要一个关系表**。

  • 对于1对1要么一对多, 我们不必也不应该创建关系表。
  • 对于多对多, 我们必须创建关系表。

例子:

例如,假设关系是一对多(一个客户可以有多个订单)。然后,我们可以在“1”侧添加实体的主键 (pk) 作为“多”侧的外键 (fk)。

Customer: (<customer_id_pk>, <other_fields>)

Order:    (<order_id_pk>, <other_fields>, <customer_id_fk>)

在另一个例子中,假设关系是多对多(一个客户可以有多个订单,很多客户不管什么原因都可以共享一个订单)。然后,我们将需要另一个表来表示关系。

Customer: (<customer_id>, <other_fields>)

Order:    (<order_id>, <other_fields>)

Customer_Order_Relationship: (<customer_id>, <order_id>)

【讨论】:

  • 嗨 GT Metric,非常感谢您澄清这一点!
猜你喜欢
  • 2023-02-09
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 2016-01-11
  • 2015-04-12
  • 1970-01-01
  • 2014-05-12
  • 2023-03-18
相关资源
最近更新 更多