如何设置将易失性信息保存到数据库的有效方法

时间:2015-11-01 18:52:49

标签: php mysql database

我正在开发一个Web服务,我希望得到以下输出(部分已经有效)作为API请求的结果。

请求

我构建了一个接受以下请求的API: POST http://server.com/v1/requests/" 在邮件正文中发送一些参数。

响应

Status-Code: 200 OK

{
    "transaction_id": "12345",
    "status": "processing"
}

表格:请求

这会在名为requests的表中在服务器上创建新请求。该表由字段(简化)组成:

transaction_id -> String
status -> Int

我为系统中的用户提供了另一个表

表:用户

此表包含有关已注册系统中用户的信息。

user_id -> String
LatLng -> Float

搜索请求位置附近的用户

我的算法如下:

  • 当我将此请求发送到服务器时,我开始搜索请求范围内最近的3个用户。此搜索正在users表上执行,并返回靠近我要搜索的位置的用户数组(代码未显示,但工作正常)。
  • 此用户数组按距离排序(离farest最近),因此我知道哪些用户靠近请求位置。
  • 我向这3个用户发送推送通知,询问他们是否可以回复此请求。他们可以选择接受或拒绝。他们的决定应该保存到数据库中

当我向特定请求发出请求时,我将创建以下响应:

响应

{
    "transaction_id": "12345",
    "responders": [
        {
            "user_id": "R001",
            "dispatch_time": "1234"
        },
        {
            "user_id": "R002",
            "dispatch_time": "1235"
        },
        {
            "user_id": "R003",
            "dispatch_time": "1236"
        }],
}

这个工作流程对我来说很清楚。对我来说完全不清楚的是现在我需要如何实现它有效的表结构/算法。所以我的问题是:

  1. 我在哪里存储有关我的数据库查询找到的3个响应者的信息?我现在可以想办法:一个是在requests表格中添加其他字段,每个字段都包含user_id。我会想到这样的事情:
  2. |transaction_id|status|user_id_1|user_id_2|user_id_3|

    |12345 |1 |U100 |U200 |U300|

    然后我会为响应请求的每个用户更新相同的表条目,最后在表中只有一个条目。

    我想到的另一种方式是:

    |transaction_id|status|user_id|

    |12345 |1 |U100

    |12345 |1 |U200

    |12345 |1 |U300

    这对我来说似乎有些奇怪。难道我最后用数据炸毁整个表格,因为那时数据量是3倍?它是如何以有效的方式完成的?

    那么接收我希望的输出的正确算法/结构是什么?

0 个答案:

没有答案
相关问题