如何组织凌乱的数据库

时间:2018-02-24 18:59:55

标签: sql-server relational-database data-modeling data-warehouse

我知道这个问题没有简单的答案,但是如何清理没有关系,外键而不是很多结构的数据库呢?

我是SQL的业余爱好者,我继承了一个完全混乱的数据库。我们没有任何参照完整性,并且表格的工作原理并不是很多。

我的数据库是来自构建服务器的仓库的所有数据。 为了让您了解我正在使用的数据类型:

  • 来自客户的EDI
  • 服务器项目的原始输出
  • 销售信息
  • 网站信息
  • 零件清单

我一直在优先处理Raw输出和EDI信息,并使用SSRS生成包含该信息的报告。我在短时间内学到了很多关于SQL Server和BI Microsoft工具(SSIS和SSRS)的知识。但是,我仍然是一个业余爱好者,我想建立一个流畅且可独立运行的可靠数据库。

似乎数据仓库模型是我应该适应的结构类型。 我的问题是如何在淹没数据之前把我的数据库弄得乱七八糟,让事情变得更有条理?

1 个答案:

答案 0 :(得分:3)

由于您的最终目标似乎是业务报告,并且您正在处理来自多个来源的数据,这些来自"隔离"表格,我建议你首先将所有内容汇总到数据模型中。

就个人而言,我会设计一个维度模型来构建和存储所有数据,目的是易于理解(用于报告或特殊查询)。该模型应侧重于业务实体及其交易。在维度模型中,业务实体将(几乎总是)是维度,事务(度量)将是事实。例如,在不知道您的模型的情况下,我猜测直接实体将包括客户,网站,零件和交易将包括ServerSale,SiteVisit,PartPurchase,PartRepair,PartOrder等......

有关尺寸建模herehere的更多信息,但我建议直接查看来源:https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/books/data-warehouse-dw-toolkit/

当您的模型被设计(并在SQL Server等数据库中实现)时,您将通过从其不同的源系统/数据库中提取数据并将其从当前结构转换为模型,将数据加载到模型中。由模型定义的结构,即使用像MS Integration Services这样的ETL工具。例如,您的客户数据可能分散在"销售","客户"和" site",因此您希望聚合所有数据并将其加载到单个Customer维度表中。在执行此ETL时,您应检查数据中是否存在已提及的问题,将正确的行加载到数据模型中,并将不正确的行丢弃到文件/日志中,以后可以检查和更正这些行。 (解决这个问题的多种方法)。

可以在https://technet.microsoft.com/en-us/library/jj720568(v=sql.110).aspx找到使用SSIS开始使用ETL的简单教程

因此,总而言之,您应该构建一个data mart

  1. 设计一个代表商业事实和维度的维度模型 您拥有的数据的上下文。这将有力地促进数据理解和报告,因为维度模型与商业用户术语和心智模型紧密匹配。
  2. 使用ETL工具从其当前源提取数据,处理它(例如检查数据质量问题,从不同来源连接数据)并将其加载到维模型中并检查它是否存在问题。这将使您接近拥有自动数据集成作业/管道,其中包含您认为适合数据的质量检查。