mysql – 如何为Tinder功能构建数据库
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 如何为Tinder功能构建数据库,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1393字,纯文字阅读大概需要2分钟。
内容图文
![mysql – 如何为Tinder功能构建数据库](/upload/InfoBanner/zyjiaocheng/893/211c4fa7626b475e940d5e4f74f70fd1.jpg)
我正在构建类似于Tinder的功能.人们可以“喜欢”或“跳过”其他人的照片,如果两个人彼此“喜欢”那么就会有匹配.
此功能的数据库结构的最佳方法是什么?我希望能够获得所有比赛的列表以及每个人的所有比赛.
方法1:
Person | JudgedPerson | Like
------ | ------------ | ----
1 | 2 | yes
2 | 1 | yes
1 | 3 | yes
3 | 1 | no
2 | 3 | yes
这看起来像是一种逻辑方法,但很难创建MySql查询来发现匹配.或者有一种简单的方法可以发现它吗?
方法2
Person1 | Person2 | P1LikesP2 | P2LikesP1
------- | ------- | --------- | ---------
1 | 2 | yes | yes
1 | 3 | yes | no
2 | 3 | yes | null
创建查询以获得匹配很容易,但数据模型可能不是最好的.
什么是最好的方法?
如果方法1是最好的方法,我可以用什么mysql查询来发现匹配?
解决方法:
我没有正式理由为什么我更喜欢第一个选项,但很明显第二个选项没有完全规范化.
要查询第一个表并查找彼此喜欢的人对,您可以尝试以下自联接:
SELECT DISTINCT LEAST(t1.Person, t1.JudgedPerson) AS Person1,
GREATEST(t1.Person, t1.JudgedPerson) AS Person2
FROM yourTable t1
INNER JOIN yourTable t2
ON t1.JudgedPerson = t2.Person AND
t1.Person = t2.JudgedPerson
WHERE t1.Like = 'yes' AND
t2.Like = 'yes'
注意:我将DISTINCT和LEAST / GREATEST一起添加到SELECT子句中,因为每个匹配实际上都是以重复的形式出现的.其原因在于,例如, 1 – > 2,2 – > 1将是一个匹配记录,但也是2 – > 1,1-> 2也将是第二个记录.
内容总结
以上是互联网集市为您收集整理的mysql – 如何为Tinder功能构建数据库全部内容,希望文章能够帮你解决mysql – 如何为Tinder功能构建数据库所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。