给出一个数组,搜索其中的任意2个字段,这样的mysql数据库应该怎么设计呢?

比如说我有一个数组:['空气', '氧气', ‘氮气’, '氯气', '氟气']。现在我想要根据数据库里保存的数据,比如数据库有条记录:空气 + 氧气 = 水。搜索数据库并列出这个数组里所有气体之间能发生的化学反应。那么数据库应该只返回有1条结果:空气 + 氧气 = 水

我现在打算这么新建一个表:

id keywords result
1 空气+氧气 水

请问这样要搜索['空气', '氧气', ‘氮气’, '氯气', '氟气']里所有2个气体的组合,这个表这么设计好么?还有其它好的设计么?最后这个查询怎么写比较好呢?

阅读 2.3k
1 个回答

表设计:comb(id, key1, key2, result)
索引:unique(key1, key2)

插入数据:要先排序,取两两组合
查询:对查询条件排序,保证一致性,如输入是氧气、氮气,排序查询为氮气、氧气。
查询:

select result from comb where key1='氮气' and key2='氧气'

插入数据构造python示例:

from itertools import combinations as comb
s = ['空气', '氧气', '氮气', '氯气', '氟气']
print(list(comb(sorted(s), 2)))

输出

[('氮气', '氟气'), ('氮气', '空气'), ('氮气', '氯气'), ('氮气', '氧气'), ('氟气', '空气'), 
 ('氟气', '氯气'), ('氟气', '氧气'), ('空气', '氯气'), ('空气', '氧气'), ('氯气', '氧气')]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题