合作伙伴的数据库架构

Database schema for Partners

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

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

1) 为合作伙伴复制整个架构,为此我们必须复制大约 50-60 table 秒,并且随着系统的增长,将来会复制更多。

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

有经验的请指教

None 您提出的建议是可取的。您需要遵循给定的指南来保护您的整个系统并审核您的技术合作伙伴。

[1]您应该在管理员端创建一个模块,它会向您显示现有的 table 以及将来添加的 table。

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

[3]保留一个审计跟踪 table,并插入用户 name/IP etc.in 的条目。因此,您的技术合作伙伴将对 activity 进行全面跟踪。

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

你想全面了解数据吗

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

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

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

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

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

实施

与其创建旗帜,不如创建一个名为 user_master 的大师 table。这个 table 的密钥应该在每个交易 table 中可用。通过这种方式,如果您想要包括第二个合作伙伴,您可以在 user_master table 中创建一个新条目,并对您的应用程序代码进行必要的修改。您的应用程序代码应该管理安全性。不用说,您也需要在数据库级别实现尽可能多的安全性。

其他建议

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