mysql - 在数据库中存储一对多列的最佳方法

标签 mysql sql database fieldtype

我的数据库中有一个users 表,并且有三种用户角色——经理(admin)、专家和学生。

我已经尝试将他们的角色作为 role 列存储在 users 表中,但我的问题是最好的存储方式是什么?

例如,我应该使用数字 - 1 代表管理员,2 代表专家,3 代表学生。还是只有一个字符——“A”代表管理员,“E”代表专家,“S”代表学生?或者用于 admin 的完整字符串 'admin' 等等,或者什么?

编辑

伙计们,我想要最有效的方法。你们中的一些人告诉我要有另一张表,但这种关系不是多对多,而是一对多,因为用户只能有一个角色。

最佳答案

您可能想要一个单独的联结表,例如 user_roles 将包含以下列:iduser_idrole_id。这样每个用户将来都可以拥有多个角色,即使现在他们只有 1 个角色。

role_id 将指向新的 roles 表中的角色,该表可能包含与角色关联的所有数据。

或者,如果您真的不需要联结表,则只需将 role_id 直接放入您的 users 表即可。

查找数据库“规范化”。基本上,如果您有一组将在列中重复的特定数据,您可能希望将其放在自己的表中。

关于mysql - 在数据库中存储一对多列的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26721437/

相关文章:

php - 两个表逗号的mysql结果集

php - 无法使用 mysql 点类型查询检索所有点

php - $_POST 值没有通过 jquery ajax 解决?

mysql - SQL FK 约束失败

mysql - 从两个表中选择整行

php - 如何在 CodeIgniter 4 的助手中编写数据库查询

java - SQLite 数据库 ..如果我从表中删除一行,主键的值将受到影响

mysql - 数据库:更新和删除 - 如何处理?

sql - Hive 划分同一列的数字

mysql - 编写 MySQL 查询的新手