php - 如何链接单个表中的多行 - MySql
问题描述
我正在研究如何在一个表中链接多行。
简而言之,这是一个用户可以添加消息的系统。消息链接到一个部门。用户可以一次向多个部门发布消息。
消息多次存储在消息表中。因此,当我将消息发送到 3 个部门时,它会在消息表中创建 3 行。这样做的原因是因为每个部门的用户都可以评论消息。在不同的部门,评论也会有所不同。
一个新的请求进来了,以便能够链接这些消息。为了简单起见,我可以将一条消息标记为“完成”。当这条消息在“a”部门被标记为“完成”时,“b”和“c”部门的其他消息(另外两行)也需要得到这个标记。
目前,我对如何以一种好的方式做到这一点一无所知。我有创建一个包含消息 ID 的额外表的想法,但仍然不确定如何从中获取所有链接的消息。
我想到了一条作为“父母”的信息。然后在每次更改时搜索孩子和父母的消息。但这感觉不是一个好的解决方案。
真的很期待一些建议来帮助我朝着正确的方向前进!
解决方案
分成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_id
和division_id
在其中。
推荐阅读
- java - 地图条目的哈希码值
- java - 如何在 Java 中始终保留 2 位小数
- mongodb - 使用 Vue、Node、Express 和 Mongodb 上传文件
- docker - IntelliJ 对 Dockerized Python 环境的支持是否与在 Windows 容器上运行的 Python 兼容?
- database - 如何在 MongoDB 中应用 $lookup,如果第二个集合上的记录被删除,仍然给出第一个集合的所有记录的响应
- c# - 无法绑定多部分标识符“Utility._userid”
- mysql - XAMPP MySQL 错误 1114 (HY000): 表 'db' 已满
- vue.js - Vue路由器“推送”如何保留路径的查询字符串
- python - Python中基于运算符优先级的问题
- python - 使用基数 b 逼近一个大数 n,使用 python 逼近 exp e