的消息(数据库字段)多recivers
我希望让用户相互发送消息, 现在这是当前模式的消息(数据库字段)多recivers
CREATE TABLE IF NOT EXISTS `inbox` ( `id` int(11) NOT NULL auto_increment,
`id_usuario` int(11) NOT NULL,
`id_to` int(11) NOT NULL,
`mensaje` varchar(250) collate utf8_spanish_ci NOT NULL,
`texto` text collate utf8_spanish_ci NOT NULL,
`fecha` date NOT NULL,
`visto` int(1) NOT NULL,
`adjunto` int(1) NOT NULL,
`item` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci AUTO_INCREMENT=1 ;
对于这个问题,我认为这只是有关:
- id_usuario - 从所述用户的唯一id(发送者)
- id_to - 唯一ID从用户(reciver)
- ID - 唯一的消息ID
我想知道,
如果我改变从整数(只有一个ID)为varchar, 'id_to' 类型以:
id_usuario - 多个唯一ID的逗号分开用户(recivers)
和存储多个recivers等(多个ID的):333 '444,555'
我可以:
- 显示每个reciver的消息?
还在搞清楚查询,会不会是这样的: "select * from inbox where sesionid IN (idto)"
??
- show sender each message for message? 仍然搞清楚查询,它会像
"select id_to from inbox where id = '254'"
然后按','爆炸?
或者,
我应该改变我的计划?
感谢
回答:
由于不知道项目大小,通常不鼓励在一列中存储多个ID,因为每个ID都需要进行过滤。
我会建议创建一个名为“MessageReceivers”或类似的表。它将包含接收消息的人员的messageID和用户ID。您将为每个收件人创建一行。
然后通过索引,您可以通过简单连接快速获取该用户的所有消息。
回答:
你可以通过创建另一个表来存储收件人,每行列出的消息ID和接收者ID这更好的。同一个消息ID的多行代表同一消息的多个收件人。
使用这种结构,您可以使用JOIN
语句对收件人运行查询。
以上是 的消息(数据库字段)多recivers 的全部内容, 来源链接: utcz.com/qa/261236.html