mysql - 標(biāo)簽表的一些問(wèn)題
問(wèn)題描述
剛學(xué)習(xí)mysql對(duì)mysql不熟悉,現(xiàn)在我有這樣子的三個(gè)表格
文章表
idtitlecontent0helloworld1hey....問(wèn)題表
idtitlecontent0helloworld1hey....標(biāo)簽表
idnameavatar1java....2js....兩個(gè)表都共用一個(gè)標(biāo)簽表,標(biāo)簽表的avatar是標(biāo)簽的頭像,每個(gè)標(biāo)簽都有屬于自己的頭像或者默認(rèn)的頭像。 我現(xiàn)在的問(wèn)題是怎么把標(biāo)簽表和其他兩個(gè)表關(guān)聯(lián)起來(lái)? 要保證能根據(jù)標(biāo)簽id快速的查出文章或者話題。
我想的第一個(gè)解決方案是在文章表和問(wèn)題表的下面加一個(gè)tags的字段。用逗號(hào)分開(不知道好不好...),然后我發(fā)現(xiàn)我特喵的不會(huì)查 ... 這樣要怎么查詢呢... 使用like嗎...
文章表
idtitlecontenttags0helloworld0,11hey....2,3,4問(wèn)題表
idtitlecontenttags0helloworld1,41hey....6,3然后我又想了第二個(gè)方案,因?yàn)槲恼卤砗蛦?wèn)題表的結(jié)構(gòu)基本上完全一致,我是不是可以把它們合并起來(lái)呢?
問(wèn)題和文章標(biāo)的結(jié)合體....
idtitlecontenttagstype0helloworld1,4article1hey....6,3question然后我又覺得不應(yīng)該合并吧?因?yàn)榉珠_的話數(shù)據(jù)庫(kù)沒那么大,如果我只是想找全部標(biāo)簽為1的問(wèn)題,單表查詢的話會(huì)快一些吧?
之后又想了第三個(gè)方案,弄一個(gè)關(guān)聯(lián)表怎么樣呢,話說(shuō)這個(gè)關(guān)聯(lián)表需要id的嗎 ... 不是很懂.. 如果有了關(guān)聯(lián)表,那么文章和問(wèn)題的表是不是就不需要tags字段了呢。
關(guān)聯(lián)表
aq_idtag_id01160413這樣子查詢好像比較簡(jiǎn)單? 直接一條select語(yǔ)句就搞定了,并且查詢速度也還好 ... 但是隨著時(shí)間的增長(zhǎng),這個(gè)關(guān)聯(lián)表肯定會(huì)有超多的數(shù)據(jù),這時(shí)候這個(gè)查詢應(yīng)該會(huì)很慢吧?
希望有人解答一下... 提前謝謝各位
問(wèn)題解答
回答1:首先,你給出的文章表和問(wèn)題表看得我眼花..結(jié)構(gòu)相同就算了吧,數(shù)據(jù)還相同...其次,你一開始相處的解決辦法tags是不可取的...很難對(duì)tags進(jìn)行修改,而且就像你說(shuō)的,很難查詢;至于文章表和問(wèn)題表的合并,完全沒有必要,這涉及到數(shù)據(jù)庫(kù)的設(shè)計(jì),可以去了解下數(shù)據(jù)庫(kù)的范式;最后,關(guān)聯(lián)表的想法就很好,利用aq_id和tag_id也是正確的。至于你說(shuō)以后可能會(huì)有超多的數(shù)據(jù),放心吧,且不說(shuō)mySql不是吃素的,數(shù)據(jù)多這個(gè)問(wèn)題在你以后的學(xué)習(xí)當(dāng)中也會(huì)得到解決的
回答2:你一開始相處的解決辦法tags是可以查詢的,tags每個(gè)數(shù)字前后都用符號(hào)隔離開,用like查詢例如, ,1,11,31,當(dāng)查詢1的時(shí)候可以tags like ”%,1,%“。這樣應(yīng)該能查出來(lái)。
相關(guān)文章:
1. javascript - node.js promise沒用2. golang - 用IDE看docker源碼時(shí)的小問(wèn)題3. c++ - 如何正確的使用QWebEngineView?4. yii2中restful配置好后在nginx下報(bào)404錯(cuò)誤5. javascript - js 寫一個(gè)正則 提取文本中的數(shù)據(jù)6. 算法 - python 給定一個(gè)正整數(shù)a和一個(gè)包含任意個(gè)正整數(shù)的 列表 b,求所有<=a 的加法組合7. android 如何實(shí)現(xiàn)如圖中的鍵盤上的公式及edittext的內(nèi)容展示呢8. java - 我在用Struts2上傳文件時(shí),報(bào)以下錯(cuò)誤怎么回事?9. php自學(xué)從哪里開始?10. php如何獲取訪問(wèn)者路由器的mac地址
