我的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_name
在 messages
表格:
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
我承认我不是一个好的数据库设计师,但我有一个强烈的感觉,存储一个表名作为列值不是一个好主意。一定有一种动态的处理方式。如何改进我的模式?如有任何修改、建议或建议,我们将不胜感激。
暂无答案!
目前还没有任何答案,快来回答吧!