每个用户除了单独的数据库之外的任何选项?

时间:2015-06-21 16:00:34

标签: php mysql multiple-databases

我正在开发一个用户注册公司并存储所有信息的应用程序;

  • 公司

    tax_registration_no, name, address, etc
    
  • 产品

    product_code, description, price, etc.
    
  • 部门

    department_code, name. 
    
  • 员工

    employee_id, username, password, address
    
  • 个人员工权限

    employee_can_access_till, employee_can_provide_discount, etc.
    
  • 客户

    name, address, orders
    

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

我的客户希望在将文件上传到网站时生成每个公司的单独数据库,但我不相信这是一个聪明的方法(这听起来像是维护噩梦)。如果我要检查多个数据库,员工身份验证之类的工作会怎样?

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

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

关于如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:3)

您绝对不会每个用户需要一个单独的数据库。很难准确地告诉用户"用户",但听起来像是一家公司。

相反,只需在所有相应的表中包含companyid即可。从您的列表中,除了individual_employee_permissions表(您从join到员工的公司)之外,似乎都是这样。

这是"正常"设计这样一个数据库的方法,它有很多优点。您可以轻松查询公司间发生的事情 - 每家公司有多少员工?有多少客户?哪些员工有管理员权限?

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

将公司存储在不同的数据库中有几个原因。这些原因超越了上述方便。首先,如果每个系统都是公司的定制系统。然后可以为一家公司独立添加功能。

第二个原因是,如果安全限制要求数据不与其他公司存储在一起。数据。这种情况有时会发生,不太常见。但是这样的要求可能会为每个公司分配不同的数据库甚至单独的服务器。