在数据库字段中存储数字数组

THX*_*138 20 database sql-server data-storage datastore

上下文:SQL Server 2008,C#

我有一个整数数组(0-10个元素).数据不会经常更改,但会经常检索.

我可以创建一个单独的表来存储数字,但由于某种原因,感觉这不是最佳的.

问题1:我应该将我的阵列存储在一个单独的表中吗?请说明这种或那种方式的原因.

问题2 :(无论Q#1的答案是什么),在数据库领域存储int []的"最佳"方法是什么?XML?JSON?CSV?

编辑: 一些背景:存储的数字只是一些不参与任何关系的系数,并且总是用作数组(即永远不会检索或隔离使用某个值).

gbn*_*gbn 40

单独的表,规范化

不是XML或json,而是单独的行中的单独数字

无论你怎么想,这都是最好的方式.您可以稍后感谢我

  • 为"你以后可以感谢我"+1.那"后来"的时间将到来 (19认同)
  • 您好,我来自遥远的未来(2014年).我在这里要感谢你. (6认同)
  • @gbn,我很好奇为什么你认为这是最好的选择,而不是其他选择.你能扩大答案吗?谢谢! (4认同)
  • 对于许多应用程序来说,这是非常糟糕的解决方案。 (2认同)
  • @MartinHansen这个答案来自编辑之前,我们发现数组被视为一个块。如果数组不需要数据库解析或工作,那么从数据库角度来看,它不是一个“数字序列”,而是一个简单的对象,可以存储为 test 或 CSV 或 JSON 等。在许多情况下,当有人要求解析该数组以进行搜索或导出等时,这会反过来困扰您。关于这个主题有很多问题。这就是为什么像我这样的数据库类型会推荐分离的方法..以及为什么这有 x3 赞成票作为可接受的答案... (2认同)

Tho*_*mas 12

在数据库中存储数据的"最佳"方式是最有利于将对其执行的操作以及使维护最容易的操作的方式.这是后来的要求,它应该引导您使用规范化的解决方案,这意味着将整数存储在具有关系的表中.除了更容易更新之外,下一个开发人员更容易理解信息的存储方式和方式.


Dee*_*101 5

将其存储为JSON数组,但要知道所有访问现在都将用于整个数组 - 没有单独的读/写特定系数.

在我们的例子中,我们将它们存储为json数组.与您的情况一样,单个数组编号之间没有任何关系 - 数组只作为一个单元有意义,作为一个单元,它与表中的其他列有关系.顺便说一句,其他一切都被规范化了.我把它比作这样:如果你要存储一个10字节的块,你将它保存在一个包含在VARBINARY(10)的单列中.您不会将其分成10个字节,将每个存储在VARBINARY(1)的列中,然后使用外键将它们拼接在一起.我的意思是你可以 - 但这没有任何意义.

作为开发人员,你需要了解这个int数组的"单片"是什么.