【问题标题】:Many to Many relationship or fallacy?多对多关系或谬误?
【发布时间】:2017-12-20 12:01:35
【问题描述】:

我有一张桌子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 表关联的一个或多个产品。

我认为我需要使用多对多关系,但我很怀疑。

你能说什么?

【问题讨论】:

  • 您需要查看 SQL 中的 joining 表。这是一个相对容易的问题。试着付出一些努力。
  • 这是经典的多对多关系示例。中间表是所谓的“桥表”。不确定您到底想达到什么目标。
  • 我尝试为每个产品设置属性。
  • 加入表是操作,但我讲的是基础——关系。
  • 也许妈妈也需要一辆车?还是自行车?异或一瓶酒?

标签: mysql sql relationship


【解决方案1】:

你可以通过上面所说的关系来回答这个问题。

在您给出的示例中,您可以如下表示。

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

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

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

【讨论】:

    猜你喜欢
    • 2018-06-15
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 2018-01-03
    • 2016-03-22
    • 2018-09-09
    • 2016-11-24
    相关资源
    最近更新 更多