php - MYSQL数据库设计序列化与否

标签 php mysql serialization

我们有一个在 php 和 mysql 上运行的现有应用程序。我们正在添加细粒度的用户授权,以便某些用户只能访问某些资源。有几千名用户和大约 100 种资源(尽管两者都有望增长)。

我的数据库设计是这样的:

用户: 身份证,姓名,电子邮件

资源: id, 资源

选项 1 因此,如果我们考虑到典型的数据库规范化来处理这个问题,我们也会得到下表。我想我们会遵循用户被拒绝权限的结构,除非 user_resources 表中有记录。如果他们对特定资源的权限随后被删除,那么我们只需从 user_resources 表中删除该行。

*用户资源:* user_id, resources_id

选项 2 另一种选择是忘记 user_resources 表,只在用户表中创建一个新列(称为权限或类似列),并将该用户权限的序列化值存储在用户表中。每次我们需要检查用户的权限时,我们都必须反序列化该值。

哪种方法被认为是更好的做法,这两种方法是否有任何主要的优点或缺点?

最佳答案

选项 1 是可行的方法,除非您有充分的理由反对它。向用户表添加一列对于基于角色的权限来说很好。如果您的权限基于角色但允许分配不同的权限,则可以混合使用这两个选项 - 然后仅在表中写入异常(exception)情况。

关于php - MYSQL数据库设计序列化与否,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6774327/

相关文章:

php - mPDF 中的自定义字体不会加载

mysql - 迁移数据库到当前版本的MySQL,一个表中有一个保留字

java - 多维数组转字符串(适用于android的SQLite)

javascript - 将对象从子页面传递到父页面

php - 数据库检查后模态不显示

php - LEFT JOIN 中的 COUNT 返回重复值

php - MySQL - 一行与插入的当前行之间的时间差

php - MySQL 从文本内容中返回精确的单词匹配

java - 使用 Jackson 将对象序列化为 XML

php - Laravel 集合 - 扁平化不起作用