公用表引用,Int或String标识符?

时间:2013-08-30 10:23:00

标签: php mysql database database-design user-permissions

我想知道如何采取最好的方法来解决这种情况。这是一个数据库结构问题......让我们看看案例。

我有一些具有相同结构的数据库(比方说db_A,db_B,db_C)。当然,它们的结构相同但数据不同。

还有另一个拥有权限的数据库(db_permissions),另一个拥有用户(db_users)。

db_permissions结构表将是 ID,权限;其中权限是唯一的字符串标识符(如 post:create )。

现在,有一个用户对每个表具有不同的权限。例如:用户123 有权在 db_A 中写一篇文章,只读权 db_B 的权利,以及读,写的权利并删除 db_C 上的帖子。

我的问题是,我应该如何引用每个表的权限?

  • 引用唯一字符串标识符(如post:create,post:read)并将其直接添加到每个数据库权限(例如 user_id - permission_string )?

  • 或者我是否通过权限数据库上的ID主键引用它们(例如 user_id - permission_id )?

在我的PHP脚本中,当我检查权限时,我会检查唯一的字符串标识符。

你会推荐什么?你会使用另一种结构来获得权限吗?

感谢您的时间和答案!

2 个答案:

答案 0 :(得分:3)

如果您有一个{ID}}表将ID映射到权限字符串,那么您应该在存储用户权限的其他表中使用这些ID。

您应该有一个permissions表,其中有3列:table_permissionsuser_IDtable_ID

答案 1 :(得分:0)

如果要保持性能

,索引/引用应始终为整数类型