Mik*_*ore 7 mysql database database-design
我有一个MySQL表users,包含以下列:
要管理角色系统,以下任何一个选项都会有缺点吗?
选项1:
创建了第一个表roles有三列:role_id(主键),name和description,然后关联users.user_id与roles.role_id在第三表作为外键叫users_roles?
要么...
选项2:
roles使用两列创建第二个表:( user_id外键来自users.user_id)和role(ENUM)?ENUM数据类型列允许将允许的角色的简短列表作为值插入.
我以前从未在MySQL中使用ENUM数据类型,所以我只是好奇,因为选项2意味着少一个表.我希望这是有道理的,这是我第一次尝试在论坛中描述MySQL表.
通常,ENUM在这些情况下不应使用类型.如果您打算在将来添加或删除角色的灵活性,则尤其如此.更改a值的唯一方法ENUM是使用a ALTER TABLE,而在自己的表中定义角色只需要在roles表中使用新行.
此外,使用该roles表允许您添加其他列以更好地定义角色,例如description您在选项1中建议的字段.如果您使用ENUM选项2中的类型,则无法执行此操作.
我个人不会ENUM在这些情况下选择.也许我可以看到它们被用于具有绝对有限的值集的列,例如{Spades, Hearts, Diamonds, Clubs}用于定义卡的套装,但是在诸如所讨论的那种情况下不能用于前面提到的缺点.
| 归档时间: |
|
| 查看次数: |
1002 次 |
| 最近记录: |