我计划一个数据库模式来存储亚马逊产品属性和额外的市场特定值(如标题、艺术家、重量等)
到目前为止,有一个带有列的Products表。GTIN varchar(13) (PK)
在我的特定情况下,GTIN 可能是 EAN/UPC/ISBN 标识符。Products 中还有一ASIN char(10)
列将 GTIN 与 ASIN 关联。
以编程方式捕获并正确处理同一 ASIN 的 EAN 和 UPC 时的行为,因此请认为所有 ASIN 都是唯一的。我定义了一个UNIQUE NONCLUSTERED CONSTRAINT
onASIN
并将其与 Products 表相关联为one-to-many。
第二个表ProductsData定义ASIN char(10) (FK)
和 mid tinyint
(市场 ID)。所有 ASIN 都与各自的市场 ID 一起存储:
rowid ASIN mid
1 B0002DB5GS 1
2 B0002DB5GS 44
3 B0002DB5GS 39
4 B0002Y4SYS 1
5 B0002Y4SYS 44
6 B0002Y4SYS 39
正如您所注意到的,还有一rowid int IDENTITY(1,1)
列是虚拟的,但实现了唯一性。
假设以下事实:
- 非常罕见的更新
- 相对罕见的插入(每个添加的产品在事务中创建 3 条记录)
- 没有删减
- ASIN 列上的密集选择
rowid
是一个假人,它只是确保唯一性。
这里有三个问题:
- 是否值得在和上创建复合索引?
ASIN
mid
- 如果是,集群还是非集群?
- 我可以摆脱聚集索引,
rowid
因为我真的不需要它吗?