当前位置: 首页 > news >正文

宽表和窄表

表:通常是指业务主题相关的指标、维度、属性关联在一起的一张数据库表。由于把不同的内容都放在同一张表存储,宽表已经不符合三范式的模型设计规范,随之带来的主要坏处就是数据的大量冗余,与之相对应的好处就是查询性能的提高与便捷。这种宽表的设计广泛应用于数据挖掘模型训练前的数据准备,通过把相关字段放在同一张表中,可以大大提高数据挖掘模型训练过程中迭代计算时的效率问题。
窄表:严格按照数据库设计三范式。尽量减少数据冗余,缺点是修改一个数据可能需要修改多张表。

宽表和窄表的选择?

应用场景:设计销售领域的订单事实表,维度包括:销售员、销售员所属部门、下订单的时间;度量:销售量。

订单事实表:商品销售的清单.

 图一

建立模型:部门表、销售员表、订单表。符合数据库的范式设计:没有冗余字段。

对于一般的OLTP系统而言这样的表设计确实减少了冗余和,增删改查等操作也很方便。

报表场景:我们要统计每个部门各自的销售量为多少?此时写的SQL需要三个表进行关联查询。

我们完全可以根据我们的业务去设计我们的数据表;考虑到部门和销售员可以是同属于销售者这个维度,只是他们是有上下级别关系的那么依照这个思路,我们的模型可以建立为下面这样:

图二

那么统计每个部门各自的销售量,可以用两张表关联查询实现。

对于这个模型而言,有些情况下会出现冗余(填写用户,没有填写部门;填写部门没填写用户);但是对于提取数统计的逻辑相对来说要简单了好多;

综上所述:宽表就是字段比较多的表,包含的维度层次比较多,造成冗余也比较多,毁范式设计,但是利于取数统计;而窄表往往对于OLTP比较合适,符合范式设计原则。


http://www.mrgr.cn/news/53326.html

相关文章:

  • vb操作电子表格 增加工作表 工作表数据合并
  • 【Linux】Anaconda下载安装配置Pytorch安装配置(保姆级)
  • [Python基础](2) 基本数据类型
  • 车辆数据的提取、定位和融合(其三.一 共十二篇)子映射和时间加权
  • vb6 MSHFlexGrid1表格导出数据到电子表格 解决只能导出一次问题
  • VSCode C/C++跳转到定义、自动补全、悬停提示突然失效
  • 字节青训营入营考核部分题解
  • 海康相机
  • 【前端】如何制作一个自己的网页(9)
  • 恋爱脑讲编程:Rust 的生命周期概念
  • 征服ES(ElasticSearch)的慢查询实战
  • 网络空间安全之一个WH的超前沿全栈技术深入学习之路(一:渗透测试行业术语扫盲)作者——LJS
  • 【C++】unordered_set、unordered_map超详细封装过程,处理底层细节
  • 【前端】Matter实战:HTML游戏”命悬一线“
  • 5、JavaScript(五) jquery
  • 牛客习题—线性DP 【mari和shiny】C++
  • 【前端】如何制作一个自己的代码(10)
  • Linux之例行性工作
  • 吴恩达深度学习笔记(8)
  • 2021年10月自考《数据库系统原理》04735试题