2011-04-26 62 views
2

我正在開發一個使用C++(Qt)和SQLite的應用程序。該應用程序安裝了預定義的數據庫,並填充了一些記錄用戶可以用自己的記錄擴展數據庫。我想知道如何實現應用程序的更新,即當安裝新版本的應用程序時,我想刪除數據庫中舊的核心(預定義)記錄,並替換(插入)新的應用程序。這些問題就出來了:更新應用更新數據庫的一部分

  • 我應該使用2個數據庫具有相似的架構,一個修改用戶和第二隻讀一個預先定義(這樣的應用程序更新將只是複製了舊的新的預定義的數據庫)?在更新
  • 或者我應該在數據庫作者簡介(應用程序或用戶)一列,並以某種方式(如何?)刪除舊的應用程序記錄,並插入新的?

任何想法?由於

回答

2

還有第三個變種:

  • 保持你原來的表,因爲你需要他們的應用程序。
  • 對於每個表格:添加僅包含一列的第二個表格。
  • 這些列引用您的「真實」表的PK。
  • 然後在新表格中插入默認記錄的鍵。
  • 更新期間,只需加入相應的表並刪除,然後再次插入。

這大大簡化了查詢(與第一個變體相比),而且您沒有額外的列,您不需要大部分記錄(我認爲)。

如果你不想額外的表,我說做第二個變體。第一個將迫使你做兩次你的查詢和UNION他們。這聽起來並不正確。

0

好問題。我會去第二個選項,因爲我們在這裏做了類似的事情。

另一種可能性是在數據庫中的數據進行分類,所以你可以知道,如果記錄是系統的一部分,或者是來自用戶(通過使用關鍵字或值的範圍,例如)。雖然這個解決方案不需要額外的表或列,但它很難理解和維護,因爲它給數據庫記錄帶來了隱含的含義。