多对一关系可以用逻辑 ER 图表示吗?

Can a many to one relationship be represented in a logical ER diagram?

我的作业有一个特别的问题,如下所示:

“组成套装的每个产品都由一个供应商提供,并被赋予一个唯一的 ID。产品总是作为套装的一部分出售,而不是单独出售。”

所以基于此假设许多产品创建一个包(又名集合),但我不知道我是否正确,如果是这样,我如何直观地显示多对一关系作为 ER 图。

我已经构建了自己的概念和逻辑 ER 图,我只需要知道我是对还是错,这样我就可以继续剩下的了。

根据您的描述,您的架构将具有一对多关系,即您的单个包裹包含许多产品。

你也可以找出你的ERD图

这是作业的细目分类以及我从中得到的结果:

Each product making up a set is supplied by a single supplier and is given a unique ID,. Products are always sold as part of a set, never on their own.

据我所知,我们有这些实体:

  1. 产品
  2. 供应商
  3. 套餐(套)

你应该知道每个实体都需要自己的主键。专业人士将调用此 id,或 product_id。如果您为每个 table 'id' 命名 pk,则 ORM 往往开箱即用,尤其是当它是一个简单的序列号时。

最好不要对属性名称做您正在做的事情。在 sql 中,人们坚持使用全部大写或全部小写的命名方式,而不是驼峰式命名。另外,我建议您不要仅仅因为价格属性在包 table 中就将其命名为 pPrice。只需将其命名为价格,因为如果您需要将其与其他也包含价格列的 table 区分开来,可以将其称为 Package.price。

重要的是要了解 Package 和 Product 之间的关系是 Many to Many

  1. 一个产品可以是多个包裹的一部分。
  2. 一个包裹可以包含许多产品

为了为多对多关系创建实体,您需要一个位于 2 个 table 之间的 table,并且将具有指向两个 table 的外键它。通常人们会选择他们认为占主导地位的任何一方——我可能会使用 Package,并将 table 命名为 "PackageProduct" 以强化这样的想法,即 table 让我可以将产品打包在一起销售或分发它们。

PackageProduct
--------------
id (pk)
package_id (foreign key to Package table)
product_id (foreign key to Product table)

您还需要一个供应商table,但您被告知包裹和供应商之间的关系是一个包裹只能有一个供应商。

此代码用于:在供应商和包装之间创建一对多关系。在这样做时,Package 将有一个外键存储 Supplier.id(或 supplier_id)

总而言之,您应该拥有这些实体(tables):

  1. 套餐
  2. 产品
  3. 供应商
  4. 包装产品

ERD

这是一个用 "Relational" 格式渲染的 ERD,我觉得它更具描述性,因为连接的许多方面都使用鱼尾纹,所以非常明显。