我知道这个问题没有简单的答案,但是如何清理没有关系,外键,而不是很多结构的数据库?
我是SQL的业余爱好者,我继承了一个完全混乱的数据库。我们没有任何参照完整性,并且表格的工作原理并不是很多。
我的数据库是来自构建服务器的仓库的所有数据。为了让您了解我正在使用的数据类型:
我一直在优先考虑Raw输出和EDI信息,并使用SSRS生成包含该信息的报告。我在短时间内学到了很多关于SQL Server和BI Microsoft工具(SSIS和SSRS)的知识。但是,我仍然是一个业余爱好者,我想建立一个流畅的数据库并且可以独立存在。
似乎数据仓库模型是我应该适应的结构类型。我的问题是如何在淹没数据之前把我的数据库弄得乱七八糟,让事情变得更有条理?
由于您的最终目标似乎是业务报告,并且您正在处理来自“隔离”表组成的多个来源的数据,因此我建议您首先将所有内容汇总到数据模型中。
就个人而言,我会设计一个维度模型来构建和存储所有数据,目的是易于理解(用于报告或特殊查询)。该模型应侧重于业务实体及其交易。在维度模型中,业务实体将(几乎总是)是维度,事务(度量)将是事实。例如,在不知道您的模型的情况下,我猜测直接实体将包括客户,网站,零件和交易将包括ServerSale,SiteVisit,PartPurchase,PartRepair,PartOrder等...
关于尺寸建模here和here的更多信息,但我建议直接来源:https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/books/data-warehouse-dw-toolkit/
当您的模型被设计(并在SQL Server等数据库中实现)时,您将通过从不同的源系统/数据库中提取数据并将其从当前结构转换为模型定义的结构,将数据加载到模型中。 ,即使用像MS Integration Services这样的ETL工具。例如,您的客户数据可能分散在“销售”,“客户”和“网站”中,因此您希望聚合所有数据并将其加载到单个客户维度表中。在执行此ETL时,您应检查数据中是否存在已提及的问题,将正确的行加载到数据模型中,并将不正确的行丢弃到文件/日志中,以后可以检查和更正这些行。 (解决这个问题的多种方法)。
可以在https://technet.microsoft.com/en-us/library/jj720568(v=sql.110).aspx找到一个简单的教程,开始使用SSIS进行ETL
所以,总结一下,你应该建立一个data mart: