在SQL Server中存储整数值数组

spo*_*kes 7 c# sql objectdatasource sql-server-2005

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

整数数组的长度为7560.

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

谢谢你的帮助:)

Mar*_*ers 16

您至少有两个选择:

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

如果要标准化数据库,则应采用第二种方法.

  • @OP,我推荐选项二. (4认同)
  • @spoekes:我认为你需要考虑你的用例来决定哪种解决方案最适合你.您是否总是需要一次获取并修改整个列表?然后使用单个细胞可能没问题.您有时会对只更改一个元素或检查元素是否在列表中感兴趣吗?然后规范化很可能会给你更好的表现. (2认同)

Jam*_*den 5

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

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

我将以数百万行(可能超过5000万行)结束.我不确定数据库是否可以处理没有性能问题.

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