如何在一列中存储数组或多个值

2024-05-10

运行 Postgres 7.4(是的,我们正在升级)

我需要将 1 到 100 个选定项目存储到数据库的一个字段中。 98% 的情况下,只会输入 1 个项目,而 2% 的情况下(如果是这样的话)会输入多个项目。

这些项目只不过是文本描述,(截至目前)长度不超过 30 个字符。它们是用户选择的静态值。

想知道用于存储所需数据的最佳列数据类型。我在想 BLOB 但不知道这是否有点过头了。也许是 JSON?

我也确实想到了 ENUM,但到目前为止我还不能真正做到这一点,因为我们正在运行 Postgres 7.4

我还希望能够轻松识别输入的项目,这样就不需要映射或引用表。


您在这里有几个问题,所以我将分别解决它们:

我需要在数据库的一个字段中存储多个选定的项目

我的一般规则是:不要。这几乎是一件事requires带有外键的第二个表(或第三个表)。当然,现在看起来可能更容易,但是如果用例出现在您需要实际单独查询这些项目的地方怎么办?这还意味着您有更多的延迟实例化选项,并且跨多个框架/语言拥有更一致的体验。此外,您不太可能遇到连接超时问题(30,000 个字符已经很多了)。

您提到您正在考虑使用 ENUM。这些值是固定的吗?你提前认识他们吗?如果是这样,这将是我的结构:

基表(你现在拥有的):

| id primary_key sequence
| -- other columns here.

物品表:

| id primary_key sequence
| descript VARCHAR(30) UNIQUE

地图表:

| base_id  bigint
| items_id bigint

映射表将具有外键,因此 base_id 映射到基表,而 items_id 将映射到项目表。

如果您想要一种简单的方法从数据库中检索它,那么创建一个执行连接的视图。您甚至可以创建插入和更新规则,这样您实际上只处理一张表。

我应该使用什么格式存储数据?

如果您必须做这样的事情,为什么不直接使用字符描述的字符串呢?与 CSV、XML 或 JSON 相比,它需要的处理能力更少,而且更短。

我应该使用什么列类型来存储数据?

就我个人而言,我会使用TEXT。听起来你不会通过将此作为一个BLOB, and TEXT根据我的经验,如果您使用某种形式的 IDE,则更容易阅读。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在一列中存储数组或多个值 的相关文章

