我的作业中有一个特殊问题,如下所示:
“组成套装的每个产品均由单个供应商提供,并被赋予唯一的 ID。产品始终作为套装的一部分出售,而不是单独出售。”
因此,基于此,假设许多产品创建一个包(又名集合),但我不知道我是否正确,如果是这样,我如何以 ER 图的形式直观地显示多对一关系。
我已经构建了自己的概念和逻辑 ER 图,我只需要知道我是对还是错,以便我可以继续其余部分。
最佳答案
以下是作业的详细说明以及我从中得到的内容:
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.
由此我了解到我们有这些实体:
- 产品
- 供应商
- 套装(套)
您应该知道每个实体都需要自己的主键。专业人士会调用此 id 或 Product_id。如果您为每个表的 pk 命名为“id”,特别是当它是一个简单的序列号时,有些 ORM 往往开箱即用效果最好。
最好不要对属性名称执行您正在执行的操作。在 sql 中,人们坚持使用全大写或全小写命名,而不是驼峰命名。另外,我建议您不要仅仅因为价格属性位于 Package 表中而将其命名为 pPrice。只需将其命名为“价格”,因为如果您需要将其与也包含价格列的其他表区分开来,则可以将其称为 Package.price。
需要理解的重要一点是,Package 和 Product 之间的关系是多对多
- 一个产品可以是多个套餐的一部分。
- 一个包裹可以包含多种产品
为了为多对多关系创建实体,您需要一个位于两个表之间的表,并且其中的两个表都有外键。通常,人们会选择他们认为占主导地位的任何内容 - 我可能会使用 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)
总而言之,您应该拥有这些实体(表):
- 套餐
- 产品
- 供应商
- 包装产品
ERD
这是一个用“关系”格式呈现的 ERD,我发现它更具描述性,因为连接的许多边都使用马蹄形,所以非常明显。
关于mysql - 多对一关系可以用逻辑 ER 图表示吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61533595/