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

标签 mysql sql database entity-relationship erd

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

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

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

我已经构建了自己的概念和逻辑 ER 图,我只需要知道我是对还是错,以便我可以继续其余部分。

enter image description here

最佳答案

以下是作业的详细说明以及我从中得到的内容:

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。如果您为每个表的 pk 命名为“id”,特别是当它是一个简单的序列号时,有些 ORM 往往开箱即用效果最好。

最好不要对属性名称执行您正在执行的操作。在 sql 中,人们坚持使用全大写或全小写命名,而不是驼峰命名。另外,我建议您不要仅仅因为价格属性位于 Package 表中而将其命名为 pPrice。只需将其命名为“价格”,因为如果您需要将其与也包含价格列的其他表区分开来,则可以将其称为 Package.price。

需要理解的重要一点是,Package 和 Product 之间的关系是多对多

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

为了为多对多关系创建实体,您需要一个位于两个表之间的表,并且其中的两个表都有外键。通常,人们会选择他们认为占主导地位的任何内容 - 我可能会使用 Package,并将该表命名为“PackageProduct”,以强化这样的想法:该表允许我将产品打包在一起并销售或分销它们。

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

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

这是代码:在供应商和包之间创建一对多关系。在此过程中,Package 中将有一个外键来存储Supplier.id(或supplier_id)

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

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

ERD

这是一个用“关系”格式呈现的 ERD,我发现它更具描述性,因为连接的许多边都使用马蹄形,所以非常明显。

ERD

关于mysql - 多对一关系可以用逻辑 ER 图表示吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61533595/

相关文章:

javascript - 如何从 mysql 检索数据到 chart.js

mysql - Innodb页面大小设置

python - 当任何列中存在其他表中的单词时,过滤掉 Pyspark 中的行

sql - 是否为表中的每个外键隐式创建了一个非聚集索引?

zend-framework - Zend 相当于更新案例

sql - 我可以使用 hadoop 而不是其他数据库来进行快速 SQL 操作吗?

mysql - 将MySql中的varchar转换为给定的日期格式

sql - 数据库和ERP

mysql - 产品电子商务结构(MySQL)

mysql - 建立数据库连接时出错