gpt4 book ai didi

java - 将数据与用户分开的最佳做法是什么

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:58:32 26 4
gpt4 key购买 nike

如果您愿意,我们会为客户开发一个向所有用户开放的大型应用程序,这意味着所有用户都可以看到彼此的数据。

现在客户突然说他们希望只有属于同一组织的用户才能查看彼此的数据。

所以我们想出了这个数据模型:

user's organization

那么现在的问题是:如何最好地分离数据?
这是我看到的唯一选择:

  • 在所有相关表上进行 SQL JOIN(所有具有数据的表不应该总是在 Organization 上连接)-- 所有查询现在都应该向 Organization 添加一个额外的连接,如果连接不存在,我们需要创建一个新的外键。

但我觉得额外的连接(我们有大约 20 个表需要额外的连接)非常昂贵。
我希望我们可以考虑其他一些最佳实践或解决方案。

PS:这是一个使用Java/JSF/Seam开发的Web应用程序(但我不知道这是否相关)

更新

我想澄清一件事。我的建议不是安全性而是性能。我们已将组织的外键添加到所有具有共享数据的相关表中,并且我们正在使用用户登录的组织来过滤数据。

我只想知道这是否是一个好的架构解决方案(内部连接),或者我们是否应该做其他事情(即:加载所有共享数据,并在内存中过滤而不是 sql 连接)。

最佳答案

您真的必须了解持久层和应用层之间的区别。

您如何定义数据库表并不重要,因为任何具有数据库访问权限的人都可以访问所有用户数据。 重要的是您如何定义应用程序中的行为。

更改数据库设计只应出于性能原因,而非安全性 - 安全性应在应用程序中处理。

关于java - 将数据与用户分开的最佳做法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2636130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com