我需要将键值对存储在数据库中,其中键是例如一个字符串,value可以是多种类型之一(整数,字符串,浮点数/日期,GUID,BLOB)。数据库是通过OLE DB访问的,所以我想要坚持使用“普通”类型。
它们的键可能涉及“存在”查询,值不涉及查询(即我不会查询“值为17的所有键”)。稍后将添加其他键值对。
我目前看到以下选项:
1。序列化BLOB
序列化键值集(此功能已经可用)并将其存储为单个blob。
我遇到的唯一问题是,在共享数据库时,无法轻松更新单个值。它现在只是一个问题(当只有DB打开时才更新当前的值集),但似乎是对未来访问的限制。
2。密钥BLOB
A Row将包含Key, Type, BLOB
存储原始数据。进行一些丑陋的转换和测试,但稍后可以轻松扩展var类型。我不知道storign BLOB的开销有多糟糕,但是项目数量很少(大约十几个。
第3。每种值类型一列
A Row将由Key, Type, int, double, sting, blob
组成,类型将指示使用哪个列。对我来说看起来很可怕,但最不“辱骂”。
4。每个设置一列
(仅使用一行)。我并没有真正考虑这一点。
想法?评论?其他方法?
答案 0 :(得分:3)
另一种选择是每种类型使用一个表。使用视图可以同时显示所有键。在这里,您可以添加一个列,告诉您值的类型,以便您也可以获取它。
create view KEY_TABLES as
select key, 'INT_TABLE' from INT_TABLE
union
select key, 'STRING_TABLE' from STRING_TABLE
...