数据库设计麻烦.每个用户的表格

Bra*_*der 4 php mysql security codeigniter

首先,我知道这个问题已经讨论过这里,并在这里对计算器.但是这种情况可能会有所不同.

让我解释一下情况:

老板希望我和我的同事开发一个Web应用程序,在那里他可以添加客户(阅读公司,现在就'用户'表单).
每个用户都可以在应用程序中拥有自己的私人部分,在那里他可以管理他的股票/账单/付款/订单/ ......他们甚至可以选择不同的模块/菜单项/视图/ ..为他们的私人部分.
我们的老板必须能够通过检查主控制部分中的选项来添加/删除一些模块/视图/ ..
等等....

我的第一个想法是为每个用户提供一个主模块.我的同事抛弃了这个想法.他认为这太过分了.
但是,当我们开始设计数据库时,他说他希望每个用户都拥有数据库中的大多数表...
我知道这是不好的做法,并试图解释.但他表示,如果我们将所有内容保存在同一个表格中,那将是不安全的.(如果我们被黑了,他们不仅会有一家公司的数据,而是来自所有公司的数据)
讨论花了一些时间,最后他的'''点'''甚至让我们的老板相信他的方法.

由于我这里是新来的家伙,我不喜欢站在这家公司不肯定知道,如果his statement === false

所以,我希望你对此有所了解.

  • 安全性如何?
  • 每家公司的个性化程度如何?
  • 如何管理数据库
  • 是否有人有类似的项目
  • 如何为每个公司使用不同的"模块"(如我的第一个想法)
  • ...(实际上所有信息都说服他们很好,但我觉得我必须有一个很好的选择)

提前致谢

ToB*_*oBe 6

这在某种程度上是个人意见的问题.但有些事情并不是好的做法.所以这是我对这些观点的看法:

在同一个表中拥有多个"用户"根本不应该是安全风险.

  • 如果某人有权访问您的数据库,则无论存储在何处,他都拥有所有数据.
  • 您的应用必须确保通过过滤和验证的WHERE条件,用户无论如何都只能访问他的行,或者您的应用在其他级别上会出现严重的安全问题,直至SQL注入
  • 如果每个用户都有一个表,那么将应用程序扩展到新用户,管理旧用户或删除它们时会遇到很多麻烦.
  • 如果您必须从多个用户收集数据,性能将非常糟糕
  • 大多数数据库中存在最大数量的表,具体取决于许多因素.我不知道你需要存储多少用户,但请记住这一点

将用户分成他们自己的表的解决方案听起来就像是在跳过开发可靠和安全的数据模型所需的时间.这通常会在您的应用程序的后期开发或维护过程中导致许多问题.我强烈反对这一点.

经验法则应该是每个对象类型使用一个表,而不是每个对象实体.