1

我有一个相对简单的数据库设计,为了简洁起见,我将在此处进行简化。

我有 4 张桌子 => Products, Product_Sizes, Stores, Catalogs

有 6 家商店,每家商店都有自己独特的定制目录,从ProductsProduct_Sizes表中选择各种不同的产品和尺寸。

我想知道如何最好地设计Catalogs桌子。我的想法是:

id store_id product_id product_size
1  1        53522      1
2  1        40299      1
3  2        43326      1
4  2        43326      2 

或者

id store_id product_id product_sizes
1  1        53522      1
2  1        40299      1
3  2        43326      1,2

每个商店都有自己独特的(并且只有一个)目录,因此通过 store_id 获取所有条目的查询将生成该商店的目录。

另一种方法是创建另一个组合 products 和 product_size 的表到它自己的唯一表中,我们称之为Products

id product_id product_size
1  1          1
2  1          2
3  1          3
4  1          4

这个单独的表格为我提供了所有可能的产品及其尺寸变体的唯一 ID。这将导致每个Catalogs条目的每个产品都有一个 id。

我很想听听一些批评和更好的建议,因为我觉得这不正确,也无法说明如何更好地设计它。此外,如果我们要为每家商店实施超过 1 个目录,我知道当前的设计会让我很伤心。任何反馈将不胜感激!

4

2 回答 2

2

如果是我,我会将catalog表创建为实体表,并带有它自己的 id。如果该目录只属于一个store,我会添加一store_id列作为外键。

然后我会添加一个catalog_products表。这将具有catalog表的外键,以及products和/或product_sizes表的外键。(如果 aproduct_size只属于一个products表,则只属于该products_sizes表。)

为了解决多对多关系,我们通常添加第三个关系表。

  • 目录有零个、一个或多个产品 (product_sizes)
  • 产品 (product_size) 出现在零个、一个或多个目录中

关系表为我们提供了“一对多”的关系,我们可以表示:

  • 一个catalog_product 恰好出现在一个目录中
  • 一个目录包含零个、一个或多个 catalog_product
  • 一个 catalog_product 只与一个产品相关
  • 一个产品属于零个、一个或多个catalog_product
于 2013-07-22T21:05:49.460 回答
0

id store_id product_id product_size

1  1        53522      1
2  1        40299      1
3  2        43326      1
4  2        43327      2

不同尺寸的相同产品名称的不同产品 ID。

于 2013-07-22T21:07:01.637 回答