2011-11-26 23 views
1

我的應用程序正在處理用戶請求。每個請求具有以下狀態:「從用戶接收到的請求的某些部分」,「接收到的所有部分」,「開始處理」,「結果已準備好」,「結果發送給用戶」。 我想將請求狀態作爲單個列存儲在數據庫中。現在我有兩個想法如何實現它:如何在數據庫中存儲狀態

  1. 使用字符串列。每個請求狀態都以文本形式存儲。對於 實例,發送給用戶的請求將具有 值「已發送」。

    • (+),即使不熟悉我的代碼可以理解在尋找DB後做什麼用的要求發生了技術員
    • ( - )存放我使用多個字節的請求狀態,thougn其實這個信息可以存儲在一個字節中(見第2頁)
  2. 使用整數列。每個請求狀態都存儲爲int。例如,「從用戶接收的請求的某些部分」= 1,「接收的所有部分」= 2,「開始處理」= 3,「結果準備就緒」= 4,「結果發送給用戶」= 5。

    • (+)當你查看數據庫時,你無法理解發生了什麼。需要編寫一個將整數轉換爲文本表示的代碼。當你突然決定,「結果準備就緒」和「結果發送給用戶」之間應該是「用戶同意獲得結果」的狀態,你必須接受「用戶同意得到結果」的狀態將是6,而不是「結果準備就緒」(4)和「結果發送給用戶」(5)之間,這對我來說似乎有些不合邏輯。
    • ( - )使用盡可能少的空間儘可能

我看到有在當一個字節是足夠使用多於一個字節沒有意義。我甚至同意寫轉換代碼(文本狀態 - >整數狀態,反之亦然)。但是我應該如何處理突然的中間狀態?有不同的方法嗎?

回答

1

將數據存儲爲整數不一定要隱藏您的信息,您可以創建一個查找表,將整數常量與其文本值相關聯,然後在查看數據的文本表示時加入它們。另一方面,除非您計劃存儲數百萬行,或者每秒處理數千個事務,否則狀態表中額外的幾個字節可能沒有太大區別。

當你說「突然的中間狀態」時,我不確定你的問題的後半部分是什麼意思。您是否擔心之後需要添加更多狀態,或者您是否正在討論將模型從一個狀態轉換到下一個狀態作爲有限狀態機中的狀態?

+0

我的問題的後半部分是 - 我很擔心,如果我發明更多狀態,它們將是數據庫中的最後一個,而不是它們的位置。真的,這只是我對訂單的熱愛,沒什麼嚴肅的。 – Graf

+0

我明白了。 ;-) – Bill

相關問題