2014-03-06 2 views
1

연구 목적으로 상태 로그를 수집하는 응용 프로그램을 만들고 있습니다. 나는 건축 설계 조언을 원했다.다양한 속성의 데이터를 android에 저장하는 방법

내 응용 프로그램 요구 사항 :

  1. 다양한 분야와 다양한 형태가 될 것이다.
  2. 이 데이터는 로컬에 저장해야 우리가 사용자는 또한 이전에 입력 한 로그를 업데이트 할 수 있어야합니다
  3. 사용자 기반이 증가함에 따라 새로운 형태를 가질 수
  4. 또한
  5. (다음 단계는 서버에 저장하는 것입니다)

질문

For eg : 
Form 1 : (Name , Age, Sex) 
Form 2 : (Name , Age, college, height) 
The actual form has many fields related to health information 

I는 사용자로부터받은 데이터를 위와 같이, 나는 데이터베이스에 여러 형태의 데이터를 저장 어떻게 다양한 분야있을 것입니다. 또한 응용 프로그램에 새로운 양식을 추가하는 기능을 추가하여 영원한 양식을위한 데이터베이스 테이블을 작성하는 것은 좋은 생각이 아닙니다. 관련 양식 ID가있는 데이터베이스에 JSON 문자열로 데이터를 저장하려고했습니다.

+1

JSON은이 문제에 대한 좋은 해결책이지만 매우 효율적이지는 않을 수 있습니다. 그러나 양식 당 한 명만 상대한다면이 작업은 그리 어렵지 않을 것입니다. 또 다른 장점은 쉽게 직렬화 할 수 있으며 한 활동에서 다음 활동으로 JSON 문자열을 전달할 수 있다는 것입니다 (상태 저장은 물론). 순수한 SQL 구현을 원하면 필드 데이터를 포함하는 마스터 테이블 (master_id, name)과 세부 테이블 (master_id, field_name, value)을 갖게됩니다. – 323go

+1

네, 그게 내 생각은 JSON을 사용하여, 당신의 의견에 감사드립니다. SQL은 필자의 요구에 매우 복잡 할 것이다. 그러한 구현을위한 다른 기술이 있습니까? –

+1

JSON 또는 XML이 나에게 의미가 있습니다. – danny117

답변

1

옵션 1. 각 필드를 데이터베이스에 자체 열로 저장하고 데이터베이스에 다양한 필드를 쿼리하여 다양한 양식을 다시 만듭니다.

주 - 다른 양식의 데이터를 저장하기 위해 다른 열 이름을 지정하지 않으면 필드 값을 변경하면 모든 양식의 값이 변경됩니다.

시작하려면 SQlite 데이터베이스를 만드는 방법에 대해서는 tutorial을 참조하십시오.

옵션 2. 해시 맵을 일련 화하고 데이터베이스에 blob로 맵을 저장하십시오. 데이터베이스를 변경하지 않고 새 필드를 쉽게 추가 할 수 있습니다. 단점 : 개별 특성 (연령, 성별 등)을 쿼리 할 수 ​​없습니다. 사람의 정보를 검색 할 때 모든 정보를 검색하고 필요한 정보를 선택합니다. (단순하지만, 덜 효율적/강건 함).

+0

옵션 1은 제안 된대로 좋지 않습니다. 사용자 정의 열과 관련된 양식을 구별하기 위해 쉽게 마스터 ID를 PK에 도입 할 수 있습니다. 그게 유용한 솔루션이 될 것입니다. – 323go

관련 문제