多租户应用程序的数据库设计

时间:2017-07-18 09:42:07

标签: sql-server database-design multi-tenant

对于多租户应用,我们有以下数据库设计: enter image description here

基于共享数据库方法。由于我们使用公司ID识别租户(每家公司都有不同的员工及其任务等等),我的问题是

  

我们是否还需要Task表中的companyId键以便每条记录   任务可以使用companyId OR我们应该清楚地识别出来   总是使用Join?

因为如果我们在Task中使用companyId,这将不是一个正确规范化的数据库,因为Task将与公司和与公司相关的员工有关。

1 个答案:

答案 0 :(得分:0)

这是一个意见问题。我的看法是将companyId作为主键的一部分,因此在每个表中都是必填字段。

在多租户应用程序中,我们应该确保在没有公司代码的情况下不会在表中添加数据。如果不将其作为主键或非空字段的一部分,则可以通过程序逻辑来确保它。在我看来,DB也应该确保这一点。第二个问题是表任务ID。 2家公司可能拥有相同的员工ID和相同的任务ID。 DB不应该限制它。