在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)/ 給出一個(gè)數(shù)組,搜索其中的任意2個(gè)字段,這樣的mysql數(shù)據(jù)庫(kù)應(yīng)該怎么設(shè)計(jì)呢?

給出一個(gè)數(shù)組,搜索其中的任意2個(gè)字段,這樣的mysql數(shù)據(jù)庫(kù)應(yīng)該怎么設(shè)計(jì)呢?

比如說(shuō)我有一個(gè)數(shù)組:['空氣', '氧氣', ‘氮?dú)狻? '氯氣', '氟氣']?,F(xiàn)在我想要根據(jù)數(shù)據(jù)庫(kù)里保存的數(shù)據(jù),比如數(shù)據(jù)庫(kù)有條記錄:空氣 + 氧氣 = 水。搜索數(shù)據(jù)庫(kù)并列出這個(gè)數(shù)組里所有氣體之間能發(fā)生的化學(xué)反應(yīng)。那么數(shù)據(jù)庫(kù)應(yīng)該只返回有1條結(jié)果:空氣 + 氧氣 = 水

我現(xiàn)在打算這么新建一個(gè)表:

id keywords result
1 空氣+氧氣 水

請(qǐng)問(wèn)這樣要搜索['空氣', '氧氣', ‘氮?dú)狻? '氯氣', '氟氣']里所有2個(gè)氣體的組合,這個(gè)表這么設(shè)計(jì)好么?還有其它好的設(shè)計(jì)么?最后這個(gè)查詢?cè)趺磳懕容^好呢?

回答
編輯回答
吢丕

表設(shè)計(jì):comb(id, key1, key2, result)
索引:unique(key1, key2)

插入數(shù)據(jù):要先排序,取兩兩組合
查詢:對(duì)查詢條件排序,保證一致性,如輸入是氧氣、氮?dú)?,排序查詢?yōu)榈獨(dú)?、氧氣?br>查詢:

select result from comb where key1='氮?dú)? and key2='氧氣'

插入數(shù)據(jù)構(gòu)造python示例:

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

輸出

[('氮?dú)?, '氟氣'), ('氮?dú)?, '空氣'), ('氮?dú)?, '氯氣'), ('氮?dú)?, '氧氣'), ('氟氣', '空氣'), 
 ('氟氣', '氯氣'), ('氟氣', '氧氣'), ('空氣', '氯氣'), ('空氣', '氧氣'), ('氯氣', '氧氣')]
2018年8月29日 00:37