我的数据库中有一个users
表,并且有三种用户角色——经理(admin)、专家和学生。
我已经尝试将他们的角色作为 role
列存储在 users
表中,但我的问题是最好的存储方式是什么?
例如,我应该使用数字 - 1 代表管理员,2 代表专家,3 代表学生。还是只有一个字符——“A”代表管理员,“E”代表专家,“S”代表学生?或者用于 admin 的完整字符串 'admin' 等等,或者什么?
编辑
伙计们,我想要最有效的方法。你们中的一些人告诉我要有另一张表,但这种关系不是多对多,而是一对多,因为用户只能有一个角色。
最佳答案
您可能想要一个单独的联结表,例如 user_roles
将包含以下列:id
、user_id
和 role_id
。这样每个用户将来都可以拥有多个角色,即使现在他们只有 1 个角色。
role_id
将指向新的 roles
表中的角色,该表可能包含与角色关联的所有数据。
或者,如果您真的不需要联结表,则只需将 role_id
直接放入您的 users
表即可。
查找数据库“规范化”。基本上,如果您有一组将在列中重复的特定数据,您可能希望将其放在自己的表中。
关于mysql - 在数据库中存储一对多列的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26721437/