2014-01-31 53 views
0

我有一张表,其中有ProductTypeID, BrandID, SupportedBatteryID列,它存储了由特定产品支持的batteryID我们是否需要引用另外两个表的表上的主键?

这里没有列是唯一的,所以我需要这些类型的表上的主键?

如果我将添加一个主键,它会提高性能,同时通过使用产品ID搜索特定产品的电池?

+2

除非有候选键,否则不能有键。这就是说,好的桌面设计*规定*每个记录都有一个键。在这种情况下,我怀疑整个记录是一个多列候选键 - 因此可以用作PK。 (但是,您需要更详细地查看或讨论数据)。无论如何,密钥不会提高性能 - *索引*。但是PK通常也是一个聚集索引。在这种情况下,如果ProductTypeID上没有包含作为第一列的聚集PK,则可能会添加* non-key *索引以帮助查询。 – user2864740

+0

@DeepakKumarPadhy这是一对多还是一对一的关系,我的意思是对于一个productId,是否只支持一个'BatteryID'或多个电池可以支持特定的ID? –

+0

@SurajSingh:对于单个产品支持多个battries,这就是为什么product id不能成为主键 –

回答

1

您可以在(ProductId, SupportedBatteryId)上构建聚簇索引。 这将帮助您不创建主键

相关问题