存储mysql行的访问权限

时间:2013-01-04 05:56:23

标签: php mysql

我有一个数据结构类型问题,我也不太了解答案。基本上我有四个权限控件(isSecret,canEdit,isActive和hasPage),我需要存储在一个不同的表中。

我有两个解决方案,但我不确定哪个是最佳性能:

  1. 将每个权限存储为每个表上的单独行。对我而言,这似乎是查询时访问数据的最快方式,但由于PHP将在90%的时间内处理权限,因此效率低下。

  2. 拥有一个权限列,其中权限名称(sec,edt,act,has)以逗号分隔的字符串形式存储。这使我在将来可以灵活地引入新的/不同的权限,在我的数据库中看起来很整洁,并且很容易在PHP和mySQL中使用(我可以使用IN查找查询并爆炸字符串并将其作为数组使用PHP)。此列将是40个字符的varchar,允许我存储最多10个不同的权限(3个字母和逗号)

  3. 选项2是我首选的解决方案,直到我意识到IN命令可能是资源密集型的。我认为在我的表中的每一行上使用IN命令尝试查找非活动页面以进行过滤时,可能会受到性能损失。为了解决这个问题,我可以只获取列中的每一行,然后用PHP过滤掉行,但同样,我不确定它会有多么有效。

    理想情况下,我认为在我的解决方案中,子列将是最佳解决方案(主权限列,并且在我的每个权限的这4个子列下),然后可以轻松查询(即。其中permission.canEdit = 1 )

    最终将使用memcache缓存结果(当我能够弄清楚如何使用它时,以及清除它的有效方法),但我不想依赖它。

1 个答案:

答案 0 :(得分:0)

我认为SETs将是您需要的

相关问题