如何设计SQL Server表来存储冗余和唯一的数据?
我是SQL Server新手。我正在创建一个新的SQL Server表来存储不同商店中不同商品的价格。除了少数几家商店外,大多数商品的价格在不同的商店都是一样的。例如,如果有100家商店,那么A项在90家商店中为10.00美元,在10家商店中为10.50美元,依此类推。对于不同的项目,此模式将有所不同。我想知道设计表的最佳方法是什么,这样我就不需要保存那么多冗余行,这些行将是相同的信息如何设计SQL Server表来存储冗余和唯一的数据?,sql,sql-server,Sql,Sql Server,我是SQL Server新手。我正在创建一个新的SQL Server表来存储不同商店中不同商品的价格。除了少数几家商店外,大多数商品的价格在不同的商店都是一样的。例如,如果有100家商店,那么A项在90家商店中为10.00美元,在10家商店中为10.50美元,依此类推。对于不同的项目,此模式将有所不同。我想知道设计表的最佳方法是什么,这样我就不需要保存那么多冗余行,这些行将是相同的信息 +----------------------------+ | PRICELIST
+----------------------------+
| PRICELIST |
+----------------------------+
| ITEM_ID | STORE_ID | price |
+---------|----------|-------+
| 1 | 0 | 100 |
| 2 | 0 | 200 |
| 2 | 10 | 205 |
+----------------------------+
主键:商品标识+商店标识
由于STORE_ID是主键的一部分,因此它是必需的。值0对应于“未定义具体价格的所有门店”
如果您使用最低值(不作为真实的storeid存在),则可以使用以下查询获取价格:
select *
FROM PRICE_LIST
WHERE ITEM_ID = pItemId
AND STORE_ID in (0, pStore)
ORDER BY STORE_ID DESC
LIMIT 1
Store&Item表具有多对多关系,要解决多对多关系,您必须创建一个新表,该表将存储关于哪个产品在哪个商店可用的信息 创建新表(项目存储) 纵队