2016-07-05 50 views
-1

我想構建一個相當簡單的應用程序,它將嚴重依賴通過多個表查詢數據並返回最相關信息的能力。SQL多個問題以查找最相關的數據

我最近在關係數據庫中做了一個簡短的課程,但是我希望實現的是低於我們所涵蓋的範圍。我有點迷失在從哪裏開始,並尋找一些關於如何處理數據功能和查詢的一般信息。顯然,我不是在尋找某人回覆很多代碼,而是更多地指向正確的方向。

我想這樣做:

  1. 我想爲一組測試用戶的挑選自己頂5個興趣或消遣。
  2. 我想他們回答10個關於他們個性的簡單問題。
  3. 我想要一個新的最終用戶回答與測試用戶相同的10個問題。
  4. 我想根據測試組給出的答案與答案的接近程度,以降序向最終用戶返回最相關的興趣或消遣,即如果他們具有相似的個性,他們可能會享受相同的興趣或消遣。

我想這可能很像約會網站可能的工作方式。

從我在球場上,我想我會要求下表瞭解到但有可能是一個更好的辦法:

User (UserID, Fname, Lname, Age) 
Question (QuestionID, Question, Answer1, Answer2, Answer3, Answer4, Answer5)...user would pick 1 answer here only 
User/Question (UserID/QuestionID, AnswerGiven) 
Pastime (PastimeID, PastimeName, Description) 
User/Pastime (UserID/PastimeID) 

我要補充的是,問題的答案是選擇題和不文本由用戶輸入,因此只需要數字,即。用戶選擇了答案編號4.

任何人都可以指出我正確的方向:a)處理問題/答案,b)如何將所有答案分組在一起而不是多次查詢數據庫, c)如何根據最終用戶向測試用戶回答問題的方式來查詢數據庫以返回最相關的消遣時間。

任何幫助都非常感謝。

謝謝

+0

我會把答案變成他們自己的小表:答案表:AnswerID,AnswerText。然後,用戶/問題將包含用戶ID,問題ID,答案ID。 – dcoli

+0

謝謝你的建議dcoli。此外,我剛剛編輯我的原始問題,說問題是多項選擇,所以,答案將只是數字(沒有答案文字) – Sio

+0

你的意思是答案的價值將是一個數字(如解決數學問題),或將有是分配給每個多選選項的ID號碼,還是複選框旁邊的文字答案?如果是後者,我的桌子仍然會有幫助。 – dcoli

回答

0

除了我的意見,我認爲你應該處理比較用戶在代碼中的答案。使用類似MIN函數的東西可能會在SQL中實現,但我不確定它會比代碼中的速度更快,速度更慢。創建一個用戶數組,其中每個數組元素都是一個用戶對象,包含問題ID和答案ID值。然後遍歷一個對象和下一個對象,合計匹配數量,並保存匹配數最高的用戶。然後去找下一個用戶,並且做同樣的事情,只有當他有更多的比賽時纔會救他。如果有人完美匹配,您可能只想打破循環並返回用戶。如果您希望它比第一個匹配更隨機,那麼請事先隨機混合陣列中的用戶。