LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

SQL数据库中的各种类型表

admin
2024年3月15日 15:15 本文热度 493

      作为一名数据分析师,我们在数据库进行数据分析查询的时候,会有挺多不同的表结构,有宽表、窄表、全量表、增量表、快照表、流水表等等,那具体是什么意思,接下来我们逐一进行介绍。

一、宽表与窄表

     宽表,顾名思义,就是字段列比较多的 数据库表,长的有上百列、几百列字段,短的也会至少有几十个字段,它是把不同数据库表、不同维度、属性关联的字段放在统一归到一张大表里面存储,这种类型的表的好处是信息较为全面和完整,这也意味着有提供更多的业务价值,便捷数据分析人员查询,提高查询性能,那宽表既然说的有这么好,那是不是数据库都要去设计成宽表呢?答案是否定的,宽表也会有不好的地方,首先它接入较多维度的数据,会造成数据维度更细,数据列有大量重复数据,占用较多的存储空间。此外如果业务需求稍微有变化,那就需要重新设计另外一张新的宽表,造成宽表的复用度降低且灵活性也就变得较差,后续系统的开发效率也较低。如果只考虑数据仅仅是满足业务目标服务,就缺少了对过程的思考与建设,也就是陷入到比较极端的开发状态中,所以要尽量以最低的开发成本满足多样的业务需求,所以宽表也是把双刃剑

     比如物流仓储的全链路报表,从店铺订单生成、仓库生产波次响应、出库单生成、打单、复核、包装、出库、退货等环节数据。快递全链路报表,从电商平台下单、流转、揽收、交件、转运、分发、签收、退改等操作扫描节点以及对应维度明细数据全部囊括。

      窄表就是单独存储某一类型的字段表,就拿物流仓储报表举例,比如有商品基本信息表,包含商品编码、商品名称、商品的长、高、宽、体积、重量等等,还有仓储SKU表,存储了包括SKU_ID号、商品的类型、商品的款式、商品的颜色等字段,还有出库单表,存储了包括平台订单号,付款时间,出库单类型,店铺名称,店铺编码,出库单号, 运单号, 出库时间, 仓库编码,出库件数,是否预售等等字段。

二、全量表与增量表


     全量表顾名思义就是存储了全部数据的表,但它是记录更新周期内的全量数据,无论数据是否有变化都需要记录。所有全量表有这么些特征,它是存储当前最新状态的全部数据,无论是变化的或没有变化的;其次它是没有分区的,所有数据都存储在一个分区中,每次往全量表里写的数据都会覆盖原来的数据,所以全量表他是不记录历史数据的,只有截止到当前最新的、全量的数据。如下示例,假设001、002用户分别在1.12、1.13号生成了2个订单取消动作,在1.13号新增了003用户生成的新订单和1.13号001用户又重新下了单并完成支付。

User_id
  Create_time
   Order_id
  Status
 Update_time
   001
   2024-01-12
 342876589
   取消
  2024-01-12
   002
   2024-01-13
 457865421
   取消
  2024-01-12


User_id
  Create_time
   Order_id
  Status
 Update_time
   001
   2024-01-12
 342876589
   完成
  2024-01-13
   002
   2024-01-13
 457865421
   取消
  2024-01-12
   003
  2024-01-14 342576891
   完成
 2024-01-13


    增量表就是记录更新周期内的新增数据,即在原表中数据的基础上新增本周期内产生的新数据,没变化的数据不会被记录,它有这么些特征,记录每次增加的量,而不是总量,增量表是每次把新增的数据追加到原表中,存在分区,增量表中每次新增的数据每次单独存储在一个分区中,历史分区中产生的数据记录不发生变化。如下示例,假设用户001在1.12号取消了个订单,然后在1.13号的时候又新增了个订单id, 所以存储在1.13号的分区中,历史的1.12的数据是不发生变化的。

     增量表中的分区时间是T日,实际代表第T日,快照表中时间分区T日,实际代表第T+1日,比如快照表中2.13号分区和2.12号分区实际分别对应2.14号和2.13号,它俩的数据相减就是实际时间2.13号到2.14号之间变化、增减的数据,也就是增量表里面2.13号分区的数据。

  User_id
  Create_time
   Order_id
    Status
 Update_time
     001
   2024-01-12
 342876589
     取消
  2024-01-12


  User_id
  Create_time
   Order_id
    Status
 Update_time
     001
   2024-01-12
 342876589
     取消
  2024-01-12
     002
   2024-01-13
 457865421
     取消
  2024-01-13


