作为多租户数据库的常用方法,我在每个表中都有一个TenantId,它与suser_sid相同,并且基于他的表的视图按TenantId = suser_sid()过滤。
虽然这在大多数情况下工作正常,但由于我的suser_sid()返回数据类型varbinary(85),因此TenantId的自然数据类型是varbinary(85)。
由于显而易见的原因,这并不适合包含在主键或外键关系中,因为我认为在主索引中使用可变长度是一个坏主意(如果我错了,请告诉我)。
使用二进制(85)为TenantId会更好吗?或者我应该使用bigint,并且像转换那样转换(bigint,suser_sid())并与之进行比较,并希望不会为不同的租户进行转换。
答案 0 :(得分:0)
实际上,guid
是租户标识符的良好候选者,它非常支持索引,可以在self中用作主键,在引用表中用作外键。如果你必须从代码中生成一个,那么不需要调用大的逻辑或思考过程。只需调用Guid.NewGuid()
即可在C#中执行操作。 SQL服务器也可以轻松返回最后插入的内容。因此我觉得它可能是合适的候选人。