我有一张桌子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
表相关联的产品。
我想我需要使用多对多的关系,但我怀疑。
你能说什么?
你可以通过上面的关系来谈谈自己。
在您给出的示例中,您可以按如下方式表达。
一个产品可以属于一个或多个ForWhom。一个ForWhom可以拥有一个或多个产品。
数据库规范化的目标之一是防止数据重复。因此,如果您的产品属于多个ForWhom,并且Product表中有for_whom列,则每次产品属于多个ForWhom时,您将复制产品记录。同样,如果ForWhom表中有ProductID,那么每当ForWhom拥有多个Product时,您将复制ForWhom记录。
解决方案正如您在上面所建议的那样。您有一个中间表,允许您保持关系而不复制任何数据。在上面的解决方案中,Product,ForWhom和ProductForWhom(中间表)中的每条记录都是唯一的,因此您不会复制数据。