我必须在SQLite数据库中节省很多(超过50 000行)document - key - value
。 我的担心是:这些值可以是文本或数字(有日期,字符串,数字等)。 我必须请求我的基地2种方式:SQLite ERD(投与vs联盟的成本)
- 文档的所有值####
- 或比较操作
我想到了2个可能的解决方案:
解决方案1:
单表:
key(text) | type(one of text/date/float) | value(text)
,并使用显式类型转换时,我需要比较(例如,
SELECT * FROM mytable WHERE (CAST(value as float) < "2010-01-01 00:00:00") AND (type='date')
或
SELECT * FROM mytable WHERE (CAST(value as float) < 17.5) AND (type='float')
我喜欢这个解决方案:
- 很容易得到所有值为
我不会在这个解决方案喜欢:
- 我要赚很多(可能)昂贵的铸造
解决方案2:
三个表:
- 文本值:
key(text) | value(text)
- 浮点值:
key(text) | value(float)
个 - 日期值:
key(text) | value(datetime)
我在这个解决方案喜欢什么:
- 没有更多蒙上
我不会在这个解决方案喜欢什么:
- 让所有的值有3个选择的成本和工会
- 我觉得这不太优雅
问题
所以来你推荐到该解决方案的问题我?为什么?你有另外一个解决方案来建议吗?
' “17.5”'应该不会有行情,只是读作17.5'。而基于“日期”的示例应该投射到DATETIME,而不是FLOAT。 – MatBailie 2011-05-06 13:56:35
请原谅我的无知。什么是MCD? – Tim 2011-05-06 14:28:39
对不起,使用了法语的缩写:MCD代表“modèleconceptuel dedonnées”,ERM(实体关系模型)的法语名称 – CircleCode 2011-05-06 14:40:12