Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何计划SQLite数据库中的架构更改?_Sqlite_Database Design_Schema - Fatal编程技术网

如何计划SQLite数据库中的架构更改?

如何计划SQLite数据库中的架构更改?,sqlite,database-design,schema,Sqlite,Database Design,Schema,我目前正在开发一个将数据存储在数据库中的应用程序。数据库将具有比写访问多得多的读访问权限(事实上,它将填充一次数据,然后几乎只进行读取)。因此,读取性能非常重要。我目前正在开发的模式将来很可能会发生变化,添加了更多的列和表。一般来说,我对数据库没有太多经验。我的问题是,特别是在SQLite中,在更改模式时是否需要考虑任何陷阱?对于这种情况,是否有任何模式或最佳实践可以提前计划?查看数据集市和星型模式设计。对于您的情况来说,这可能有些过分,但至少会阻止您随意设计。以下是一些建议: 不要使用sele

我目前正在开发一个将数据存储在数据库中的应用程序。数据库将具有比写访问多得多的读访问权限(事实上,它将填充一次数据,然后几乎只进行读取)。因此,读取性能非常重要。我目前正在开发的模式将来很可能会发生变化,添加了更多的列和表。一般来说,我对数据库没有太多经验。我的问题是,特别是在SQLite中,在更改模式时是否需要考虑任何陷阱?对于这种情况,是否有任何模式或最佳实践可以提前计划?

查看数据集市和星型模式设计。对于您的情况来说,这可能有些过分,但至少会阻止您随意设计。

以下是一些建议:

  • 不要使用
    select*from…
    ,因为
    *
    的含义会随着模式的变化而变化;显式命名查询使用的列
  • 在数据库中保留模式版本号,并在应用程序中保留代码,以便从模式版本N转换为版本N+1;然后应用程序中的所有代码都使用最新的模式版本;这可能意味着使用默认值来填充添加的列
  • 使用SQLite版本3.1.3或更高版本(支持
    altertableaddcolumn…