sqlite 在数据库中创建一个与表具有相同信息的表视图的意义是什么?

1bqhqjot  于 11个月前  发布在  SQLite
关注(0)|答案(1)|浏览(116)

我对sql和数据库知之甚少,但我必须在创建db文件的代码库中工作。
db文件包含一个名为DailyCosts的表,在代码中我看到它使用以下sql命令创建了一个视图:

create view DC as select * from DailyCosts

创建一个引用整个表的视图究竟有什么意义呢?根据我对视图的理解,它通常用于简化对表的访问,例如,创建表的子集的视图,然后查询该视图而不是整个表。在这种情况下,似乎毫无意义?
另外,如果有必要,可以使用python中的sqlite3完成此操作。

avwztpqn

avwztpqn1#

事实上,我们不应该编写一个直接访问表的应用程序,而是系统地通过视图,像Franck埃德加Codd(关系DBMS的创建者)或Chris Date(关系理论家)这样的理论家称之为“外部数据模型”。
一些解释:
https://www.programsbuzz.com/article/internal-and-external-data-models
https://www.umsl.edu/~sauterv/analysis/Fall2010Papers/Gao/
如果您不使用这样的模型,那么对表结构的最轻微修改都将需要相当大的努力来修改应用程序中与此表相关的所有查询。实际上,重新编码是如此复杂和昂贵,以至于我们经常放弃重组,而只是简单地添加新列或新表,同时认为旧的不再使用。但从DBA的Angular 来看,这是有成本的,特别是在备份、资源或维护方面。
现在,如果您添加由视图、触发器和过程组成的外部模型,并且禁止应用程序直接访问表,则可以轻松地重新构造表,而不会对应用程序产生任何影响。你所要做的就是重新定义视图,应用程序继续工作。
开发人员只是忘记了或者我们忘记了告诉他们,在任何情况下,视图都可以直接或间接地通过INSTEAD触发器OF.
这是Franck埃德加Codd在他的RDBMS 12条规则“规则6:视图更新规则:“https://en.wikipedia.org/wiki/Codd%27s_12_rules

相关问题