在sql中,存储几个有序向量/列表的最佳方法是什么?

时间:2015-09-08 13:50:54

标签: c# sql list sql-server-2012

我有一些不同长度的整数列表,我想保留它的顺序。 我将使用它们作为彼此的替代,而不是同时使用它们。 列表的数量可能会在未来增长,但我预计它永远不会达到50左右这样的值。我可能想在此列表中插入一个值。这些列表相对很少被修改,并且使用像MS SQL Server Management Studio这样的手动编辑器就可以了。对于我目前看到的内容,这些列表很少用于直接进行查询,中间会有一些C#。

为了存储一个有序列表,链接(或双链接)列表似乎是合适的。但是,如果我必须存储几个有序列表,在我看来,我将不得不为每个列表添加一个表。如果我使用索引列表,则相同。另一方面,我还可以将所有这些列表存储在一个表中,将它们转换为字符串(每个列表一个字符串),并以逗号分隔,然后我将在我的C#程序中进行解析。

在sql中,在sql中存储几个有序向量/列表的最佳方法是什么?

2 个答案:

答案 0 :(得分:8)

像SQL Server这样的关系数据库通常没有“数组”或“列表” - 如果您需要存储多个值 - 它们具有。并且没有 - 对于像SQL Server这样的数据库而言,繁琐甚至数千的表 - 如果你真的必须......毕竟 - 处理表是关系数据库的核心能力 ......应该擅长它! (和SQL Server一样 - 以及许多其他成熟的RDBMS系统也是如此)。

强烈建议 不要使用以逗号分隔的字符串 - 这些首先违反了第一种正常形式的数据库设计,并且只要你< em>确实需要将这些值与其他东西联系起来 - 你遇到了麻烦。不要这样做 - 完全没有必要这样做,你将在未来的某个时候让你的开发人员生活悲惨 - 如果你有机会避免它 - 不要这样做!

答案 1 :(得分:2)

有这种吗?

ListId   ItemOrder ItemValue
1        1         10
1        4         7
1        2         5
2        1         55
1        7         23
2        4         15

Select ItemValue FROM [Table] WHERE ListId = 1 Order By ItemOrder

此处每个列表都有一个ID(您可以在此处使用聚簇索引),订单由字段ItemOrder提供