【发布时间】:2022-01-06 17:01:38
【问题描述】:
我正在使用单个数据库创建租户门户应用程序。是的,我已经权衡了使用单个数据库与拆分它们的利弊。
我所有的表都有一个 Id (int)、TenantId (int)。
是否有任何可能的方法使每个租户从每个表的 id:1 开始?
例如我想:
(项目表)
租户 1
ID:1,租户 ID:1
ID:2,租户 ID:1
ID:3,租户 ID:1
租户 2
ID:1,租户 ID:2
ID:2,租户 ID:2
ID:3,租户 ID:2
而不是:
租户 2
ID:4,租户 ID:2
ID:5,租户 ID:2
ID:6,租户 ID:2
我已经考虑过使用 guid,但我讨厌它们在 url 中的外观。 我想知道是否可以使用 guid 作为唯一 id,但将其与用户屏蔽,并且只向他们显示 id。然后我需要某种机制来在我的代码中正确地手动增加 id 列。
只是想从经验中弄清楚有人会如何处理这个问题。可以纯粹在sql server中完成吗?
【问题讨论】:
-
您是否对简单地隐藏网址感到困难?
-
@squillman 我确实有一个租户表,其中包含我的租户,以及他们的唯一 ID。我的问题在于数据表。
-
除了在 url 中的视觉效果之外,id 是否真的很重要?似乎这将是管理复合 id 的大量工作,但收益甚微。
-
你想多了。你永远不应该围绕 URL 中的值来设计你的数据库。您设计数据库以对数据进行建模。
-
不确定您最后的评论是什么意思。但同样,您不需要设计数据库,因此很容易编码。如果任何使用 guid 的东西使得猜测查询字符串值变得困难,那么用户就不能通过通过查询字符串注入数据来开始查看其他数据。
标签: c# sql-server multi-tenant