【问题标题】:MySQL CREATE VIEW targeting variable table name (columns names)MySQL CREATE VIEW 目标变量表名(列名)
【发布时间】:2019-08-16 04:54:48
【问题描述】:

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

  1. 在 MySQL 8 中有什么方法可以创建 FROM 后没有硬编码表名但表名是变量的视图?

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

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

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

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

  1. 还有其他方法可以应用吗?在不破坏已经实现的报告和其他需要特定表和列名称的功能的情况下,您如何处理更改数据库中的表名、列名的情况?

我正在使用 MySQL 8。

【问题讨论】:

    标签: mysql variables view interface translators


    【解决方案1】:
    1. 没有
    2. 没有
    3. 您当然可以这样做,而且基于视图的视图并不少见。这是否是一个好主意,这是一个见仁见智的问题。
    4. 您无法完全保护应用程序免受底层数据模型更改的影响。如果您在数据模型中引入、删除或更改列/列,则必须在报告/应用程序中反映它们,因为可用内容会发生变化。如果表或列被重命名,则可以通过使用视图对应用程序隐藏。但是,如果重命名不是那么重要,以至于您会在报告/应用程序中反映这一点,那么这就引出了为什么您需要重命名该列的问题。

    如果您的数据结构变化如此频繁,那么基于 SQL 的产品可能不适合您,因为 SQL 需要对数据结构进行非常严格的定义。您可能不得不考虑使用 NoSql 解决方案,以在数据库模式中提供更大的灵活性。但是,即使您使用 NoSql 解决方案,数据结构更改也会影响应用程序/报告。

    【讨论】:

      猜你喜欢
      • 2016-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      • 1970-01-01
      • 2011-11-21
      相关资源
      最近更新 更多