我知道这个问题没有简单的答案,但是我如何清理没有关系,外键和很多结构的数据库?
我是SQL的业余爱好者,并且我继承了一个完整混乱的数据库。我们没有参考的完整性,而且表的工作方式没有很多逻辑。
我的数据库是来自构建服务器的仓库的所有数据。为了让您了解我正在使用的数据类型:
- 来自客户的EDI
- 服务器项目的原始输出
- 销售信息
- 网站信息
- 零件列表
我一直在优先考虑原始输出和EDI信息,并使用SSRS生成报告。在短时间内,我对SQL Server和BI Microsoft工具(SSIS和SSR(了解了很多。但是,我仍然是业余爱好者,我想构建一个稳固的数据库,可以很好地流动并且可以自己站立。
似乎数据仓库模型是我应该适应的结构类型。我的问题如何将数据库的混乱局面,并在淹没数据之前使某些事情更有条理?
由于您的最终目标似乎是业务报告,并且您正在处理来自"隔离"表的多个来源的数据,我建议您首先将所有这些汇总到数据模型。
就个人而言,我将设计一个尺寸模型来构建和存储所有数据,目的是易于理解(用于报告或ADHOC查询(。该模型应集中在业务实体及其交易上。在维度模型中,业务实体(几乎总是(将是维度,而交易(指标(将是事实。例如,在不知道您的模型的情况下,我猜想直接实体将包括客户,站点,部分和交易包括服务器,SiteVisit,PartPurchase,Partrepair,PartrePair,Partorder等...
有关尺寸建模的更多信息,但我建议直接转到来源:https://www.kimballgroup.com/data-warehouse-business-intelligence-intelligence-intelligence-resources/books/data-warehouse-warehouse-dwarehouse-dw-toolkit/
当您设计模型(并在SQL Server之类的数据库中实现(时,您将通过从其不同的源系统/数据库中提取并将其从当前结构转换为定义的结构来将数据加载到模型中通过模型,即使用MS Integration Services等ETL工具。例如,您的客户数据可能散布在"销售","客户"one_answers"站点"中,因此您想汇总所有数据并将其加载到单个客户尺寸表中。在执行此ETL时,您应该检查数据是否已经提到的问题,将正确的行加载到数据模型中,并将错误的行丢弃到文件/日志中,以后可以检查和更正它们。(解决此问题的多种方法(。
可以在https://technet.microsoft.com/en-us/library/jj720568(v = sql.110(.aspx 上找到,可以在https://technet.microsoft.com/en-us/library/jj720568上找到一个直接开始使用ETL的简单教程。
因此,总而言之,您应该构建一个数据集:
- 设计一个代表业务事实和的维度模型您拥有的数据上下文。这将强烈促进数据理解和报告,因为维度模型与业务用户术语和心理模型非常匹配。
- 使用ETL工具从其当前源中提取数据,处理IT(例如检查数据质量问题,加入来自不同来源的数据(,然后将其加载到维度模型中并检查问题。这将使您接近拥有自动数据集成工作/管道,并带有您认为适合数据的质量检查。