我有一张桌子:
id | name | price
__________________
1 Rose 40
此外,还有另一个中间表,其中包含产品的目标信息:
id | product_id | for_whom
___________________________
1 1 1
2 1 2
第三个表是
Products
:id | Name
__________
1 Mom
任何产品都可以包含一个或多个参数
ForWhom
。否则,使用table
for_whom
可以找到一个或多个与ForWhom
table关联的产品。我想我需要多对多的关系,但我怀疑。
你能说什么?
最佳答案
你可以通过以上的关系来回答这个问题。
在你给出的例子中,你可以表达如下。
一个产品可以属于一个或多个用户。
拥有一种或多种产品的人。
数据库规范化的目的之一是防止数据重复。
因此,如果您有一个属于多个ForWho的产品,并且在Product表中有一个ForWho列,那么每次产品属于多个ForWho时,都会复制产品记录。
同样,如果forwho表中有一个ProductID,那么每次forwho拥有多个产品时,都会复制forwho记录。
解决办法正如你上面所建议的。您有一个中间表,允许您在不复制任何数据的情况下保持关系。
在上面的解决方案中,Product、forwho和productforwho(中间表)中的每个记录都是唯一的,因此不会复制数据。