【问题标题】:How to plan for schema changes in an SQLite database?如何计划 SQLite 数据库中的模式更改?
【发布时间】:2011-02-14 03:47:59
【问题描述】:
我目前正在开发一个将数据存储在SQLite 数据库中的应用程序。数据库将有更多的读访问而不是写访问(事实上,它会被数据填充一次,然后几乎只发生读取)。因此,读取性能更为重要。我目前正在开发的架构很可能在未来发生变化,并添加额外的列和表。一般来说,我对数据库没有太多经验。我的问题是,特别是在 SQLite 中,更改架构时是否需要考虑任何陷阱?是否有任何模式或最佳实践可以为此类情况提前计划?
【问题讨论】:
标签:
sqlite
database-design
schema
【解决方案1】:
以下是一些建议:
- 不要使用
select * from ...,因为*的含义会随着架构的变化而变化;明确命名您的查询使用的列
- 在数据库中保留模式版本号,并在应用程序中保留代码以从模式版本 N 转换为版本 N+1;然后应用程序中的所有代码都可以使用最新的架构版本;这可能意味着使用默认值来填充添加的列
- 您可以避免复制表以使用支持
ALTER TABLE ADD COLUMN... 的 SQLite 版本 3.1.3 或更高版本进行模式更新
【解决方案2】:
研究数据集市和星型模式设计。对于您的情况,这可能有点矫枉过正,但至少它会阻止您随意设计。