我出于好奇而问这个问题。基本上,我的问题是,当您拥有一个需要行条目才能具有像标志作用的事物的数据库时,最佳实践是什么?一个很好的例子就是堆栈溢出的标志,或者是bugzilla中的操作系统字段。可以为给定条目设置标志的任何子集。
通常,我会进行c和c ++的工作,因此我的直觉反应是将无符号整数字段用作一组可以翻转的位…但是我知道,由于多种原因,这不是一个好的解决方案。其中最明显的是可伸缩性,我可以拥有多少个标志将有一个严格的上限。
我还可以想到其他几个解决方案,它们可以更好地扩展,但会出现性能问题,因为它们需要多次选择才能获得所有信息。
那么,执行此操作的“正确”方法是什么?
如果您确实确实需要从一组封闭的标志(例如stackoverflow徽章)中进行无限制的选择,那么“关系方式”将是创建一个标志表和一个单独的表,这些表将这些标志与您的目标实体相关联。因此,用户,标志和usersToFlags。
但是,如果空间效率是一个非常重要的问题,而查询能力却不是,则无符号掩码几乎同样适用。