【问题标题】:Common table references, Int or String identifier?通用表引用,Int 或 String 标识符?
【发布时间】:2013-09-03 01:07:48
【问题描述】:

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

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

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

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

现在,有一个用户对每个表具有不同的权限。例如:user 123 将有权在 db_A 上写帖子,有权仅阅读 db_B 上的帖子,以及读、写权限并删除 db_C 上的帖子。

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

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

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

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

你会推荐什么?您会为权限使用其他结构吗?

感谢您的时间和回答!

【问题讨论】:

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


    【解决方案1】:

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

    您应该有一个 table_permissions 表,包含 3 列:user_IDtable_IDpermission_ID

    【讨论】:

    • 非常感谢!我认为这也是更好的解决方案!
    【解决方案2】:

    如果你想保持性能,索引/引用应该总是整数类型

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-06
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      相关资源
      最近更新 更多