2010-08-03 113 views
1

我的问题与this question非常相似,但更具体一点。多公司的Web应用程序数据库安全

我的应用程序有多个公司和多个用户每公司。对我来说最重要的是(在这一点上)每个公司都有一套“私人”的表格。这使得安全性非常简单,因为我不必担心加入我的结构树,以确保我只能获取特定公司的数据。我还可以扩展mysqli数据库扩展,并让它在查询中的表名上放置一个前缀,这样我就不必在编写查询时担心安全问题。

我能看到的另一个主要优势是,如果其中一家公司需要定制,我可以修改其特定表格,而不必考虑其他人。我的应用程序的设计方式非常模块化,实现自定义代码非常简单。

我可以看到一些缺点,但到目前为止似乎上述优点会超过它们。上面提出的系统对我的(可能)超规范化的数据库模式偏好进行排序,直到此时为止。另一个明显的缺点是实现架构变更,但我可以编写脚本并且足够安全。我不确定的一点是表现。如果我有MySQL与这么多表一起工作,我会为自己制造瓶颈吗?

我期待着你的想法!

+0

您是否有任何需要在'meta'级别进行查询,即为您自己的内部报告汇总统计信息? – Paddy 2010-08-03 14:30:53

回答

4

您的建议对我来说听起来很合理。我建议不要在公司名称前面加上前缀,而要将每个公司的表格存储在一个单独的模式中。这样你就可以拥有同名的表格,减少代码中的问题,并且可以方便地使用不同的用户名和密码保护每一组表格。备份和复制将在需要时全部区分。

查找表可以存储在所有用户都可以访问的另一个模式中。

+0

又名“数据库标准化”。这也将简化稍后可能会发生的变化,并且易于维护。 – Matthew 2010-08-03 14:30:23

+0

是否有任何性能问题需要考虑将数据放入单独的数据库中,因为这些数据与同一数据库中的许多表相关联?打开一个新的数据库连接是否有损失? – Icode4food 2010-08-03 14:48:18

+0

单独的逻辑模式('数据库')全部驻留在同一个MySQL物理数据库中,因此不存在。实际上,由于您可以分别指定不同的存储特性,因此可以通过在存储区域,磁盘等之间切换模式来消除性能问题。 – 2010-08-03 15:03:50