我有一个结构如下的表:
ProjectID | Field1 | Field2 | Field3 | ...
------------------------------------------
1 | aaa | aaa | aaa | ...
------------------------------------------
2 | aaa | aaa | aaa | ...
------------------------------------------
3 | aaa | aaa | aaa | ...
------------------------------------------
1 | aaa | aaa | aaa | ...
------------------------------------------
1 | aaa | aaa | aaa | ...
------------------------------------------
2 | aaa | aaa | aaa | ...
以及一些需要访问该表以读取数据并在进程的和写回一个值的外部系统。
问题是每个外部系统只能访问与他的项目相关的数据,IE:
- 系统 1 -> 项目 ID = 2
- 系统 2 -> 项目 ID = 3
- 系统 3 -> ProjectID = 1
我想保持这些数据分开以避免错误,因为这些系统将在我们的应用程序外部开发,我不能假设他们只会使用他们的数据。
我遇到了两种解决方案:
- 在不同的 DB 模式中为每个 ProjectID 创建一个表,并仅向每个外部系统提供访问其表的凭据。
- 为每个 ProjectID 创建一个可更新的视图,该视图仅为特定项目提取数据,并仅向每个外部系统提供访问其视图的凭据。
还有其他想法吗?
谢谢!