在SQL Server中存储整数值数组

时间:2010-10-27 12:11:09

标签: c# sql sql-server-2005 objectdatasource

我希望在SQL数据库表(SQLServer 2005)中存储一个整数值数组,如果可能的话,使用单个列。

整数数组的长度为7560。

我使用的是objectdatasource,数据类型应该与tableadapter生成的参数兼容。

感谢您的帮助:)。

4 个答案:

答案 0 :(得分:16)

您至少有两个选择:

  • 将其存储为逗号分隔的值列表。
  • 使用单独的表格,每行存储一个值,外键指向表格。

如果要对数据库进行规范化,则应采用第二种方法。

答案 1 :(得分:5)

做得对:1NF规定没有重复值。建议的7560元素数组中的每个元素都属于自己的行。

通过将每个元素放在自己的行中,您可以让RDBMS有机会做其他事情无法做到的事情,例如:计算集合上的统计数据,验证每个元素是否符合域规则,计算两个集合之间的差异, count / select集共享某些特征。

  

我将以数百万行(可能超过5000万行)结束。我不确定数据库是否可以在没有性能问题的情况下处理它。

这并不是特别多,而且大多数时候你不需要处理所有5000万。自己计算搜索二叉树以查找十亿分之一的记录需要多少次访问。答案可能会让你大吃一惊。

答案 2 :(得分:0)

仅在必要时才能使用!您可以轻松创建另一个包含返回表的外键的表和一个int列。

如果您坚持将其作为列保留在SQL Server中,则必须使用IMAGE列类型或VARBINARY(MAX),因为数据长度超过8K。这会将每个int存储为4字节的二进制值。

什么是ObjectDataSource?

答案 3 :(得分:0)

如果数据与任何其他表格不相关(例如,您希望以某种方式处理的值),我会将其存储在逗号分隔值中,如果它们是(例如,帐单中的产品),您应该创建另一个带有外键的表。

Greatings