Join 面向最终用户的表是否应始终采用视图的形式?

Join 面向最终用户的表是否应始终采用视图的形式?,join,database-design,database-schema,amazon-redshift,database-security,Join,Database Design,Database Schema,Amazon Redshift,Database Security,在创建数据仓库时,我习惯于在表的顶部创建视图,以便用户查询这些视图而不是表。无论如何,他们从未被允许访问这些表 现在,对于当前正在讨论的数据仓库,将在多个表之间进行联接,以创建“结束表”或报告。如果我们使用视图的路径,这些连接是否应该在视图级别上完成,或者我们应该用连接来创建另一组表,并在上面建立基本视图? < P>在做出决定时,我会考虑两件事: 性能:如果有连接填充物理表,并且在这些表的顶部只有视图,那么查询(在视图上)会很快,因为没有动态连接发生 可伸缩性和维护:如果您开始为用户需要的每个报

在创建数据仓库时,我习惯于在表的顶部创建视图,以便用户查询这些视图而不是表。无论如何,他们从未被允许访问这些表


现在,对于当前正在讨论的数据仓库,将在多个表之间进行联接,以创建“结束表”或报告。如果我们使用视图的路径,这些连接是否应该在视图级别上完成,或者我们应该用连接来创建另一组表,并在上面建立基本视图?

< P>在做出决定时,我会考虑两件事:

  • 性能:如果有连接填充物理表,并且在这些表的顶部只有视图,那么查询(在视图上)会很快,因为没有动态连接发生
  • 可伸缩性和维护:如果您开始为用户需要的每个报表创建一个包含连接的视图,那么几个月后您将拥有很多视图(有些视图甚至可能在逻辑上相似,但没有人知道要重用哪个视图)。如果您的DWH将有很多报告在其上运行,并且您对每个报告都有一个视图,那么这将很快成为DBA人员的噩梦

  • 嗯,就像数据库管理中的大多数问题一样,没有“一个正确”的答案。但是是的,一般来说,DWH会有很多报告在上面运行。因此,从长远来看,创建视图并不能解决问题

    连接应在视图级别完成。您试图让用户更容易访问数据库,而不仅仅是遵循关于视图的官僚规则。所以听起来您个人倾向于创建单独的联接表?