Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何组织混乱的数据库_Sql Server_Relational Database_Data Modeling_Data Warehouse - Fatal编程技术网

Sql server 如何组织混乱的数据库

Sql server 如何组织混乱的数据库,sql-server,relational-database,data-modeling,data-warehouse,Sql Server,Relational Database,Data Modeling,Data Warehouse,我知道这个问题没有简单的答案,但是我如何清理一个没有关系、外键、没有太多结构的数据库呢 我是SQL的业余爱好者,我继承了一个完全混乱的数据库。我们没有任何类型的引用完整性,也没有太多关于表如何工作的逻辑 我的数据库是来自构建服务器的仓库的所有数据。 要让您了解我使用的数据类型,请执行以下操作: 来自客户的EDI 服务器项目的原始输出 销售信息 站点信息 零件清单 我一直在优先考虑原始输出和EDI信息,并使用SSR生成包含这些信息的报告。在这么短的时间内,我学到了很多关于SQL Server和

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

我是SQL的业余爱好者,我继承了一个完全混乱的数据库。我们没有任何类型的引用完整性,也没有太多关于表如何工作的逻辑

我的数据库是来自构建服务器的仓库的所有数据。 要让您了解我使用的数据类型,请执行以下操作:

  • 来自客户的EDI
  • 服务器项目的原始输出
  • 销售信息
  • 站点信息
  • 零件清单
我一直在优先考虑原始输出和EDI信息,并使用SSR生成包含这些信息的报告。在这么短的时间内,我学到了很多关于SQL Server和BI Microsoft工具(SSI和SSR)的知识。然而,我仍然是一个业余爱好者,我想建立一个可靠的数据库,流动性好,可以独立运行

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

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

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

更多关于尺寸建模和建模的信息,但我建议直接转到来源:

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

有关开始使用SSI进行ETL的简单教程,请访问

总之,你应该建立一个:

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

  • 我可以给你一个快速提示,告诉你尽量确保每个表都有一个主键,这将使它们有一个索引。索引将有助于确保更快的查询。一个好的阅读,直接从微软,是。我们有一件事是主键!有时不止一个。索引是我计划为一些较大的表实现的功能。@AlanPear,没有强制约束并不一定是致命的-我看到它们由于性能和管理原因而被删除。如果设计本身看起来“一团糟”,我会更深入地研究设计本身是否合理。令人惊讶的是,人们经常会遇到那些连这些领域的基本知识都不了解的人设计的会计和存货管理系统。对于任何突然进行的全面检修,我都会三思而后行,并且要记住,对已经到位的基本结构的任何更改都需要对当前构建在其上的所有内容进行审查和返工。这确实会给人一种平和的心态。谢谢你的评论