欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Redis键-值数据库 nosql 数据建模(3)------ 如何存储主从表数据 一对多关系

程序员文章站 2022-03-20 08:26:08
...

                                                                                        作者:QQ 14588019 WonderfulLife

customers表 (主表)

cust_id     cust_name   mobile       address
3892045     杨帆        13500138000  北京市朝阳区东土城路怡和阳光大厦C座
1027709     田野        13600138000  广东省深圳市南山区高新南七道

orders表 (从表)
ord_id   cust_id   ord_date   state
1035     3892045   2018-04-22 已签收
1039     3892045   2018-04-22 配送中
1065     3892045   2018-04-22 配送中
1033     1027709   2018-04-23 已出库

1044     1027709   2018-02-19 已签收

创建第1条客户信息
cust_id     cust_name   mobile       address
3892045     杨帆        13500138000  北京市朝阳区东土城路怡和阳光大厦C座
			
MULTI
HMSET customer:3892045:hset cust_id  3892045  cust_name "杨帆"  mobile "13500138000"  address "北京市朝阳区东土城路怡和阳光大厦C座"
LPUSH customer:list 3892045          # 队列中保存的客户编号集合用来分页
EXEC
---------------------------------------------------------------------------------------------
创建第1条订单信息
ord_id   cust_id   ord_date   state
1035     3892045   2018-04-22 已签收

MULTI
HMSET order:1035:hset ord_id  1035  cust_id 3892045  ord_date "2018-04-22"  state "已签收"
SADD  customer:3892045:child:set  1035  # 使用集合存储从表主键,即通过主表主键找从表明细
LPUSH order:list 1035          # 队列中保存的订单编号集合用来分页
EXEC

创建第2条订单信息
ord_id   cust_id   ord_date   state
1039     3892045   2018-04-22 配送中

MULTI
HMSET order:1039:hset ord_id  1039  cust_id 3892045  ord_date "2018-04-22"  state "配送中"
SADD  customer:3892045:child:set  1039  # 使用集合存储从表主键,即通过主表主键找从表明细
LPUSH order:list 1039          # 队列中保存的订单编号集合用来分页
EXEC

创建第3条订单信息
ord_id   cust_id   ord_date   state
1065     3892045   2018-04-22 配送中

MULTI
HMSET order:1065:hset ord_id  1065  cust_id 3892045  ord_date "2018-04-22"  state "配送中"
SADD  customer:3892045:child:set  1065  # 使用集合存储从表主键,即通过主表主键找从表明细
LPUSH order:list 1065          # 队列中保存的订单编号集合用来分页
EXEC

===================================================================================================
创建第2条客户信息
cust_id     cust_name   mobile       address
1027709     田野        13600138000  广东省深圳市南山区高新南七道
			
MULTI
HMSET customer:1027709:hset cust_id  1027709  cust_name "田野"  mobile "13600138000"  address "广东省深圳市南山区高新南七道"
LPUSH customer:list 1027709          # 队列中保存的客户编号集合用来分页
EXEC
---------------------------------------------------------------------------------------------
创建第1条订单信息
ord_id   cust_id   ord_date   state
1033     1027709   2018-04-23 已出库

MULTI
HMSET order:1033:hset ord_id  1033  cust_id 1027709  ord_date "2018-04-23"  state "已出库"
SADD  customer:1027709:child:set  1033  # 使用集合存储从表主键,即通过主表主键找从表明细
LPUSH order:list 1033          # 队列中保存的订单编号集合用来分页
EXEC

创建第2条订单信息
ord_id   cust_id   ord_date   state
1044     1027709   2018-02-19 已签收

MULTI
HMSET order:1044:hset ord_id  1044  cust_id 1027709  ord_date "2018-02-19"  state "已签收"
SADD  customer:1027709:child:set  1044  # 使用集合存储从表主键,即通过主表主键找从表明细
LPUSH order:list 1044          # 队列中保存的订单编号集合用来分页
EXEC

****************************************************************************************************

显示客户编号(3892045)的信息
127.0.0.1:6379> HGETALL customer:3892045:hset
127.0.0.1:6379> LLEN customer:list  # 返回记录总数  
127.0.0.1:6379> LRANGE customer:list 0  20  # 这是第1页的20条记录主键  
127.0.0.1:6379> LRANGE customer:list 21 40  # 这是第2页的20条记录主键  
127.0.0.1:6379> LRANGE customer:list 41 60  # 这是第3页的20条记录主键
显示明细主键集合
127.0.0.1:6379> SMEMBERS customer:3892045:child:set
显示明细信息
127.0.0.1:6379> HGETALL order:1035:hset
127.0.0.1:6379> HGETALL order:1039:hset 
127.0.0.1:6379> HGETALL order:1065:hset

Redis键-值数据库 nosql 数据建模(3)------ 如何存储主从表数据 一对多关系Redis键-值数据库 nosql 数据建模(3)------ 如何存储主从表数据 一对多关系

本篇讲解完毕 未经许可,不得商用出版发行!

补充说明 NoSql多对多关系建模 只需在"添加明细时"另外再加一个集合用来把对方的主键存储在“明细中”某个主键包含的集合中即可,跟本篇几乎一模一样,就不另外开篇讲解了!