繁体   English   中英

在mysql数据库中,哪种保存权限的方法更有效?

[英]which way of saving permissions is more efficient in a mysql database?

我想同时保存单个用户和用户组的权限。 在我的mysql数据库中,我有一个权限表,其中存储了权限名称和权限ID。 我有一个用户表,其中存储了用户名,密码等,其中还包含一个ID,并且我有一个组表,其中存储了组名和组ID。

现在最有效的选择是什么? 要制作2个表,一个表包含用户权限,另一个表包含组权限,因此如下所示:

int group id | int permission id

int user id | int permission id

还是最好有一个这样的桌子?

int id | int permission id | enum('user','group')

我建议使用两个表。

首先,您可以通过检查第一个表中的组权限以及是否没有组权限来搜索用户权限来减少查找时间。

其次,其他程序员将更容易理解。

我怀疑您的两种方法之间会有很大的性能差异。 但是,与所有性能和优化问题一样,感觉和猜测并不重要,只有概要分析的结果才重要。 哪种效率更高取决于您的数据,数据库,访问模式以及上下文中的“效率”是什么(空间,时间,开发人员的工作量或最终的货币成本?)。

也就是说,使用两个表是一个更好的结构,因为它使您可以将组权限表中的外键放回组表,将用户权限表中的外键放回用户表。 即使在一个表中速度更快,我还是要两个:数据完整性比浪费几个µs的处理器时间更重要,但快速访问不可靠或损坏的数据并没有多大意义。

第一种方法看起来更节省时间,第二种方法看起来更节省空间。 为了获得唯一索引的速度,在第二种情况下,您必须在第一和第三字段上建立索引。


再仔细考虑一下,用第二种方法做的任何潜在收益都不值得,IMO。 可能有第三种方法,但是在您发布的两种方法中,第一种方法更优越。 简单,干净,快速。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM