【问题标题】:How to Organize a Messy Database如何组织一个凌乱的数据库
【发布时间】:2018-08-04 14:41:10
【问题描述】:

我知道这个问题没有简单的答案,但是如何清理没有关系、外键且没有大量结构的数据库?

我是 SQL 的业余爱好者,而且我继承了一个完全混乱的数据库。我们没有参照完整性,也没有很多关于表如何工作的逻辑。

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

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

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

似乎数据仓库模型是我应该适应的结构类型。 我的问题是如何在我淹没在数据中之前让数据库变得混乱并更有条理?

【问题讨论】:

  • 我可以给你一个快速提示,告诉你尽量确保每个表都有一个主键,这将使它们有一个索引。索引将有助于确保更快的查询。直接来自 MS 的好书是 this article
  • 我们拥有的一件事就是主键!有时不止一个。我计划为我们的一些较大的表实施索引。
  • @AlanPear,没有强制约束并不一定是致命的——我已经看到它们出于性能和管理原因而被删除。如果设计本身看起来很“混乱”,我会更深入地研究设计本身是否合理。令人惊讶的是,经常会遇到由对这些领域一无所知的人设计的会计和库存系统。我会三思而后行进行任何突然的全面大修,并记住,对已经存在的基本结构的任何更改都需要对当前构建在其之上的所有内容进行审查和返工。
  • 这确实让人安心。谢谢你的评论

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


【解决方案1】:

由于您的最终目标似乎是业务报告,并且您正在处理由“孤立”表组成的多个来源的数据,我建议您首先将所有这些数据汇总到一个数据模型中。

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

更多关于维度建模herehere的信息,但我建议直接上源码:https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/books/data-warehouse-dw-toolkit/

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

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

所以,总而言之,你应该建立一个data mart

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

【讨论】:

    猜你喜欢
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-28
    • 2011-09-02
    • 1970-01-01
    • 2016-06-07
    • 2021-10-30
    相关资源
    最近更新 更多