gpt4 book ai didi

mysql - 树结构中用户的 CRUD 权限

转载 作者:行者123 更新时间:2023-11-29 03:04:55 25 4
gpt4 key购买 nike

我目前有一个包含数据元素的树结构;在其中每一个上,都可以执行基本的 CRUD 操作。从这里开始,我需要为这四个操作中的每一个实现每个用户的权限。因此,可以为给定用户授予创建和读取权限,但没有更新或删除权限。然后,这些权限将沿着树级联到允许对象的任何子对象;因此,该给定用户将拥有根对象的任何子对象的创建和读取权限。

使用 SQL(特别是 MySQL 和 PHP)数据库存储这些权限的最佳方式是什么?目前我认为理想的解决方案可能是创建另一个数据库表来跟踪用户 ID、对象 ID,然后是一个 bool 值列表来跟踪每个可能的权限,然后根据权限表检查用户 ID 和对象 ID,然后沿着树向上移动,直到找到(或未找到,视情况而定)权限对象。

我的主要问题是双重的。首先,它不可能授予一个对象的权限,而不是它的子对象。其次,它似乎可能会对特别深的物体造成性能影响。那么,解决这个问题的好方法是什么?

最佳答案

递归数据结构通常很难“映射”到 SQL 查询。一些数据库对它有特殊的支持(例如 Oracle),但是 MySQL has no built-in support (= 你可以解决这个问题,但它很笨拙)。

我们的应用程序中需要类似的东西。我们的解决方案是将规范化数据(即“用户 X 在节点 Z 上具有 Y 权限”-> 具有 FK 关系的三列)存储在一个简单的表中。

一个 DAO/manager 对象读取这个表并构建一个缓存,它可以在我们需要的时候快速查找权限。

总而言之:保持数据库简单,并在您的应用程序中编写特殊的辅助代码,将数据库转换为您需要的结构。

关于mysql - 树结构中用户的 CRUD 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17277941/

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