【问题标题】:Strategy to map product and stores, maybe country too?映射产品和商店的策略,也许国家也是?
【发布时间】:2010-12-27 19:09:48
【问题描述】:

我的看法: 说一个国家有 1000 万家商店(实际上更多)。 在这 1000 万家商店中,至少有 5000 万种独特的产品在售。 (同样在现实中更多)。

所以要映射出来,我猜它会像:pk_id、store_id、product_id

但这样一来,每个国家/地区将有 5 亿行 x 甚至 100 个国家 = 500 亿行。不是一个非常有效的表来进行查找、读/写等操作。

有没有更好的方法来映射产品、商店,然后在组合中添加国家/地区?

我还没有添加几乎三倍于这个尺寸的在线商店或在线产品。

【问题讨论】:

    标签: mysql database schema


    【解决方案1】:

    每家商店都位于特定的国家/地区。

    您可以使用一个表来存储商店和国家/地区之间的关系,并使用另一个表来保存商店和该商店所售商品之间的关系。

    为了提高查找效率,您需要添加索引。

    【讨论】:

    • 如果我想查看 Apple 品牌在 50 个国家/地区销售的独特或常见产品,它会很好地绘制出来吗?将有一个高于 store 表的品牌表来保存品牌到商店的关系。
    【解决方案2】:

    不要将所有内容都存储在一张表中。你应该这样做:

    1. 将产品存储在products 表中(product_id 等/索引 product_id)
    2. 将商店位置和国家/地区存储在单独的表中(id、store_id、country_id / 创建一个名为 store_country 的索引,其中包含 store_id、country_id 列)

    通过这种方式,您可以在 38 个(随机)国家/地区拥有 5000 万种产品(5000 万行)和 5000 万家商店,假设每家商店在每个国家/地区都有位置,并且每家商店都销售每种产品(不现实),则为 1,900,000,000 行。

    我喜欢大数字。

    【讨论】:

      【解决方案3】:
      • 一个产品表
      • 一个国家表(使用 ISO 国家代码作为 PK)
      • Stores 的一个表(包括国家表的外键)
      • 一个用于映射产品和商店的表。使用{product_id, store_id} 作为主键)

      如果您的公司与大多数公司一样,我想您会发现并非所有商店都在销售所有产品,这使得映射表比您预期的要小得多。 (如果所有商店都销售所有产品,则不需要映射表)

      【讨论】:

        猜你喜欢
        • 2023-04-10
        • 1970-01-01
        • 2011-04-24
        • 2012-07-25
        • 1970-01-01
        • 1970-01-01
        • 2011-07-11
        • 1970-01-01
        • 2014-09-22
        相关资源
        最近更新 更多