gpt4 book ai didi

database - 包含对记录/数据所有权的访问的简单数据库结构

转载 作者:搜寻专家 更新时间:2023-10-30 23:26:10 25 4
gpt4 key购买 nike

<分区>

我的问题是关于构建我的数据库的最佳方式,以便于检查某个用户是否有权访问记录。在我的例子中,这适用于数据库的最佳结构,其中的表格包含只能由特定用户编辑的文档。

我的数据库结构目前看起来像下面这样:

docs
{
doc_id: uuid (primary key)
name: varchar
content: varchar
}
workgroup
{
workgroup_id: uuid (primary key)
name: varchar
}
workgroup_members
{
workgroup_member_id: uuid (primary key)
workgroup_id: uuid
user_id: uuid
}
users
{
user_id: uuid (primary key)
name: varchar
}

对于每个文档,存在两种可能性:

  1. 只有一个用户可以编辑文档(他或她“拥有”该文档)
  2. 可以将文档“分配”给工作组,这样只有该工作组的成员才能编辑该文档。现在,该文档没有一个“所有者”

将此信息嵌入我的表格的最简单但最有效的方法是什么?

我最初的想法是按以下方式构建我的 docs 表:

docs
{
doc_id: uuid (primary key)
name: varchar
content: varchar
workgroup_id: uuid
user_id: uuid
}

但是,workgroup_iduser_id 始终为 NULL。此外,检查具有特定 ID 的用户是否可以编辑文档的查询也不是很简单。列出用户处理的所有文档也变得相当复杂。

我也想到了不改变docs表,而是创建一个doc_access表:

doc_access
{
doc_access_id: uuid (primary key)
doc_id: uuid
user_id: uuid
}

但是,当将文档分配给工作组时,这会产生大量“重复”信息,因为所有工作组成员都需要获得文档的访问权限。此外,每次创建文档后我都需要运行查询,以将此“额外”信息添加到 doc_access 表中。不过,使用此表检查访问权限更容易。

是否有更好/更简单的方法来存储用户、工作组和文档访问之间的这种关系?

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