4

首先,我知道这个问题已经stackoverflow 上讨论过。但是,这种情况可能会有所不同。

让我解释一下情况:

老板希望我和我的同事开发一个 Web 应用程序,他可以在其中添加客户(阅读公司,现在在“用户”上填写)。
每个用户将在应用程序中拥有自己的私人部分,他可以在其中管理他的库存/账单/付款/订单/......他们甚至可以选择询问不同的模块/菜单项/视图/..他们的私人部分。
我们的老板必须能够通过检查主控制部分中的选项来添加/删除一些模块/视图/..。
等等....

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

由于我是这里的新人,我不喜欢在不知道是否确定的情况下坚持这一点his statement === false

所以,我很想听听你对此的看法。

  • 安全性如何
  • 每个公司的个性化怎么样
  • 如何管理数据库
  • 有没有人有类似的项目
  • 为每家公司使用不同的“模块”怎么样(就像我的第一个想法)
  • ...(实际上所有说服他们的信息都很好,但我觉得我必须提供一个很好的选择)

提前致谢

4

1 回答 1

6

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

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

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

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

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

于 2013-04-17T10:25:06.140 回答