MySQL CREATE VIEW定位变量表名称(列名称)

时间:2019-03-25 21:10:01

标签: mysql variables view interface translators

我想定义很多视图,但是数据库模型正在改变,所以我想到了一些想法/问题:

  1. 在MySQL 8中,有什么方法可以创建视图,而FROM并没有对表名进行硬编码,但是表名是变量?

  2. 是否可以在FROM后面创建带有硬编码表名但列名可变的视图?

  3. 创建一个视图(A)是一个好主意,该视图在FROM之后不针对特定(硬编码)表名,而是另一个视图(B)作为中间转换表,该视图仅从表中选择数据。表(C)并将其返回给视图(A),其中列的别名与第一个视图(A)期望的方式相同。简而言之,第二视图(B)只是充当表名和列名之间(A)<=>(C)之间的翻译器?

我正在考虑这些解决方案的原因是我想为连接到DB的应用程序提供一组表视图。并且它们不应更改,但数据库的整个模型将更改。

我不想触摸作为应用程序界面的访问视图,而是在应用程序界面视图后面定义列和表之间的一些连接。此外,数据库模型还需要其他一些视图来进行通用的计算/报告,但是用于计算/报告的源表数据将随时间而改变(列名,表名)。

  1. 还有其他我可以采用的方法吗?您如何处理在数据库中更改表名,列名而又不破坏已经实施的报表以及期望表和列具有特定名称的其他功能的情况?

我正在使用MySQL 8。

1 个答案:

答案 0 :(得分:-1)

  1. 您当然可以这样做,并且基于视图获得视图并不少见。不管是一个好主意,这都是见仁见智。
  2. 您不能完全保护应用程序免受基础数据模型的更改。如果您在数据模型中引入,删除或更改列/列,则必须在报告/应用程序中反映它们,因为可用内容将发生变化。如果表或列被重命名,则可以通过使用视图将其从应用程序中隐藏。但是,如果重命名不那么重要,以至于您可以在报告/应用程序中反映出来,那么就会引出一个问题,为什么需要重命名该列。

如果您的数据结构变化如此频繁,则基于SQL的产品可能不适合您,因为SQL要求对数据结构进行严格的定义。您可能必须考虑使用NoSql解决方案,该解决方案允许数据库架构具有更大的灵活性。但是,即使使用NoSql解决方案,数据结构的更改也会影响应用程序/报告。