php - 系统和用户消息结构

标签 php mysql

我正在创建一个应用程序,其中有一个用户表和一个管理表。在此应用程序中,我正在构建的功能之一是消息传递,用户会收到某种消息,然后用户会收到通知。

我正在努力解决我的数据库架构问题,并请注意这是否是最好的方法。在我的消息表中,我有另一个表,即 messages_translationsuser_messages

我的目标是使其具有可扩展性,并成为最佳实践。

首先我的表消息是这样的:

messages:
- id;
- user_id (to);
- admin_id (from);
- title;
- body;
- is_read;

但是我记得两件事:首先我忘记用多语言制作,而且我需要一种方法来说明这条消息是从管理员到用户或从系统发出的。 例如,在某些情况下,系统会通知消息(例如:候选人是否被接受、新的空缺职位可用或某种批准),基本上是来自与用户相关的系统的事件,以及其他times 是管理员向用户或用户组发送的包含更具体消息的消息。

我创建users_messages的原因之一是为了防止内容重复,因为在某些情况下,管理员需要根据性别或其他原因向一组用户发送相同的消息详细信息。

这是我最后采用的方法:

messages:
- id;
- type (SYSTEM, ADMIN)

messages_translated:
- id;
- message_id;
- locale (en, es...);
- title;
- body;

user_messages:
- id;
- message_id;
- user_id;
- admin_id (nullable);
- is_read;

所以基本上我所做的,这个结构有意义吗?

最佳答案

我认为你可以少一张 table :

table "message":
- id;
- creation_date_time;
- language (ENG, SPA... ISO 639-2);
- title;
- body;

table "message_sent":
- id;
- message_id;
- sent_date_time;
- receiver_user_id;
- sender_admin_id (if null then it is a system message);
- is_read;

因此,由于许多接收者的内容都是相同的并且应该进行翻译,因此我将内容放在单独的表格中。

另一个表用于存储已发送的消息。我不使用TYPE,因为系统消息可能根本没有发件人,或者发件人 ID 为 -1。

在大多数情况下,最好使用 ISO 639-2对于语言。其他代码也可以,但这个代码使用得最多,所以如果您开始与其他库交互,这可能就是您会遇到的代码。

关于php - 系统和用户消息结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56433824/

相关文章:

php - 如何限制php脚本的执行时间

PHP编辑百分比

php - 可变变量如何与 C++ 运算符一起工作?

javascript - PHP循环与html表单和javascript提交按钮仅提交循环中的最后一个表单

mysql - 合并 2 个 SELECT LEFT JOIN 查询,联合/声明 AS 不起作用

php - 在 SQL 中获取具有相同 id 的行总和到 PHP

php - SQL - 在单个查询中计算多个列并加入

java - 是否可以从链接收集数据并将该信息发送到数据库?

mysql - Asp.Net MVC - MySQL - 保存 Č 转换为 C,为什么?

mysql - MySQL 的默认 ON DELETE 行为是什么?