我有一个用户表,其中1列存储用户的“角色”.
我们可以为特定用户分配多个角色.
然后我想在“角色”列中存储角色ID.
但是,如何将多个值存储到单个列中以便以易于使用的方式保存内存?例如,使用逗号分隔字段存储并不容易并且使用内存.
有任何想法吗?
最佳答案如果用户可以拥有多个角色,那么拥有存储此信息的user_role表可能会更好.它被规范化,并且查询起来会容易得多.像这样的表:
user_ID | role--------+----------------- 1 | admin 2 | User 2 | admin 3 | User 3 | Author
将允许您查询具有特定角色的所有用户,例如SELECT user_ID,user.name FROM user_role JOIN user WHERE role =’admin’,而不必使用字符串解析从列中获取详细信息.
除此之外,这将更快,因为您可以正确地索引列,并且比任何将多个值放入单个列的解决方案所占用的空间略大 – 这与关系数据库的设计是相对立的.
不应该存储它的原因是它效率低,因为DCoder在comment to this answer上声明.要检查用户是否有角色,需要扫描用户表的每一行,然后是“角色”必须使用字符串匹配扫描列 – 无论此 *** 作如何公开,RMDBS都需要执行字符串 *** 作来解析内容.这些是非常昂贵的 *** 作,并没有完善的数据库设计.
如果您需要一个专栏,我强烈建议您不再遇到技术问题,而是人员管理问题.将其他表添加到正在开发的现有数据库中应该不难.如果这不是您有权做的事情,请向合适的人解释为什么需要额外的表 – 因为munging将多个值组合到一个列中是个坏主意. 总结
以上是内存溢出为你收集整理的mysql – 如何在使用较少内存的单列中存储多个值?全部内容,希望文章能够帮你解决mysql – 如何在使用较少内存的单列中存储多个值?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)