我想在网站中实施一个警报消息系统,该系统会向多个用户,多个组(不同的数据库表示)或<对所有用户都强烈>全球。
这种行为的良好数据库关系会是什么样的?
答案 0 :(得分:0)
这是我根据您提供的信息开始的地方......
要发送的警报消息表...
alerts
id unsigned int(P)
message text
+----+---------------------+
| id | message |
+----+---------------------+
| 1 | The sky is falling! |
| 2 | Some other message |
| .. | ................... |
+----+---------------------+
一个表格,用于保存有关所有群组的信息......
groups
id unsigned int(P)
name varchar(20)
+----+---------+
| id | name |
+----+---------+
| 1 | Group A |
| 2 | Group B |
| .. | ....... |
+----+---------+
关联组和警报的表。每列是它的相应表的外键,它们一起形成主键 - 这将确保没有任何组多次与同一警报相关联。 在我的示例数据中,我们看到A组已经注册了#34;天空正在下降!&#34;和&#34;其他一些消息&#34; B组仅注册&#34;其他一些消息&#34;警报。
groups_alerts
alert_id unsigned int(F alerts.id)--\_(P)
group_id unsigned int(F groups.id)--/
+----------+----------+
| alert_id | group_id |
+----------+----------+
| 1 | 1 |
| 1 | 2 |
| 2 | 2 |
| ........ | ........ |
+----------+----------+
用户信息表...
users
id unsigned int(P)
username varchar(32)
password varbinary(255)
...
+----+----------+----------+-----+
| id | username | password | ... |
+----+----------+----------+-----+
| 1 | bob | ******** | ... |
| 2 | mary | ******** | ... |
| 3 | john | ******** | ... |
| .. | ........ | ........ | ... |
+----+----------+----------+-----+
将用户与警报相关联的表。密钥遵循与groups_alerts
表中相同的逻辑。在我的示例数据中,我们看到john
已注册&#34;天空正在下降!&#34;消息。
users_alerts
user_id unsigned int(F users.id)---\_(P)
alert_id unsigned int(F alerts.id)--/
+---------+----------+
| user_id | alert_id |
+---------+----------+
| 3 | 1 |
| ....... | ........ |
+---------+----------+
最后,我们需要将用户与群组相关联。密钥遵循与groups_alerts
表中相同的逻辑。在我的示例数据中,我们看到bob
是Group A
的成员,mary
是Group B
的成员。
users_groups
user_id unsigned int(F users.id)
group_id unsigned int(F groups.id)
+---------+----------+
| user_id | group_id |
+---------+----------+
| 1 | 1 |
| 2 | 2 |
| ....... | ........ |
+---------+----------+