当前位置: 首页 > 知识库问答 >
问题:

在数据库中保存数组或生成不同的列

潘宪
2023-03-14

我正在创建一个项目,我将让某人从20个类别中最多选择3个类别。因为它总是最多有3个类别,所以在数据库中再创建3列(category\u 1、category\u 2、category\u 3)对我来说并不算多。

我想象在插入的时候,不是保存在3个不同的列中,而是将数组保存到一个“categories”列中。

我的问题是,在获得信息的那一刻。如果我这样做了,比如说搜索每个有一个特定类别的记录,那么什么会更快?让它查看1列,即数组(我想象是用一个LIKE或类似的东西),还是查看3列?

我希望我的问题很清楚。谢谢

共有1个答案

李招
2023-03-14

不要在数据库列中存储逗号分隔的列表(“数组”)。使用交叉引用表。

(如果要强制执行“不超过3个类别”在数据库中,您可以向交叉引用表中添加一列附加的类别编号。理想情况下,您可以使用检查约束将该列限制为值1、2和3,但MySQL不支持检查约束;相反,您可以将“类别号”列设为另一个表的外键,该表有三行。)

 类似资料:
  • 问题内容: 我想保存额外的信息,然后再将总订单发送到Paypal。对于每一项,我都在MySQL数据库中创建了一个要存储的列。现在,我正在考虑将其保存为一个数组,以后可以在创建PHP页面时阅读。多余的字段取自输入表单字段。 通过使用数组,可以确保不混淆信息吗? 问题答案: 您可以使用/ 存储数组。使用该解决方案,它们不能轻易地从其他编程语言中使用,因此您可以考虑使用/ 代替(它为您提供了广泛支持的格

  • 前面一个章节中我们讲了关于SQLiteOpenHelper的创建,但是我们需要在必要的时候有方法去保存我们的数据到数据库,或者从我们的数据库中查询数据。另外一个叫ForecastDb类就会做这件事。

  • 但是首先,我们要去为数据库创建model类。你还记得我们之前所见的map委托的方式?我们要把这些属性直接映射到数据库中,反过来也一样。 我们先来看下CityForecast类: class CityForecast(val map: MutableMap<String, Any?>, val dailyForecast: List<DayFor

  • 我有问题保存我的数组列表。当应用程序销毁或更改意图或更改方向时,我想保存我的数组列表: 首先,我尝试保存在文件中,但Paint类不是可序列化类。第二,我尝试使用onSaveInstanceState(Bundle outState)/onRestoreInstanceState(Bundle savedInstanceState),但我无法保存Arraylist;第三,我尝试使用数据库,但没有任何

  • 我有一个关于在数据库中存储数据的问题。 我正在应用程序中的一些屏幕上工作:登录屏幕(用户可以访问你的帐户),注册屏幕(用户可以创建一个新帐户),用户提供信息的屏幕(比如“母亲的名字和身高”),以及配置文件屏幕(显示用户提供的信息)。 我在登录屏幕和注册屏幕中没有问题,但是我不知道如何在Firebase数据库中保存用户提供的信息,在用户提供信息的屏幕中。 你们谁能帮我一下吗?我知道我可以使用fire

  • 问题内容: 我有一个模型对象,我想要一个带有日期的字段。目前,我正在使用适合我们需求的产品。 Hibernate将该字段以形式存储在数据库中。我们可以将其在数据库中的保存方式更改为更易读的格式,更重要的是将其更改为可排序的格式吗? 使用的数据库是mysql db。 问题答案: 这个问题已经解决了作为一种新的改进来 ,原来这是一个孤立的捆绑模块 现在,它直接捆绑,所以只要确保你使用的是最新的版本,它