【问题标题】:Database structure and architecture for analytical data to present in UI用于在 UI 中呈现的分析数据的数据库结构和体系结构
【发布时间】:2012-06-27 21:38:30
【问题描述】:

我需要一些建议或安慰...

我们正在开发一个基于 Web 的酒店分析应用程序 (ASP.NET)。该页面有不同的部分,显示特定酒店位置的不同图表(总销售额、客房营业额等)在前一天晚上和过去的历史

此数据可以在夜间作业(存储过程)中运行以填充表,因为数据不必是最新的。昨天的数据是不需要实时的。页面中的每个分析部分是否应该让数据来自数据库中由该存储过程填充的特定表(存储过程最初会从它需要的多个表中获取信息)?还是每个分析部分都有自己的表格用于隔离目的更好?例如,关于 Total Sales 的所有数据都应该在一个表中,而营业额信息应该在另一个表中。

由于数据有些不同,我正在辩论并倾向于每个都有自己的表格。将所有数据放在一个表中意味着会有很多带有空值的单元格。但是话又说回来,随着新的分析需求的出现,这意味着要添加更多的表。

有什么想法吗?

【问题讨论】:

    标签: .net sql sql-server database


    【解决方案1】:

    这称为数据结构的标准化。

    您不想要一个包含所有内容的大表(包括一堆空值)

    您确实希望每个主要逻辑概念都有一个表,然后再用更多表将它们在逻辑上链接在一起。

    如果您想要关于如何拆分内容的更具体的想法 - 然后使用您认为要存储的一些列来编辑您的问题 - 作为起点。

    【讨论】:

      【解决方案2】:

      您需要将分析与界面分开。这里的关键是“实体”。同一实体上的度量值应位于同一表中。因此,您应该将有关酒店位置的所有信息放在同一张表中。

      您将拥有一组相互关联的列。例如,与酒店入住率相关的所有列可能是一个组,而另一组可能是销售。我建议为这些列添加前缀以识别它们的主题。类似“occ_”表示占用,“sales_”表示销售。

      我建议对这些进行结构化,以便每个主题都在其自己的存储过程中。如果可能的话,我会使用知名视图来创建要添加到大表中的信息。

      您可能拥有其他级别的其他信息,例如地理信息。此信息将位于不同的表中。

      如果您想要钻取功能,这可能会变得更加复杂。但是,你没有问这个。

      要记住一件重要的事情。当您开始设计应用程序时,您可能在不同的列之间有非常清晰的界限。但是,用户将开始模糊线条并将不同的元素组合在一起。毕竟,这就是分析和数据可视化的力量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-22
        • 2013-09-13
        • 1970-01-01
        • 2010-10-30
        • 1970-01-01
        • 2012-07-10
        • 1970-01-01
        相关资源
        最近更新 更多