我们有一个具有大量关系表的旧修复数据库,它可以正常运行,但是我需要对其进行更新以能够处理不同的客户端(区域)-当前,此操作仅作为单个客户端完成。
所以我需要扩展表和sql语句,以便我可以以用户A的身份登录,他将仅看到自己的系统,而用户B也将拥有自己的系统。
是否正确理解您不会为每个客户端创建新表,而是仅向每个(基本)表中的每个记录添加一个clientID,然后仅在所有sql语句中使用一个clientid进行过滤以实现多个客户端? / p>
在托管解决方案上,这是否也行得通(如何完成)?如果这是一个问题,让我说我有500个客户(我从理论角度讲就不会),我会对性能感到担心吗?
答案 0 :(得分:1)
通常情况是在适当的地方向每个表添加一个客户端密钥。许多表不需要它们,例如参考表。
出于多种原因,它是首选:
这并不总是最好的解决方案。您可能有要求指定必须分隔数据的要求-在这种情况下,每个客户端应位于单独的数据库中。但是,附加键上的索引可能只是一个较小的考虑因素,您不必为此担心。
答案 1 :(得分:0)
此问题曾被问过。将键添加到每个表的问题在于,您说自己有一个工作系统,这意味着每个查询都需要更新。
最简单的方法可能是为每个客户端创建一个新的数据库,因此您唯一需要更改的就是连接字符串。这也意味着您可以使用自动化查询工具来工作,而不必担心跨客户端数据泄漏。
它还允许您轻松地备份,传输,删除单个客户端。
这种方法当然有优点和缺点,但是它将简化开发工作。还请记住,如果您打算在云环境中启动它,那么像这样旋转数据库也很容易。