如何将多个JSON值存储到单行数据库中?

时间:2015-01-20 04:41:49

标签: mysql json

我得到一个JSON格式的输入,该值应该存储在MySQL数据库中。我想在一行中存储多个图像URL。有可能,怎么样?

以下是JSON格式的输入。我想将多个图像数据存储在一行中?

{
    "session_id": "192urjh91f",
    "description": "description of the post",
    "location": "12.00847,-71.297489",
    "place_id": "917439",
    "images": [
        "url1",
        "url2",
        "url3"
    ],
    "audio": "audio url",
    "tags": [
        "1234",
        "31332",
        "12412"
    ],
    "people": [
        "user_id",
        "user_id1",
        "user_id2"
    ]
}

2 个答案:

答案 0 :(得分:0)

如果您知道总会有三个图像,则可以创建三列image1..3。如果图像#是在运行时,那么为图像设置单独的表总是更好。如果您对表设计有限制,那么您可以使用一些分隔符存储到单个列中。

答案 1 :(得分:-1)

在关系数据库中存储此类数据的简洁方法包括为对象的所有标量(字符串或数字)成员创建一个表,为每个数组值成员创建一个附加表。您有三个数组(imagestagspeople),这意味着您需要创建包含以下列的四个表:

  • posts (post_id PRIMARY KEY, session_id, description, latitude, longitude, place_id, audio_uri)
  • post_images (post_id, uri, PRIMARY KEY (post_id, uri))
  • post_tags (post_id, tag_id, PRIMARY KEY (post_id, tag_id))
  • post_people (post_id, user_id, PRIMARY KEY (post_id, user_id))

(将这些语句翻译成实际的CREATE TABLE语句留给了知道每个成员可接受的值的人。

当您添加帖子时,您为帖子本身添加一行,该帖子应通过post_id机制获得AUTO_INCREMENT。然后使用此post_id并使用它为每个图像插入一行,为每个标记插入一行,为每个用户插入一行。