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