【发布时间】:2019-05-19 14:29:50
【问题描述】:
我正在开发一个具有 Slack 风格的工作空间架构的应用程序,用户可以在多个“实例”(工作空间)下访问应用程序的相同功能。
我将继续以 Slack 为例来解释我的问题。
在我的应用程序中执行任何操作时,我需要验证用户是否有权对指定资源执行操作,并且该资源与用户位于同一工作区中。
我创建的第一个表(例如用户)与工作区具有简单的数据库关系。例如,使用 Users 表中的 WorkspaceId 字段。
我的问题是,当我创建更多“更远”的表时,例如 UserSettings,这可能与 Users 表存在一对一的关系,我现在必须加入 Users 记录以获取 UserSettings 所在的工作区记录所属。
所以现在我在想是否值得在所有表上添加一个 workspaceId 值,因为我最终会在我的数据库中执行大量 JOIN 以继续验证用户是否有权访问该资源。
寻找可能对场景有所帮助的建议/架构模式。
【问题讨论】:
标签: database architecture