SQL查找最相关数据的多个问题

时间:2016-07-05 14:27:27

标签: sql database database-design relational-database

我想构建一个相当简单的应用程序,该应用程序在很大程度上依赖于通过多个表查询数据并返回最相关信息的能力。

我最近在关系数据库中做了一个简短的课程,但是我希望实现的目标低于我们所涵盖的范围。我有点迷失在哪里开始这个,并寻找一些关于如何处理功能和查询数据的一般信息。显然,我并不是在寻找能够回复大量代码的人,而是更多地向正确的方向发展。

我想做什么:

  1. 我想让一群测试用户选择他们的前五大兴趣或逍遥时光。
  2. 我希望他们回答10个关于他们个性的简单问题。
  3. 我希望新的最终用户能够回答与测试用户相同的10个问题。
  4. 我希望根据测试组给出的答案与答案的匹配程度,将最相关的兴趣或逍遥时光按降序返回给最终用户,即,如果他们具有相似的个性,他们可能会享有相同的兴趣或消遣。
  5. 我想这可能与约会网站的运作方式非常相似。

    根据我在课程中学到的知识,我认为我需要以下表格,但可能有更好的方法:

    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)我如何查询数据库根据最终用户向测试用户回答问题的相似程度,返回最相关的逍遥时光。

    非常感谢任何帮助。

    由于

1 个答案:

答案 0 :(得分:0)

除了我的评论之外,我认为您应该处理用户在代码中的答案。可能在SQL中使用像MIN函数这样的东西,但我不确定它会比代码更快,并且可能更慢。创建一个用户数组,其中每个数组元素都是一个用户对象,包含问题ID和answer id值的键。然后遍历一个对象和下一个对象,总结匹配数,并保存具有最多匹配数的用户。然后转到下一个用户,并执行相同的操作,只有在他有更多匹配时才保存他。如果某人完美匹配,您可能只想打破循环并返回用户。如果你想让它比第一个匹配更随机,请事先随机混合数组中的用户。