多对多的关系或谬误?

问题描述 投票:1回答:1

我有一张桌子Products

id | name | price
__________________
1    Rose    40

此外,还有另一个中间表,其中包含产品所针对的信息:

id | product_id | for_whom
___________________________
1     1              1
2     1              2

第三个表是ForWhom

id | Name
__________
1    Mom

任何产品都可以包含一个或多个参数for_whom

否则,使用表ForWhom我可以找到一个或多个与ForWhom表相关联的产品。

我想我需要使用多对多的关系,但我怀疑。

你能说什么?

mysql sql relationship
1个回答
1
投票

你可以通过上面的关系来谈谈自己。

在您给出的示例中,您可以按如下方式表达。

一个产品可以属于一个或多个ForWhom。一个ForWhom可以拥有一个或多个产品。

数据库规范化的目标之一是防止数据重复。因此,如果您的产品属于多个ForWhom,并且Product表中有for_whom列,则每次产品属于多个ForWhom时,您将复制产品记录。同样,如果ForWhom表中有ProductID,那么每当ForWhom拥有多个Product时,您将复制ForWhom记录。

解决方案正如您在上面所建议的那样。您有一个中间表,允许您保持关系而不复制任何数据。在上面的解决方案中,Product,ForWhom和ProductForWhom(中间表)中的每条记录都是唯一的,因此您不会复制数据。

© www.soinside.com 2019 - 2024. All rights reserved.