的消息(数据库字段)多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

回到顶部