【问题标题】:Update part of database on app update在应用程序更新时更新部分数据库
【发布时间】:2011-04-26 20:03:36
【问题描述】:

我正在使用 C++ (Qt) 和 SQLite 开发应用程序。该应用程序安装有预定义的数据库,其中填充了一些记录。用户可以使用自己的记录扩展数据库。我想知道如何实现应用程序的更新,即在安装新版本的应用程序时,我想删除数据库中旧的核心(预定义)记录,并替换为(插入)新记录。出现这些问题:

  • 我是否应该使用 2 个具有相似架构的数据库,一个可供用户修改,另一个是只读的预定义数据库(因此应用更新只是将新的预定义数据库复制到旧数据库上)?
  • 或者我应该在数据库中有一个关于作者(应用程序或用户)的列,并且以某种方式(以及如何?)在更新时删除旧应用程序记录并插入新记录?

有什么想法吗?谢谢

【问题讨论】:

    标签: c++ sql qt sqlite installation


    【解决方案1】:

    还有第三种变体:

    • 保留原始表格以供应用使用。
    • 对于每个表:添加仅包含一列的第二个表。
    • 这些列引用您的“真实”表的 PK。
    • 然后在新表中插入默认记录的键。
    • 更新过程中,只要加入对应表并删除,再插入即可。

    这大大简化了查询(与第一个变体相比),并且您没有大多数记录不需要的额外列(我认为)。

    如果您不想要额外的表格,我会说做第二个变体。第一个会迫使您进行两次查询并UNION 他们。这对我来说听起来不对。

    【讨论】:

      【解决方案2】:

      好问题。我会选择第二个选项,因为我们在这里做了类似的事情。

      另一种可能性是对数据库中的数据进行分类,这样您就可以知道记录是系统的一部分还是来自用户(例如,通过使用关键字或值范围)。尽管此解决方案不需要额外的表或列,但它更难理解和维护,因为它为数据库记录赋予了隐藏的含义。

      【讨论】:

        猜你喜欢
        • 2014-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多