【发布时间】:2015-03-29 20:05:06
【问题描述】:
我正在寻找一些建议,如果这是错误的部分,我深表歉意(如果更合适,我将删除并在 DB Administrators 中发布)。
我有一个管理法律案件的应用程序。每个律师事务所都有自己的数据库,用于管理自己的案件和其他业务流程。因此,总共可能有数百个数据库。
一个公民可能与许多律师事务所有案件。其中一些案例处于其生命的不同“阶段”(例如,见下文)
我希望我的应用程序按阶段和状态向用户展示他们的所有案例的汇总。所以对用户来说,它看起来就像来自电子邮件客户端的东西:
Cases (15)
Open (10)
Under Examination (4)
Escalated (6)
Closed (5)
要获得这些数字,我必须从每个数据库中为该用户处理的每个律师事务所选择所有案例。在伪代码中,我必须:
SELECT
c1.Title, c1.Stage
FROM
[@DatabaseName].dbo.Cases c1
WHERE
c1.CustomerID = @CustomerUserID
它必须对每个数据库(可能超过 50 个)执行此操作,然后将所有结果合并在一起,以获得该公民拥有的所有 Open 案例的总数,Stage。
我能想到的使这更简单的唯一其他方法是不使用多租户架构。也就是说,在 1 个数据库中只有 1 个 Cases 表,其中有一列用于标识它属于哪个律师事务所。问题是,如果应用程序扩展到人力资源或财务等其他领域,这个解决方案将无法很好地扩展。这意味着我将不得不将每个律师事务所的全部数据存储在一个数据库中,这将杀死我的服务器和资源。
有没有更好的方法来解决这个问题?
【问题讨论】:
-
另见:Hay,企业模型模式第 18 章:刑事司法。更多关于警察案件,但可能会有所帮助。
标签: sql-server database database-design cloud sql-server-2014