我有一个相对简单的数据库设计,为简洁起见,我将在这里进行简化。
我有4张桌子=> Products, Product_Sizes, Stores, Catalogs
。
有6家商店,每家商店都有自己独特的定制目录,从Products
和Product_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
OR
id store_id product_id product_sizes
1 1 53522 1
2 1 40299 1
3 2 43326 1,2
每个商店都有自己唯一的(且只有一个)目录,因此通过store_id获取所有条目的查询将导致该商店的目录。
另一种方法是将组合产品和product_size的另一个表创建到每个独立的表中,我们称之为Products
。
id product_id product_size
1 1 1
2 1 2
3 1 3
4 1 4
这个单独的表格为我提供了所有可能产品及其尺寸变体的唯一ID。这将导致每个Catalogs
条目的每个产品都有一个ID。
我很想听到一些批评和更好的建议,因为我觉得这是不对的,我不知道如何更好地设计这个。此外,如果我们每个商店实施超过1个目录,我知道这个当前的设计会让我感到悲伤。任何反馈都会非常感谢!!
答案 0 :(得分:2)
如果是我,我会将catalog
表创建为实体表,并使用它自己的id。如果该目录只属于一个store
,我会添加一个store_id
列作为外键。
然后我会添加一个catalog_products
表。这将具有catalog
表的外键,以及products
和/或product_sizes
表的外键。 (如果product_size
只属于一个products
表,那么只有products_sizes
表。)
要解决多对多关系,我们通常会添加第三个关系表。
关系表为我们提供了“一对多”关系,我们可以代表:
答案 1 :(得分: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。