如果在一個站點中每個用戶可以輸入一個逗號分隔的,他們在輸入的產品清單(不從預先確定的名單!),我們應該如何存儲列表中的MySQL的每個用戶,以便項目能在用戶間使用相同的項目進行匹配?如何在MySQL中存儲每個用戶的項目列表?
1)我知道我們不應該在DB中存儲以逗號分隔的字符串作爲VARCHAR
,所以它應該如何存儲?應的新表ItemsList
被創建,其中每行是一個UserID -> ItemName
(例如,如果用戶ID 進入「相配,槍,酒精」,我們將增加3行ItemsList
作爲101 -> 'Matches', 101 -> Gun, 101 -> Alcohol
)?
2)如果是的話,應該用什麼PRIMARY KEY
該表?
3)什麼indexes
應設置爲使雙方的檢索和儘可能快的項目匹配?
4)最後,應該用什麼查詢,找出所有有共同的至少一個項目與其他用戶的用戶?
我想在你擔心數據庫模式之前,你還有幾個問題要問自己。自由形式提交真的是最好的選擇嗎?如果是的話,那麼你將如何執行數據清理(即,讓不同的用戶不要放入槍,槍,槍,槍,槍等等,這些可能是邏輯匹配但不是字符串匹配)。如果您不打算強制執行數據清理,您打算如何匹配近似匹配的內容? – 2013-05-07 15:43:20
@MikeBrant:我打算進行消毒,將所有的小寫字母都做成小寫,然後製作每個單詞大寫的第一個字母,然後用逗號分解列表,然後在將這些空格存儲在數據庫中之前修剪兩端的空格。這就是說,我想不出任何簡單的方法來匹配單數與複數...... – ProgrammerGirl 2013-05-07 15:59:47