在单列中存储可变数据量的充分好方法

时间:2010-11-01 18:42:28

标签: sql-server data-structures

我需要找到一种相对健壮的方法,将变量类型数据存储在数据库表的单个列中。数据可以表示单个值或多个值,并且可以是长字符列表中的任何一个(太长而不容易枚举)。我想知道在这个过程中哪些方法可能有效。我玩弄了添加某种形式的分隔符的想法,但我担心任何简单的分隔符或组合都可能在数据中自然出现。我还想避免使用XML或片段,因为事实上数据可能是XML。可以说我可以对XML进行编码,但这看起来仍然很脆弱。

我意识到这自然是一个意见问题,但我缺乏让它成为社区的魔力。

编辑澄清:

问题的背景:列将保存数据,然后用于根据另一列进行评估。从功能上讲,它是决策引擎的测试标准。其他列包含评估的性质和要测试的值的来源。数据不需要是可搜索的。

3 个答案:

答案 0 :(得分:2)

数据是否需要搜索?如果没有,请将其打到varbinary(MAX)并有一个字段以帮助反序列化。

顺便提一下;使用正确的XML API,在XML节点中存储XML应该没有问题。

但我的猜测是必须有一个更好的方法来做到这一点......似乎......呃!

答案 1 :(得分:1)

JSON格式,虽然我同意djacobson,但你的问题就是要求用茶匙看到2x4两半的最佳方式。

编辑:数据存储在JSON字符串中的顺序无关紧要;每个数据都存储为键值对。

答案 2 :(得分:0)

没有“好”的方法来做到这一点。 SQL中存在数据类型是有原因的。

我能想到的唯一可以想到的方法就是让你的列成为一个查找列,它引用另一个表中的GUID或ID,它本身有另外的列,指示哪个表和行包含你的数据。 / p>