很高兴听到你们讨论如何最好地考虑索引策略,因为这些表中的数据在未来可能会大幅增长。决定通过将多租户数据存储在单表方法中来进行。例如,我只有几个表用于此讨论。
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
)
- MenuTypeName 对于每个租户应该是唯一的。因此,我将 在 TenantID 和 MenuTypeName 上有一个唯一索引
- TenantID 应参考 Tenant 表。因此,TenantID 上的外键。
- 我仍在考虑是否应该在 MenuTypeID 上有主键或只是一个聚集索引,它是一个自动增量列。
- 将来,当表大小增加时,我应该能够轻松地将基于 TenantID 的数据分区到新的数据库服务器。
问题:
- 我真的需要在 MenuTypeID 上定义主键吗,因为我们知道 SQL Server 保证增量种子。我可以在 MenuTypeID 上定义一个聚集索引吗?
- 在 TenantID 和 MenuTypeName 上定义唯一键。
使用这种方法,我在表设计中不会有主键的概念。但是,我想知道我将来是否会因为表中没有主键而招来麻烦?