用于在UI中呈现的分析数据的数据库结构和体系结构

时间:2012-06-27 21:38:30

标签: .net sql sql-server database

我需要一些建议或保证...

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

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

我正在辩论并且每个人都有自己的表,因为数据有些不同。将所有数据放在一个表中意味着会有很多具有空值的单元格。但是,随着新的分析要求的出现,这意味着要添加更多的表格。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

这称为数据结构的正常化。

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

你希望每个主要逻辑概念都有一个表,然后再将它们逻辑地连接在一起。

如果您想了解更多关于如何分割事物的具体想法 - 然后使用您认为要存储的某些列来编辑您的问题 - 作为起点。

答案 1 :(得分:0)

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

您将拥有彼此相关的列组。例如,与酒店入住率相关的所有列可能是一个组,而另一个组可能是销售。我建议为这些列添加前缀以标识其主题。像占用“occ_”和销售的“sales_”一样。

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

您可能在其他级别拥有其他信息,例如地理位置。这些信息将放在不同的表格中。

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

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

相关问题