order和product是都有重复的大型表格,互相是多对多的关系即订单一可以包含多个产品,一个产品可以被多个订单包含,现在想用一个类似矩阵的形式储存这两个列表间的关系以便于查询
应该用什么数据结构算法更快
如果有细说思路,代码更好了
可以用python的pandas的dataframe结构去处理,不管你的数据是在sql中,还是在excel,json,csv,tsv等等不同的地方,或者说实在程序运行过程中产生的,没有额外存储的别的地方。pandas这个库都能把你的数据变成一个二维的类似表的结构(dataframe),有行索引和列索引,类似这样:
简单代码示例:
import pandas as pd
# 初始化dataframe赋值
df_a = pd.DataFrame([{'a_id': '1', 'a_name': '苹果'},
{'a_id': '2', 'a_name': '西瓜'}]
)
df_b = pd.DataFrame([{'b_id': '1', 'a_value': 15, 'a_id': '1'},
{'b_id': '2', 'a_value': 20, 'a_id': '2'},
{'b_id': '3', 'a_value': 8, 'a_id': '3'}]
)
df_c = pd.DataFrame([{'a_id': '3', 'a_name': '香蕉'},
{'a_id': '4', 'a_name': '雪梨'}]
)
# 进行合并(类似sql的union,表头一样的,上下合并成一张表)
df_a_c = pd.concat([df_a, df_c])
# 进行关联,类似sql的left join,right join,inner join
df_left_join = pd.merge(df_a_c, df_b, left_on='a_id', right_on='a_id', how='left')
运行结果:
用SQL建立三个表:order, product, order_product,其中order表主键是order_number,product表主键是product_id,order_product表则是order和product多对多的关系表,以order_number和product_id作为外键。查询时可以把三张表连接起来查。