Redis键-值数据库 nosql 数据建模(3)------ 如何存储主从表数据 一对多关系
程序员文章站
2022-03-20 08:26:08
...
作者:QQ 14588019 WonderfulLife
customers表 (主表)
cust_id cust_name mobile address3892045 杨帆 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多对多关系建模 只需在"添加明细时"另外再加一个集合用来把对方的主键存储在“明细中”某个主键包含的集合中即可,跟本篇几乎一模一样,就不另外开篇讲解了!
上一篇: 人脸识别经典开源项目