Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何设计SQL Server表来存储冗余和唯一的数据?_Sql_Sql Server - Fatal编程技术网

如何设计SQL Server表来存储冗余和唯一的数据?

如何设计SQL Server表来存储冗余和唯一的数据?,sql,sql-server,Sql,Sql Server,我是SQL Server新手。我正在创建一个新的SQL Server表来存储不同商店中不同商品的价格。除了少数几家商店外,大多数商品的价格在不同的商店都是一样的。例如,如果有100家商店,那么A项在90家商店中为10.00美元,在10家商店中为10.50美元,依此类推。对于不同的项目,此模式将有所不同。我想知道设计表的最佳方法是什么,这样我就不需要保存那么多冗余行,这些行将是相同的信息 +----------------------------+ | PRICELIST

我是SQL Server新手。我正在创建一个新的SQL Server表来存储不同商店中不同商品的价格。除了少数几家商店外,大多数商品的价格在不同的商店都是一样的。例如,如果有100家商店,那么A项在90家商店中为10.00美元,在10家商店中为10.50美元,依此类推。对于不同的项目,此模式将有所不同。我想知道设计表的最佳方法是什么,这样我就不需要保存那么多冗余行,这些行将是相同的信息

+----------------------------+
|          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表具有多对多关系,要解决多对多关系,您必须创建一个新表,该表将存储关于哪个产品在哪个商店可用的信息

创建新表(项目存储) 纵队

  • 项目ID
  • 店主
  • 价格