首页 > 解决方案 > 如何链接单个表中的多行 - MySql

问题描述

我正在研究如何在一个表中链接多行。

简而言之,这是一个用户可以添加消息的系统。消息链接到一个部门。用户可以一次向多个部门发布消息。

消息多次存储在消息表中。因此,当我将消息发送到 3 个部门时,它会在消息表中创建 3 行。这样做的原因是因为每个部门的用户都可以评论消息。在不同的部门,评论也会有所不同。

一个新的请求进来了,以便能够链接这些消息。为了简单起见,我可以将一条消息标记为“完成”。当这条消息在“a”部门被标记为“完成”时,“b”和“c”部门的其他消息(另外两行)也需要得到这个标记。

目前,我对如何以一种好的方式做到这一点一无所知。我有创建一个包含消息 ID 的额外表的想法,但仍然不确定如何从中获取所有链接的消息。

我想到了一条作为“父母”的信息。然后在每次更改时搜索孩子和父母的消息。但这感觉不是一个好的解决方案。

真的很期待一些建议来帮助我朝着正确的方向前进!

标签: phpmysqldatabasedatabase-design

解决方案


分成messages两张表;我会打电话给m1他们m2

m1具有在所有部门中保持不变的所有列。这可能包括消息的大量文本。让我们有PRIMARY KEY(m_id)m_id可能是AUTO_INCREMENT。听起来done需要在这张表中。

m2每个部门有一行,因此,它有一个mid和 的副本division_id,所以可能PRIMARY KEY(mid, division_id)(或可能以相反的顺序)。此表中还有各部门之间不同的任何列。

m1:m2 是 1:many 关系,通过m_id. 该列将用于JOINing.

听起来“评论”是按部门划分的。所以 a comment(无论它在哪里)都会同时拥有m_iddivision_id在其中。


推荐阅读