合作伙伴的数据库架构

时间:2016-06-13 04:06:10

标签: database database-design relational-database database-schema

我们有一个管理公司,团队,分支机构,员工等的应用程序,并且有不同的表格。现在我们要求我们必须为我们的技术合作伙伴提供相同系统的访问权限,这样他们也可以做我们正在做的事情。但与此同时,我们需要在我们的系统中监督这些合作伙伴。

因此,就数据库架构而言,管理它们的最佳方式是:

1)复制合作伙伴的整个架构,为此我们必须复制大约50-60个表以及将来更多的表,因为系统将会增长。

2)在每个表中创建一些标志,告诉它是内部或外部实体。

如果有人有任何经验,请建议。

2 个答案:

答案 0 :(得分:1)

在最终确定任何方法之前,请考虑以下几点。

您想要全面了解数据吗

我的意思是,您希望查看合作伙伴创建的数据以及您在单个报告/表单中创建的数据。如果答案是肯定的,那么将数据库存储在同一组表中并根据一些列来区分它们是有意义的。

您的应用功能是否会发生显着变化

如果这个问题的答案为否,则将数据保存在同一组表中是有意义的。这样,您对系统所做的任何更改都将自动反映给所有用户,您不必跨模式/数据库复制代码位。

您和您的合作伙伴是否会使用相同的主/参考数据

如果这个问题的答案是肯定的,那么再次使用同一组表是有意义的,因为你将取消不必要的冗余数据。

<强>实施

我建议创建一个名为user_master的主表,而不是创建标志。应该在每个事务表中提供此表的密钥。这样,如果您想要包含第二个合作伙伴,您可以在user_master表中创建一个新条目,并对您的应用程序代码进行必要的修改。您的应用程序代码应该管理安全性。不用说,您还需要在数据库级别实现尽可能多的安全性。

其他建议

  • 要实现这些实体的物理分离,您可以实现 根据您使用的数据库进行分区或分片。
  • 执行彻底的回归测试并检查您的数据是否存在 在合作伙伴报告或表单中可见。另外,检查伙伴是不是 能够更新或插入您的数据。
  • 由于系统中的数据会显着增加 对报告,表格和程序的性能测试有意义。
  • 如果您正在使用索引,那么您需要重新访问这些索引 你的条件会发生变化。
  • 此外,请重新访问您的密钥和关系。

答案 1 :(得分:0)

您提出的任何建议都不可取。您需要遵循给定的指导原则来保护整个系统并审核您的技术合作伙伴。

[1]你应该在Admin端创建一个模块,它将显示现有的表以及将来添加的表。

[2]为您的技术合作伙伴创建用户并提供有关这些对象的权限。

[3]保留一个审计跟踪表,并在其中插入用户名/ IP等条目。因此,您将完全跟踪技术合作伙伴执行的活动。