首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用数百个布尔值处理SQL中的用户行

使用数百个布尔值处理SQL中的用户行
EN

Stack Overflow用户
提问于 2014-10-15 16:29:33
回答 1查看 64关注 0票数 1

我正在做一个关于收藏数字的爱好者,我想要建立一个清单,可以帮助我的用户跟踪他们做的和没有的。根据我目前的设计,基本上每个数字都有一个布尔值--1表示“for it”,而0表示“it”。目前大约有250个数字需要解释,所以我会有那么多列,每个列都有一个布尔值,然后在将来,随着更多的数字被引入,我会选择更多的列。然而,我的直觉告诉我,有几百列是糟糕的形式。

作为清理事物的一种方法,我想把整个事情转换成一个长的十六进制字符串(每个字符有4位布尔值,或者整个列表的当前长度大约是75个字符),然后根据需要对其进行编码/解码。虽然这肯定会使我的行更短,但它会阻止我做一些事情,比如搜索数据库中有X雕像的用户,以防这是我最终想要做的事情。

考虑到所有这些,我有几个问题:

  1. 有那么多这样的布尔人会不会成为罪大恶极?考虑到列基本上包含最小的数据类型,性能影响会非常显著吗?
  2. 在我还没有想到的数据库中,还有更好的方法来保存这么长的布尔人列表吗?
  3. 如果我想,而不是布尔人,有一个数字可以代表几个不同的州(例如,“拥有”、“不拥有”和“想要”),让检查表具有更多的功能,这将如何影响我处理这个问题的方式?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-15 17:02:45

1.栏数

考虑到现代数据库系统,拥有您所提到的列的数量和类型可能不会给您带来太大的麻烦。正如大卫所指出的,this question可能会在这方面提供一些见解。但是,处理代码中的所有这些列将使其难以维护。

2.另一种方式

与使用单个表不同,您可以将数据拆分到三个表中。一个表列出了数字,另一个表列出了用户,第三个表列出了库存条目。

图表:

代码语言:javascript
复制
id | figure_name

用户表:

代码语言:javascript
复制
id | user_name

盘存表:

代码语言:javascript
复制
id | user_id | figure_id | state

您可以告诉mysql使用FOREIGN KEY链接表,并使用JOIN查询组合结果。

这种结构的好处是,您有更多的灵活性。以下是几个例子:

  • 很容易只查询某个图形
  • 添加有关用户和数字的其他信息
  • 节省在库存中获取数字的时间

3.新增国家

使用上述一节中描述的方法,您可以轻松地修改state表的inventory列。您可以使用一个BOOL,而不是一个ENUM,甚至是VARCHAR。但是,在后一种情况下,您可以添加另一个表states,它将id映射为state_name

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26387525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档