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

                                                                                        作者: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

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

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

猜你喜欢

转载自blog.csdn.net/zhengzizhi/article/details/80035069