db模式

1tu0hz3e  于 2021-06-25  发布在  Mysql
关注(0)|答案(0)|浏览(211)

我的laravel应用程序有一些 services and products ,为了简单起见,我将尽可能保持通用性,并将单个服务/产品称为 resource .
我必须以这种方式实现一个消息传递系统,这样客户机就可以针对单个服务器向管理员发送消息(反之亦然) resource .
例如,考虑 project 作为一种资源。管理员可以创建 project ,客户端可以向创建该项目的管理员发送消息。客户端无法创建 project .
我就是这样设计db模式的:

消息存储部分:

对话(id、消息id、发件人、收件人、正文、已查看)
消息(id、资源\u id、资源\u名称)

资源存储部分:

项目(id、管理员id、客户id、某些列)
另一个资源(id、admin、client、其他列)
还有另一个资源(id,admin,client,其他列)
注意 resource_id 以及 resource_namemessages 表格:
resource\u id是其中一个资源表(项目、另一个\u资源和另一个\u资源)的id。资源名称是我的问题所在。如果我实现这个模式,我必须在这个列中硬编码一个表名。messages表中的条目如下所示:

+----+---------------+-------------+---------------------+---------------------+
| id | resource_name | resource_id | created_at          | updated_at          |
+----+---------------+-------------+---------------------+---------------------+
|  1 | project       |           1 | 2018-01-13 15:11:07 | 2018-01-13 15:11:07 |
+----+---------------+-------------+---------------------+---------------------+

如您所见,如果某个客户端必须在 another_resource 我得把绳子藏起来 "another_resource" 作为messages表中的资源名称 id 在那一排 another_resource 作为资源id
我承认我不是一个好的数据库设计师,但我有一个强烈的感觉,存储一个表名作为列值不是一个好主意。一定有一种动态的处理方式。如何改进我的模式?如有任何修改、建议或建议,我们将不胜感激。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题