我目前有一个包含数据元素的树结构;在每一个上,都可以执行基本的 CRUD 操作。从这里开始,我需要为这四个操作中的每一个实现每个用户的权限。因此,可以为给定用户授予创建和读取权限,但没有更新或删除权限。然后,这些权限将向下级联到允许对象的任何子级;因此,该给定用户将对根对象的任何子对象具有 Create 和 Read 权限。
使用 SQL(特别是 MySQL 和 PHP)数据库存储这些权限的最佳方式是什么?目前,我认为理想的解决方案可能是创建另一个数据库表,该表跟踪用户 ID、对象 ID,然后是跟踪每个可能权限的布尔值列表,然后根据权限表检查用户 ID 和对象 ID,然后沿着树向上移动,直到找到许可对象(或未找到,视情况而定)。
我的主要问题是双重的。首先,它不可能授予一个对象的权限,但不能授予它的子对象。其次,它似乎可能会对特别深的物体造成性能影响。那么,什么似乎是解决这个问题的好方法呢?