除了每个用户单独的数据库之外还有其他选择吗?

Any option other than a separate database per user?

我正在开发一个应用程序,用户可以在其中注册他们的公司并存储他们的所有信息;

每个注册的公司都将获得一个模板电子表格文件,他们可以在其中复制数据并将其发送回我的客户进行存储。

我的客户希望在将文件上传到网站时为每个公司生成一个单独的数据库,但我不认为这是一个明智的做法(而且这听起来像是一场维护噩梦)。如果我要检查多个数据库,员工身份验证之类的东西会如何工作?

数据将存储在设备内部,因此它只会同步到服务器一次以获取数据,然后在更新时再次同步。

我最初的想法只是将电子表格存储在服务器上并在需要时通过 JSON 解析并发送到应用程序。这样,它只是一个可以下载、修改和重新上传的文件。仅将员工(可能还有公司)存储在一个数据库中。

关于如何解决这个问题有什么建议吗?

您绝对需要每个用户一个单独的数据库。 "user" 很难准确表达你的意思,但它听起来像一家公司。

相反,只需在所有适当的 table 中包含 companyid。从你的列表来看,除了 individual_employee_permissions table(你从 join 到员工的公司)。

这是设计此类数据库的 "normal" 方法,它有很多优点。您可以轻松查询跨公司发生的事情——每个公司有多少员工?有多少客户?哪些员工拥有管理员权限?

另一个优势是在维护方面。如果您需要修复系统或添加功能,在单个数据库上比在多个数据库上更容易。同样,备份和恢复系统在一个数据库上是一个简单得多的过程。

将公司存储在单独的数据库中有几个原因。这些原因超越了上述便利。首先是每个系统是否都是为公司定制的系统。然后可以独立于其他公司为一家公司添加功能。

第二个原因是,如果安全限制要求数据不能与其他公司的数据一起存储。这种情况有时会发生,但很少发生是有充分理由的。但是这样的要求可能会要求每个公司使用单独的数据库,甚至单独的服务器。