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

发布于 2022-09-06 11:25:23 字数 309 浏览 28 评论 0

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

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

id keywords result
1 空气+氧气 水

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夏至、离别 2022-09-13 11:25:24

表设计: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)))

输出

[('氮气', '氟气'), ('氮气', '空气'), ('氮气', '氯气'), ('氮气', '氧气'), ('氟气', '空气'), 
 ('氟气', '氯气'), ('氟气', '氧气'), ('空气', '氯气'), ('空气', '氧气'), ('氯气', '氧气')]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文