2015-01-20 3 views
1

JSON 형식의 입력을 받고 그 값을 MySQL 데이터베이스에 저장해야합니다. 한 행에 두 개 이상의 이미지 URL을 저장하고 싶습니다. 그것은 가능한가, 그리고 어떻게?데이터베이스의 단일 행에 여러 JSON 값을 저장하는 방법은 무엇입니까?

다음은 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

항상 열의 값을 원자 단위로 지정하는 것이 좋습니다. 이는 열이 레코드에 대해 단일 값을 포함해야 함을 의미합니다. 원하는 경우 별도의 테이블에 URL을 저장할 수 있습니다. –

답변

-1

관계형 데이터베이스에 이러한 종류의 데이터를 저장하는 깨끗한 방법은 모든 스칼라 (문자열 또는 숫자) 개체의 회원들과 각 배열 값 회원을위한 추가 테이블에 대한 하나 개의 테이블을 포함한다. 당신은 다음과 같은 열이 네 개의 테이블을 만들어야합니다 의미하는 세 가지 배열 (images, tagspeople)가 :

  • 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_idAUTO_INCREMENT 메커니즘을 사용하여 게시물 자체에 하나의 행을 추가합니다. 그런 다음 post_id을 가져 와서 각 이미지에 대한 행, 각 태그에 대한 행 및 각 사용자에 대한 행을 삽입하십시오.

0

항상 세 개의 이미지가있을 것이라는 것을 안다면 image1.3이라는 세 개의 열을 만들 수 있습니다. 런타임에 # 개의 이미지가있는 경우에는 항상 이미지 용으로 별도의 테이블을 만드는 것이 좋습니다. 테이블 디자인에 대한 제한 사항이있는 경우 일부 구분 기호가있는 단일 열에 저장할 수 있습니다.

관련 문제