全球主机交流论坛

标题: 全球技术论坛,求数据库设计思路 [打印本页]

作者: 王先生O_O    时间: 2019-10-14 15:55
标题: 全球技术论坛,求数据库设计思路
小弟不才,无法完美解决两人关系问题

假设有张聊天室的表,里面有两个字段   UseridA和UseridB

现在有两个人,ID为111和222

当111对222发起聊天的时候建立聊天室表, UseridA=111, UseridB=222

当222对111发起聊天的时候建立聊天室表, UseridA=222, UseridB=111

当我需要去对他们的聊天室做更改的时候,查找聊天室的语句就是    (UseridA=111&&UseridB=222)|| (UseridA=222&UseridB=111)


本人觉得此方法极其愚蠢,现在想到的解决方案有两种,一种就是固定把UseridA填入小的id,另外一种就是多加一个字段为,111,222,这种形式让后进行包含的查询,但是始终感觉无法完美,求大佬解惑


作者: 339    时间: 2019-10-14 16:04
为什么要两张表,一张表不就可以解决了么,一个sender,一个receiver
作者: 额头有王的喵    时间: 2019-10-14 16:13
用一个表表示两个人聊天不就行了
作者: 二狗    时间: 2019-10-14 16:18
。。 userA userB ??
你的聊天室只支持2个人??  
作者: 后悔当初不努力    时间: 2019-10-14 16:36
339 发表于 2019-10-14 16:04
为什么要两张表,一张表不就可以解决了么,一个sender,一个receiver

我没见作者是两张表啊?
作者: 后悔当初不努力    时间: 2019-10-14 16:41
本帖最后由 后悔当初不努力 于 2019-10-14 16:43 编辑

我没做过聊天室,也不是大佬   
不过我的思路是这样
看别人的聊天室 都是有房间号,我觉得一个聊天室一个id吧(有个自增id就行了 不需要用户A+用户B这么查)
然后查询就查这个id   
来一个字段存发起的Userid  ,再一个字段就用 , 存接收人的Userid   查这个用find_in_set() 查

不过如果聊天人多的话,用关联表  一张表存 聊天室id,发起人Userid 聊天室信息,另一张表 存聊天室id,聊天人们的Userid 一个聊天用户一个记录 如果有啥聊天室积分的这么搞不错
作者: httpd    时间: 2019-10-14 16:44
没学过不会
作者: thsispic    时间: 2019-10-14 17:06
你第一种方法和第二种有啥区别?感觉就是字段名不一样?
作者: 339    时间: 2019-10-14 19:29
后悔当初不努力 发表于 2019-10-14 16:36
我没见作者是两张表啊?
当111对222发起聊天的时候建立聊天室表, UseridA=111, UseridB=222

当222对111发起聊天的时候建立聊天室表, UseridA=222, UseridB=111

这不是两张表吗?
作者: 王先生O_O    时间: 2019-10-15 00:14
只是打比方,主要想解决的问题是两人关系,比我我喜欢你或者你喜欢我,现在已知我和你的id,要找出我喜欢你或者你喜欢我的记录,怎么样的设计思路可以比较方便的查找
作者: 9012    时间: 2019-10-15 00:22
王先生O_O 发表于 2019-10-15 00:14
只是打比方,主要想解决的问题是两人关系,比我我喜欢你或者你喜欢我,现在已知我和你的id,要找出我喜欢你 ...

就放一张表,两列:主->从,把关系都放进来。
查找:主=A || 主=B
是说这样?
作者: 后悔当初不努力    时间: 2019-10-15 09:14
339 发表于 2019-10-14 19:29
这不是两张表吗?

一张   就是两个字段   UseridA 字段和 UseridB 字段 一个发送一个接受
作者: cenvin    时间: 2019-10-15 09:21
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 全球主机交流论坛 (https://443502.xyz/) Powered by Discuz! X3.4