设计我的 mysql 表的最佳方法是啥?我需要用偏好图代表用户
Posted
技术标签:
【中文标题】设计我的 mysql 表的最佳方法是啥?我需要用偏好图代表用户【英文标题】:What is the best way to design my mysql tables? I need to represent a user with a map of preferences设计我的 mysql 表的最佳方法是什么?我需要用偏好图代表用户 【发布时间】:2019-12-10 11:52:16 【问题描述】:我正在创建一个 Web 应用程序,它允许管理员跟踪用户并修改他们的信息和访问权限。需要表示的关于用户的大部分信息都很简单(姓名、电子邮件、工作 ID 等),但我无法表示用户对我们系统中应用程序的访问权限。
有些应用程序是用户可以访问或不可以访问的。应用程序列表正在增长,因此我不想硬编码对应用程序“x”的访问,因为 xAccess 是一个布尔值。我目前有一个地图,其中字符串是应用程序的名称,布尔值是用户的访问权限。
我不知道如何在 mysql 表中表示它。我应该如何存储这些数据?这是跟踪这些数据的最佳方式吗?我愿意接受任何想法。
我正在创建一个 Web 应用程序,并且我硬编码了一个带有数据的 typescript 类,这样我就可以在前端工作而不必担心保存数据。我目前有这个打字稿类:
export class UserModel
userId: number;
windowsId: string;
fullName: string;
role: number;
roleName: string;
appAccess: Map<string, boolean>;
appAccess 是我目前尝试表示这些数据,但我不知道将它存储在 MySQL 表中的好方法。
【问题讨论】:
对于基于角色的权限来说,这似乎是一个很好的用例。在最基本的情况下,您将拥有具有角色的用户,并且这些角色将具有权限(例如,访问应用程序)。所以你会有一个用户表、角色表和一个权限表;然后是 user_role 表和 role_permission 表来维护这三个对象之间的映射。 Kind of like this answer outlines 【参考方案1】:您可能需要三个表:
用户:user_id、user_name、user_status
应用程序:app_id、app_name
user_applications:ua_id、user_id、app_id
因此,如果用户有权访问应用程序,那么 user_applications 表中需要有一条记录,其中包含用户的 user_id 和相关应用程序的 app_id。
【讨论】:
以上是关于设计我的 mysql 表的最佳方法是啥?我需要用偏好图代表用户的主要内容,如果未能解决你的问题,请参考以下文章
阻止人们破解基于 PHP 的 Flash 游戏高分表的最佳方法是啥