我必須在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