00:00
好,那接下来我们进入到熟悉业务数据库的第二步,也就是熟悉每张表的表结构啊,我再啰嗦一句啊,熟悉表结构的时候呢,咱们不要只局限在这个字段上面对吧?啊,这是一个二维表,我们需要熟悉它的行以及它的列,所以行就是明确它的每行数据是什么对吧?啊,列呢,就是看它的每个字段是什么含义,没错吧?啊,好,那现在我们先从第一个表开始啊,咱看个简单的activity in for活动信息表啊,那熟悉的表结构就得看行,看列,对吧?先看行啊,这张表的每行数据应该是什么?是吧,是不就是一个活动对吧?每行数据是一个活动的基本信息,对不对?那这个ID指的是谁?是活动的ID没错吧?啊好,这个咱请搞清楚,那接下来我们再来看列列,也就是他的字段对不对?那这两表字段我们逐个看啊,第一个已经看了,诶活动ID不用多说了,第二一个呢,活动名称这个也不用说,对吧,很简单啊,那下面呢,还有一个活动类型是不是activity type呀,对吧?那这里边有什么类型啊,有什么满减类型,还有什么折扣类型,那什么叫满减?
01:07
比如说满多少减多少,这叫满减活动,对不对?那折扣呢?啊,比如满几件打打八折或者打几折,这是不是叫做折,满减叫做折扣啊,对吧?哎,有不同的活动类型啊,那你想一想啊,不同的活动类型啊,那它的优惠规则是不是应该是不一样的?诶这个大家搞清楚啊好,下来我们继续来看啊,那活动规则没,这张表在下边一张表里,对吧?咱们一会来看啊,我现在看这上面activity t DSC,这是啥活动描述,这个不用多说,对吧?那再往下,哎,两个时间,一个是start,一个是end,开始和结束时间,这个指的是谁的开始和结束时间呀,对,活动的开始和结束时间没错吧?那接下来继续下一个create time。这个指的啥呀?诶,Cur也是一个时间,叫做创建时间,对不对?那这个时间跟上面这个时间它有没有什么关系啊,这个cur到底啥意思啊,这个cur time啊,其实这么一回事啊,给大家简单解释一下,所谓的time呢,其实指的就是这条数据写到这个表的时间,其实说白了就是这个啊,那更具体一点指的是什么呢?大家要知道啊,就是活动信息表,这张表的数据是谁往里边写呀。
02:14
是我们普通用户往里边写吗?那显然不是,对吧?我们普通用户只能做什么?只能做一些这个与下单相关的操作对吧?什么加购五折下单支付对吧?你做了这些操作之后会往什么订单表、支付表里边写数据对吧?但是这个活动啊,包括优惠券啊等等这些咱们是写不了的,对吧?这都是谁写的?是不是咱们每个电商都会有一个后台管理系统对不对?那是不是会有运营人员去操作这个系统,然后在这个系统里边干啥呀?是不是往我们的活动信息表里边去发布活动,或者是发布优惠券等等等,是不是这时候才会往这这种表里写数据啊,对不对?那实际上这个时间呢,指的就是我们往这个表里写这条数据的时间,咱们理解一下就行啊好,那这就是活动信息表,它的表结构有行有列,咱们搞清楚了下一个活动规则activity弱,那同样是看它的行和列,对吧?那这张表的每行数据指代的应该是啥呀?
03:07
这个啥呀,那肯定是一个活动的一条规则呀,对吧?没错吧,那前面提到过一个活动通常会有多个规则,对不对?那在这张表当中就记录了所有活动的所有规则,那它的每行数据就是一个活动里边的,诶,哪去了啊,一个规则啊,这个ID实际上指的是什么ID啊,是活动规则的ID,没错吧?哎,这个咱们要搞清楚啊,OK,那也也就是说,假如说一个活动啊,我们一共有三头规则对不对?那这个活动在这张表里就得有几行数据,是不是有三行数据啊,好行当搞清楚了,接下来看列啊列第一个ID,刚才也说了,这就是活动规则的ID,对吧?那下面这个I的ID呢?是不是活动ID没错吧,咱们得知道这个规则是哪个活动的,对不对,那所以说是不是得有一个activity ID去关联活动信息表啊啊好,接着下一个activity type活动类型,活动类型是不是刚才这张表里就有活动类型了,没错吧。
04:06
那所以说这这个字段实际上在这儿是什么呀?是是冗余字段对不对?没错吧,实际上我在这张表里就能够拿到活动类型,怎么拿,我是不是可以根据activity ID去关联activity in,从而拿到activity type呀,对不对?那所以在这张表里实际上是没必要存在这样一个字段呢,但是为什么咱们设计数据库的时候把这个字段放里边了呢?啊,其实大家得搞清楚啊,就是呃,数据的冗余它有坏处也有好处,数据冗余了之后呢,确实会额外的占用一些存储空间,对不对啊,然后呢,还会对这个数据的一致性带来一定的问题啊,这个怎么理解啊?呃,首先数据冗余相同的数据存多份,肯定会多占用一部分的存储空间,这个好理解对吧?那那冗余之后还有一个更坏的地方啊,什么东西啊,就是它会。干啥?它会破坏数据的一致性啊,怎么怎么个意思呢?你想一想啊,原来我的一条数据只需要存一份,对不对,那我要改,我是不是只改一个地方就行了,那假如说我现在一条相同的信息我存多份,那你要改的话,是不是得保证这每个地方都得改正确了才行,对吧?一旦有一个地方没改正确,那是不是数据就不一致了,对吧?啊所以说诶数据冗余之后呢,会对咱们的数据的一致性带来一定的问题啊,是这样的啊,那这是它的坏处,那一致性有没有好,这个冗余有没有好处呢?有好处冗余之后我就不需要再做什么了,不需要再做关联了。
05:31
对吧,那假如设我这儿没有这个字段,我现在就想拿到这个活动规则,它对应的活动类型,那就得怎么办,是不是得去关联这个表得draw一下对吧?那这样之后是不是性能相对要差一些呀?没错吧,诶,这就是冗余的优缺点啊好,那接下来,呃,咱们继续往下走啊,像这个字段在这是不是就是冗余啊,对吧?啊是这样的,哎,目的就是为了提高查询的这个,呃,这个性能啊好接来往下走,下边看一下这个字段。这啥?满减金额啥意思?
06:02
啊,下边还有一个condition number满减件数,Condition什么意思?肯定是条件的意思,是不是条件的意思没错吧,那这个其实就是满减活动的优惠条件,那这个呢,就是满件打折活动的优惠条件。能理解吧啊,什么叫条件,比如说我满减,我是不是得满多少才减,对不对,满100,那OK,这个所谓的满减金额那就是多少啊,100就是100啊,那满100到底减多少呢?这个在哪存着,在下边,下边是不是还有一个benefit amount呀,对吧,优惠金额,那也就是说实际上这个字段和这个字段它俩是一组对不对,满多少减多少是这个道理吧,那同样道理啊,这个字段肯定number和benefit discount它俩就是是不是也是一组,这就这是啥呀,是不是就是满几件打几折是这个道理吧,那也就是这四个字段都是用来描述活动规则的,没错吧?哎,那大家可能就会思考一下了啊,就得思考一下了,那既然这四个字段都是用来描述活动规则的,那我到底应该以谁为准呢?
07:10
那我到底应该是用它还是用它,那这个以谁为准。啊,应以谁为准,这个得由什么而定啊,是不是得有活动类型而定啊,对吧?如果我的活动类型是什么?是满减对不对?那这时候是不是就以它还有它为准对不对?那如果我的活动类型是满件打折,那是不是就得以它还有它为准,能理解吧?哎,这个咱们大家搞清楚啊好,下来继续往下走,下面还有一个字段是benefit level,是不是就优惠级别这个简单吧啊,因为一个活动可能会有多个优惠规则,那这个优惠的力度从上到下啊,应该是不一样的,对吧?啊,你比如说这个是买100减十。啊,那这个呢是满200减30啊,那然后呢,啊满300,比如说减80,那这相当于这个优惠级别越来越高,对吧?啊好,那这就是活动规则表的表结构,OK,那现在我们已经讲了两张表了啊,那大家现在应该已经知道我们所谓的表结构是什么东西了吧,对吧,就是去看一下它的行,去看一下它的列,能理解吧,那下边我们所有的表啊。
08:16
所有的表都要按照相同的方式去看啊,必须得熟悉啊,但是在这儿咱们由于时间原因啊,我就不带大家逐个去看了啊,那剩下的时间呢,我再挑几个比较重要的带大家一起看一下,那首先我们先看一个订单表,订单表使得整个咱们电商系统当中一个核心对吧,非常重要,所以我们先看一个订单表,来看一下这张表,那这张表的表结构,咱们来看一下表结构是不是还是看行对吧?行应该是啥?它的每行数据是不是就是一个订单,就是一个older对不对,那这样的这个ID指的就是older ID,没错吧?啊OK,那接下来继续看它的列,列就是每个字段的,来咱们一个一个看啊,先看第一个。啊,就是订单ID刚才已经说过了,然后呢,我们再往下看啊,这儿还有什么什么收货人,收件人这个电话啊,什么这个什么呃,总金额等等这些是不是咱们一看注释就能看出来是啥对吧?啊就在这儿呢,我们就不再一个看了,我把这几个比较重要的几个字段来看一下,首先我们先看一下这个订单当中最重要的几个字段,就是金额。
09:16
啊,为什么我说这个金额是比较重要的呢?那你想一想啊,咱们数仓是干什么用的,是不是做数据分析的对不对,那你说你分析分析分析的肯定都是啥,肯定都是这些数字类型的值对不对?比如什么这个订单的金额,什么支付的金额,退单的金额,退单的件数,是不是都是这种东西啊,对吧?那所以说这种数字类型的字,咱们得好好看一下啊,OK,那这里边金额还好几个啊,咱们得一个一个看,这有一个total amount对不对,是不是订单的总金额呀,那下边还有几个金额,咱们一起来看一下。哎,少了,这还有来分别看一下啊,首先我们看诶第一个这一个啥是不是促销金额,没错吧,啊这个促销金额指的是什么呀。
10:00
其实说白了指的就是使用啊,就是参与促销活动优惠的金额。能理解吧,啊,比如说我这个订单原价是100,然后里边呢,有些商品可以参与活动,对不对,那是不是得优惠一部分,比如减20啊,那OK,那这个促销金额也是reduce smart就是多少啊,这就20啊对吧,参与活动优惠金额这个是,然后下一个coupon reduce smart这是啥呀?是不是优惠券优惠金额,使用优惠券优惠的金额啊,这个搞清楚,然后继续往下走,那下一个是啥?下一个呢,是不是原价金额呀,对吧,对吧,Original total amount原价金额,这个应该能搞清楚对不对,那接着往下走,下面还有一个啥。是不是还有一个,呃,这个当然应该拼写有问题啊,应该是啥呀,那是free对吧?啊,Free费这个是啥?是运费啊运费啊,那下面呢,Free费reduce这啥呀,运费减免啊,OK,那这就是与订单相关的几个金额,OK,那现在呢,我们把这几个金额的关系捋一捋啊,那首先咱这里边是不是有一个原价金额,没错吧,那还得加上谁,是不是加上运费对不对,再减去谁。
11:09
是不是再减去活动的优惠金额,再减去优惠券的优惠金额,再减去谁?运费的减免是不是才等于最上面那个所谓的total amount,也就是最终金额呀,没错吧,诶,大家要把这几个金额搞清楚啊,好,这是几这几个金额,那除了这几个金额之外呢,还有几个字段是比较重要的,来我们来看一下。先看这啊,就是这个字段。订单状态older status啊,这个其实咱们之前已经提到了,对吧?这里边存储的是每个订单的最新状态,对不对?能理解吧,这个一定要搞清楚啊,那我们的订单呢,有未支付,有已支付啊,然后呢,有已完成,有什么什么退款中退款完成等等等等,有这样的很多状态啊,那后续我们再去详细的说每一个状态啊,后续再说,那大家大家要知道这个字段里边存储的就是最新状态就行了啊好,接下来与之对应的呢,还有几个时间我们来看一下。
12:03
大家一起看。这里面是不是有什么time创建时间,Op time操作时间呀,还有什么,还有什么失效时间,那这几个时间分别指是什么?来给大家说一下,首先先看cur time cur time比较简单啊,那就是下单时间对不对,对不对,只要下单是不是会在这个表里写出一行数据对吧?那这个cur time就是下单的时间,好接来下一个,下一个是啥是。Oper time操作时间,这个操作时间指的什么呀?给大家解释一下啊,操作时间实际上与order status订单状态是关联的啊,只要订单状态发生变化,那这个操作时间就会变成与最新状态相对应的操作时间啊,能理解吧?啊,比如说我现在有一个订单,我现在是刚下单对吧?刚下单是不是属于未支付的状态对吧?那过了一会儿我现在是不是要支付了对不对?那要支付了之后,那这个状态是不是会变成已支付的状态?那下边的opera time这个操作时间会变成啥?是不是变成支付时间?没错吧?那我到后边呢,我可能会确认收货,那这个状态是不是变成完成的一个状态对吧?那下边这儿呢,是不是就会变成你确认收货的时间?
13:12
没错吧,这个要搞清楚啊,这是opera time它的这个逻辑,好,我们继续往下走,还有一个SPA time,这个是是不是就是失效时间,这个比较简单啊,咱们思考一下,假如我现在啊,这个用户下了一个订单,对不对,你下完单之后是不是可能不去支付啊,对吧,有可能不支付,如果不支付是不是,通常情况下超过一段时间之后,这个订单会被自动取消啊,对吧?啊,那这个spare time指的就是那个自动取消的那个失效时间,这样应该能理解吧,那通常情况下,当然不同平台不一样,有半小时的,有两个小时的,有15分钟的,对不对,不同平台是不一样的,咱们理解一下啊,好了,那这就是咱们提到的这几个时间,OK,那其实我其实我们这个整个订单表当中啊,最重要的字段也就这几个了啊,其余的呢,我们就不再一个一个去看了啊好,那接下来我们再来看一个,再来看一个订单明细表,这个是不是也是与订单相关的表啊,对不对,那接下来咱们明确一下它的表结构,首先明确它的行,这张表的每行数据指代的是啥。
14:13
啥呀?是一个订单里边的一个商品项对不对啊,一行数据是一个订单里边的一个商品项,咱必须得搞清楚啊,好,接下来我们再来看列啊列一个一个看啊,首先第一个ID,那这个ID指的是什么?ID是订单明细O抵QID对吧?好,下一个那older ID呢?是不是就是订单ID,没错,咱们得知道这个订单明细,它是哪个订单的对不对啊,所以有一个外界进行关联,好,接下来继续往下走,那下面呢,就是SKU的ADESKU的name SKU的图片,SKU的价格等等等等,你像啊,这些属于这些都属于什么?是不是都属于商品信息,没错吧,是这个道理吧,那你想一想啊,这些商品信息我是不是可以通过SQID去关联,谁获取关联SKU in for那张表示获取对不对?那所以这些字段在这又是什么呀?是不是又是冗余,是这个道理吧?哎,这个大家要搞清楚啊,好了,OK,那接下来我们继续往下走,那再往下呢,还有一个order price,这是什么呀?是我们下单时的这个SKU的商品的价格,注意啊,这是什么时候是下单时的商品价格,因为这个商品价格它是不是会浮动啊,对吧?啊,这个咱们搞清楚啊,好继续往下进行,下边还有一个s k number。
15:32
啊,Number那这个呢,就是啥,是不是就是购买的件数啊,没错吧,你想啊,一个订单里边我购买一个商品,是不是可能购买一个购可能购买俩呀,对吧,咱们需要把它这个诶number给它记录下来啊好继续往下走,下一个呢是create time。这个cur指的啥?是不是也是相当于是下单时间呀,对吧?啊好,我们继续往下头,那下边呢,还有一个什么source type source ID,这个其实跟我们前面讲的那个日志当中的页面的来源类型是一样的,页面来源类型有啥呀,是不是有什么?呃,搜索商品啊,有什么这个商品推广啊,有智能推荐,是不是有这些来源啊,对吧?在这儿也是一样的道理啊好,那接下来我们往下看,下边也有几个金额,咱们来一起看一下。
16:14
这几个金额有什么呀?有什么分摊的总金额,有什么分摊的活动减免金额,有分摊的优惠减免金额。对不对,这个金额指的是什么,咱们能搞清楚总金额活动减免,哎,什么优惠券减免,但是这里边儿呢,有一个分摊的概念,咱们可能大家不太熟悉,对吧,这个分摊指的是什么呀?为什么叫分摊呀。诶对,你想一想啊,其实是这么一回事,那你想一想啊,就是我们自己去下单的时候,那咱们最终是不是要要付钱对吧?你付钱的时候可能会有一些优惠给你减掉,对不对?那你想啊,你付的这些钱,包括这些优惠,它针对的都是什么,是不是真个都是整个订单,他们针对的是整个订单啊,对吧?也就是说你订单的总金额是多少,整个订单的优惠金额是多少,没错吧?啊,那但是呢,我们现在这张表它叫什么表,它叫的订单明细表对不对,这张表里每行数据指的是一个订单里边的一个商品项对不对?那所以说这些原来针对于整个订单的金额,那咱们要想存到这张表里,就得做一个什么操作。
17:17
是不是就得做一个拆分的操作,没错吧?那比如说我这个总价,那总价我需要拆到每一个商品项里边,这个商品项到底花了多少钱,这个商品花了多少钱,这个商品花了多少钱,对不对?那包括优惠也是一样,比如说整个订单我活动一共优惠了十块钱,对不对?那我具体这个商品优惠了多少,那这个商品优惠了多少,这个商品它又优惠了多少,那咱是不是得做一个拆分呀,对吧?啊,那当然这个拆分的逻辑呢,还是比较复杂的,为什么比较复杂,你想一想啊。首先第一个啊,你这个商品,呃,就是首先第一个就是你这个,呃,订单当中首先不一定所有的商品都会参与活动,没错吧,那所以拆分的时候,是不是首先得保证把谁排除出去,得不参与活动的是不是得排除出去啊对吧?然后剩下的这个呃商品项呢,怎么拆分,那就根据具体的业务逻辑去分了啊,一般情况下就是根据这个啊比例啊,比如说这个商品项我花了五块,这个商品项花了呃,比如说50吧,啊,这个50,这个有50,那一共优惠了十块钱,那是不是按比例他得一人占一半啊对吧,这个五块,这个五块啊就这个意思。
18:20
啊,OK,那当然这个拆分的逻辑呢,不需要我们去做,这是哪儿的,这是哪的工作呀,这是咱们业务系统的工作,对吧?啊,拆分的逻辑咱们不需要做啊好,咱们,但是这个东西咱们了解一下也是可以的啊好了,这就是这个所谓的拆分啊,大家搞清楚啊,行了,那到目前为止,订单明细这张表我们也就讲完了啊,也讲完了啊,那也就是剩下的每一张表呢,大家去看的时候呢,都得这样去看啊,你得明确它的每行数据是什么,然后呢,再来明确一点啊,就是它的这个字段都有哪些。行和列一定分量的两部分去做啊,然后还有一些其他的表啊,其他表呢,在这儿呢,我们就不再呃一个一个去看了,因为这个确实比较浪费时间啊,那我把这个视频先停一下。
我来说两句