三、快照表、流水表和拉链表


      快照表,可以你把想象成一个照相机,比如每年除夕全家人在那个时点拍个全家福,你每年那个时点拍一张,各年时点拍照汇集成的图片成为一个"年度照片集", 如1992年拍了一张,那这一年的快照就是保存了这一张,到了1993年除夕又拍了一张全家福照片,同时这一天又对1992的全家福照片做了图片颜色处理,那就新增了一张照片,那么对应到1993年的快照就有了3张全家福照片。那对应到数据库也是一样,它也是截取过去某个时间的数据,一般是以天为一个时点,每个快照的数据单独存储在一个分区中,比如库存快照表就是这样,每天的0点过后,自动生成包括昨天在内的历史所有店铺对应仓库所待售的库存数据。快照表的典型特征是按照时间分区进行数据存储,并存储过去历史到现在的分区数据

      流水表,它是对于表的每一个修改都会被记录,可以用于反映实际记录的变更,它的典型特征是存储了所有修改记录的表,它与拉链表也有类似,不同的拉链表可以根据拉链粒度存储数据,也就是存储特定维度的数据变化记录,而流水表存储的是每一个修改记录

     拉链表,是一种维护历史状态以及历史最新数据的表,记录从开始到现在的一张表, 它包含过去和现在的记录一般通过增加start_date开始日期、end_date结束日期或vld_tm生效日期、ivld_tm失效日期。比如仓库基础信息表,存储物流仓库的名称、编码、面积、省份、城市、具体地理位置、仓库负责人、开始运营时间、结束运营时间。比如快递里面的机构表,可以储存机构编码、机构上级编码、机构所属省份、机构所属市、机构所属区县、机构类别、主分拨中心、生效时间、失效时间、修改日期等。如下列的仓库基础信息拉链表,苏州吴江仓在2021年1月3日开始运营,在2023年12月31日可能因为搬迁、改造等原因结束运营,之后在2024年1月1日又重新开始运作,则在新增数据库表中添加新记录,那拉链表对历史的记录也会有更新,同时保留历史记录,对应的也新增维护一条记录。

  id
name
prov
city
area
add
emp
start_date
end_date
001

苏州

吴江

江苏
苏州
40000立方
....
张明
2021-01-03
2023-12-31
002

苏州

永鼎

江苏
苏州
45000立方....
海波
2021-01-069999-12-31
003

河北

廊坊

河北
廊坊34000立方....章正
2021-01-039999-12-31
004

苏州

吴江

江苏
苏州
40000立方
....
樊东
2024-01-019999-12-31



四、临时表与切片表

     我们在查询复杂数据需求的时候,编写Sql脚本的时候,需要用到嵌套关联多张表取数,很多表需要建立中间表,也就是临时虚拟表,一般通过With as来建立临时表,建立临时表的这部分查询在同一个程序中只执行一次,并将查询结果存储在用户的临时空间中,可以被多次使用,直到整个程序结束。

withas (select * from com.emp),as (select * from com.dept)select * from a, b where a.depno = b.depno;

      切片表的话是一种数据表结构,他是根据基础表的某一维度进行划分的数据表,主要作用就是对数据进行分组、筛选、切片等操作,跟Excel表数据透视模块的切片表类似,比如根据时间维度创建切片表,汽车销售数据那会根据不同的时间段,如日或周维度进行切分,某电商平台将一天24小时按1小时或更小维度分钟来进行切分,对应行的交易流水数据;还有根据订单来源进行切片,如根据淘宝、拼多多、抖音、快手、得物、唯品会、京东等平台渠道来进行切分。


 五、事实表与维度表

       在数据仓库中,维度表是一类与事实表相关的表格,主要用于对事实表中的数据进行统计、分析和报表生成。在数仓中,维度表用于描述事实表中的各个维度的属性信息。通常使用维度对事实表中的数据进行统计、聚合计算。如订单状态下,维度表主要包括了从支付、发货、交付和评价等多种状态,如仓库操作动作节点下,包括收货入库、核验、上架、拣选、移库、复核、出库等扫描类型,维度表是对具体数字代码的信息描述及状态码。

扫描类型

扫描代码

订单状态

编码

入库

001

未支付

1

核验

002

  已支付

2

上架

003

 待收货

3

拣选

004

 已发货

4

移库

005

 已完成

5

复核

006

 已取消

6

出库

007

 待评价

7



  已评价

8


  SKU类型
    编码
     书单分类
  代码
      服饰
     01
     计算机
    1
       鞋     02
     个人成长
    2
      配件
     03
      文学
    3
      帽子
     04      历史
    4
      背包
     05
     人物传记    5
       ...
       ....
     医学健康
    6


     社会文化
    7


      在事实表是存储与业务对象相关的数据的主表,根据数据的生命周期和特点,数据仓库中的事实表可以分为不同类型,也称周期快照事实表、累积快照事实表,主要用于记录与业务对象相关的事务性数据,如电商平台交易流水、出入库数据等,记录某个时间段内的业务数据度量和状态度量的变化。周期性通常以年、月、周、日等为单位进行统计,与周期快照事实表不同,累积快照事实表没有确定的周期,而是针对一个业务对象完全覆盖一个事实的生命周期进行记录,如快运运单的不同操作时点的数据记录。


该文章在 2024/3/15 15:15:45 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved