很高兴听到你们了解如何最好地考虑索引策略,因为这些表中的数据可能会在未来的时间内大幅增长。决定通过在单表方法中存储多租户数据来继续。举个例子,我只讨论了几个表。
CREATE TABLE [dbo].[TenantID](
[TenantID] [smallint] IDENTITY(1,1) NOT NULL,
[TenantName] [varchar](128) NOT NULL
)
CREATE TABLE [dbo].[MenuType](
[MenuTypeID] [int] IDENTITY(1,1) NOT NULL,
[TenantID] [smallint] NOT NULL,
[MenuTypeName] [varchar](128) NOT NULL
)
问题:
使用这种方法,我不会在表格设计中使用主键概念。但是,我想知道我将来是否因为没有主键而引发麻烦?
答案 0 :(得分:0)
虽然SQL Server应分配增量IDENTITY
值,但仍可以使用IDENTITY_INSERT ON
引入重复项。考虑对 TenantID 和 MenuTypeID 的复合主键约束,以保证主键是唯一的,并且对 TenantID 和 MenuTypeName <的唯一约束/ em>确保 MenuTypeName 对每个租户都是唯一的。仅MenuTypeID上的唯一索引/约束在此处没有任何值,假设它从未在没有TenantID的情况下使用。
为其中一个约束索引指定CLUSTERED
。聚集索引的最佳选择取决于您最常见的查询。如果有疑问,通常最好将主键索引作为群集索引。