随机推荐

  • 天蓝色逻辑应用程序,视觉工作室,从门户打开现有逻辑应用程序?

    您可以从 Visual Studio 2015 中的 azure 门户导入或打开现有逻辑应用吗 我不想全部重新创建 我查看了 azure 门户中的代码视图 看起来我可以将其复制到 Visual Studio 但这会引发各种错误 一定有办法吗
  • SyntaxError:无法在动态导入 Nextjs 的模块外部使用 import 语句

    我遵循了SunEditor的文档 它是这样的 import React from react import dynamic from next dynamic import suneditor dist css suneditor min
  • 将参数传递给 __enter__

    刚刚学习 with 语句尤其是这篇文章 http effbot org zone python with statement htm 问题是 我可以传递一个参数给 enter 我有这样的代码 class clippy runner def
  • AJAX Rails 验证

    我的表单和验证可以很好地处理常规的 http 请求 我希望它使用 AJAX 我知道我可以在客户端进行验证 但这似乎是多余的 因为我已经在模型中定义了验证 当用户填写表单时 我想就他们的条目向他们提供反馈 在 AJAX 表单中使用 Rails
  • linq 与 case 条件连接

    您好 我知道如何在使用 linq 时执行选择 case 条件吗 注释掉的代码是我的问题 我如何将条件放在那里 我的代码 var r from u in Users join p in Payments on u Id equals p Us
  • 在 php 中回显 JSON 数据

    我正在尝试回显一些 JSON 数据 问题是数据包含变量 但我的代码没有将变量放入字符串中 这是我的代码 status row Status priority row Priority echo status status priority
  • 防止 Bootstrap IE 下拉列表在滚动条单击时关闭

    在 IE 中 单击下拉菜单滚动条时 下拉菜单将关闭 当您使用鼠标滚轮滚动它时 效果很好 这是代码层链接 https www codeply com go Uh8qadr3q2 https www codeply com go Uh8qadr
  • 从 Apache 运行 python 脚本的最简单方法

    我花了很长时间试图弄清楚这一点 我基本上正在尝试开发一个网站 当用户单击特定按钮时 我必须在其中执行 python 脚本 在研究了 Stack Overflow 和 Google 之后 我需要配置 Apache 以便能够运行 CGI 脚本
  • 负载测试vaadin 7.0.4返回错误No UIProvider

    我想对 5000 个用户的 vaadin 应用程序进行负载测试 我找到了这个https vaadin com wiki wiki Main JMeter 20Testing https vaadin com wiki wiki Main J
  • 如何解决 服务器错误?

    我在 Visual Studio 中制作了一个 ASP NET 应用程序 当它准备好后 我做了 发布网站 我将创建的文件夹放在我的网站上 当我访问网站上的应用程序时 出现以下错误 应用程序中的服务器错误 配置错误 描述 处理服务此请求所需的
  • Matlab Solve():未给出所有解决方案

    我试图找到两条曲线的交点 syms x y g x 20 exp x 30 3 5 1 sol x sol y solve x 22 3097 2 y 16 2497 2 25 y g x x y Real true 它只提供一种解决方案
  • 如何使用 Selenium Webdriver .NET 绑定设置 Chrome 首选项?

    这是我正在使用的 用户代理可以成功设置 而下载首选项则不能 Windows 7 Chrome 26 Selenium dotnet 2 31 2 chromedriver win 26 0 1383 0 ChromeOptions chro
  • Keras 中的损失函数和度量有什么区别? [复制]

    这个问题在这里已经有答案了 我不清楚 Keras 中损失函数和指标之间的区别 该文档对我没有帮助 损失函数用于优化您的模型 这是优化器将最小化的函数 指标用于判断模型的性能 这仅供您查看 与优化过程无关
  • dplyr 总结小计

    Excel 中数据透视表的一大优点是它们会自动提供小计 首先 我想知道 dplyr 中是否已经创建了任何可以实现此目的的东西 如果没有 实现它的最简单方法是什么 在下面的示例中 我按气缸和化油器的数量显示了平均排量 对于每组气缸 4 6 8
  • 用 Java 创建迷宫求解算法

    我被分配了用 Java 创建迷宫求解器的任务 这是任务 Write an application that finds a path through a maze The maze should be read from a file A
  • 使用资源字符串的 DisplayFormat 数据注释

    我想使用 DisplayFormat 数据注释来格式化模型数据 但我想使用资源文件中存储的格式字符串 我已经能够将资源类型和名称传递给某些数据注释 例如指定错误消息时 如何告诉 DisplayFormat 从我的资源文件之一获取格式字符串
  • MS-Access 查询中的语法错误(缺少运算符)

    以下查询给了我 missing operator 语法错误 所需的输出是表中数据的组合 dbo tbl 和意见 vw 我用过的所有钥匙都存在 有任何想法吗 SELECT dbo tbl BOD fpartno AS PartNumber d
  • 将 mat3 转换为 mat4 的最简单方法

    我提取了 mat4 的左上角 3x3 旋转矩阵 glm mat4 model glm mat3 rot glm mat3 model 现在我想要单位矩阵 左上角是我的新 mat3 最简单的方法是什么 glm mat4 result resu
  • 如何在r中进行左连接[重复]

    这个问题在这里已经有答案了 我有两个数据集一和二 数据集一 a b c 111 a 1 112 b 2 113 c 3 114 d 4 115 e 5 数据集二 e d g 222 ss 11 111 ff 22 113 ww 33 114
  • 如何在一列中存储数组或多个值

    运行 Postgres 7 4 是的 我们正在升级 我需要将 1 到 100 个选定项目存储到数据库的一个字段中 98 的情况下 只会输入 1 个项目 而 2 的情况下 如果是这样的话 会输入多个项目 这些项目只不过是文本描述 截至目前 长