• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

从零到企业级SSM电商项目实战教程(九)数据表关系设计、索引与时间戳

项目实战 Geekerstar 10个月前 (06-20) 618次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

数据库表关系

 

 

本项目共有八张表,天蓝色的表代表里面有索引的,例如user表的username是个唯一索引。

接下来,按照下单流程介绍一下数据的流向,首先注册,注册之后信息会存到user表里面,登录会读取user表进行验证。

然后搜索产品就用的了分类表,和产品表,我们会传关键字或者分类id。

如果传的分类id是一个级别比较高的id,我们会对分类表进行递归查询,之后查出来符合这个分类和关键字的一个product集合。

然后将这个产品添加进购物车的时候,就会从产品的id拿过来放到购物车表的product_id。

用户登录的id放到user_id,然后购物车中提交订单就来到了订单确认页,订单确认页里面就要填一些收货地址。

然后生成订单,生成订单之后就来到了order和order_item表,order会生成一个订单号,order_item表和product表是一个一对一的关系,order_item和order表是一个多对一的关系。

然后开始对这个订单进行付款,接到支付宝的回调,将信息存到pay_info表里面,然后对回调的状态进行判断,如果支付成功会把order表的payment_time写入。

可以看到我们这个表,外键是没有用的,为什么不用呢?

因为在以后扩展分表的时候有外键会非常的麻烦,在进行清洗数据时也会很麻烦。

唯一索引

唯一索引unique,保证数据唯一性,例如user表中的username

单索引及组合索引

如图中user_id和order_no的组合索引,使我们查询更加快速

时间戳

查业务问题的后悔药,我们所有的表都有create_time:数据创建时间,update_time:数据更新时间,为什么说它是后悔药呢?

有时候在查一些业务问题的时候,如果日志没有打,我们甚至不知道事情是什么时候发生的,如果我们数据库中连时间戳也没有,那更是无从下手了,一旦这个时候会非常后悔,当时如果打个日志就好了,我们就知道这个数据是什么时候变化的,至少在查业务问题的时候有一个时间范围。

为什么用这两个字段呢?因为create_time 我们能知道数据创建时间,而update_time我们能知道数据更新时间,但是我们不可能保存每次更新时间,所有就保留最新一次更新时间。


丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:从零到企业级SSM电商项目实战教程(九)数据表关系设计、索引与时间戳
喜欢 (0)
[247507792@qq.com]
分享 (0)
Geekerstar
关于作者:
本站技术支持

您必须 登录 才能发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00