2012-10-09 4 views
0

나는 단순화하려고 애 쓰고있는 흥미로운 문제가 있습니다. 나는 여러 가지 가입 양식을 가지고있는 통신 클라이언트를 가지고 있습니다 - 각각 다른 프로그램/제안을 대표합니다. 각 양식은 본질적으로 동일하지만 일부 양식 필드는 다른 양식 양식 필드를 가지고 있습니다. 상상할 수 있듯이 이것은 데이터베이스와 CRUD 코드 모두에서 악몽입니다.여러 개의 개별 양식 관리/처리

지금 당장은 각 양식이 개별적으로 처리되고 각 응용 프로그램 양식에 대한 전용 MySQL 테이블로 이동합니다. 그래서 끔찍하게도 각 애플리케이션에는 별도의 CRUD 코드가 있습니다. 나는이 상황을 어떻게 잘 대처할 수 있는지 경험자에게 연기하고 싶다.

양식 요소를 CSV로 구문 분석하려고 생각했습니다. CRUD가 쉽게 하나의 테이블을 처리 할 수 ​​있도록 요소를 식별하는 일종의 스키마를 정의합니다. 그러나 때때로 이러한 모든 형태의 요소가 변경되어 모든 것을 정리하고 정리하는 것을 어렵게 할 수 있기 때문에 문제가됩니다. 표준 요소가있는 기본 형식을 사용하는 경우에도 다른 요소를 필요로하는 양식은 일부 FK를 사용하여 다른 곳에 저장됩니다.

나는이 일을 더 쉽게하기 위해 할 수있는 일을 정말로 잃어 버렸습니다. 난 애플 리케이션을위한 여러 테이블과 처리를위한 몇 가지 CRUD를 가지고 싫어 ...

TLDR; 데이터베이스에서 몇 가지 고유/다소 큰 (20 가지 요소) 양식을 처리/저장하고 CRUD를 구현하는 가장 좋은 방법은 무엇입니까?

감사합니다.

EDIT 폼 요소와 허용 된 데이터 형식을 정의하는 JSON 또는 XML 구현에 대해서도 생각했습니다. 이것은 시스템에 의해 수정 될 수 있으며 저장시 캐시 된 HTML 양식 페이지를 생성하고 각 응용 프로그램에 대해 SQL 코드를 업데이트 할 수 있습니다. 그렇게하면 편집 문제를 해결할 수 있습니다. 그러나,이 구현을 기반으로, 나는 여전히 여러 테이블이 필요합니다.

답변

1

이 작업을 수행하는 한 가지 방법은 일종의 ID를 포함하여 모든 양식에 공통된 몇 개의 필드를 정의하는 기본 테이블을 갖는 것입니다. 그런 다음 각 양식의 이름과 값으로 나머지 양식 데이터를 모두 저장하는 별도의 표가 있습니다. 실제로 오브젝트 번호와 양식의 각 데이터 조각에 대한 속성 이름/값 세트가 있습니다.

CREATE TABLE submission { 
    submission_id INT, 
    creation_date DATETIME 
}; 

CREATE TABLE submission_attributes { 
    submission_id INT, 
    attr_name VARCHAR(50), 
    attr_value VARCHAR(255) 
}; 

트릭은 여기 (당신이 작업을 선호 중) 유용한 PHP 객체 또는 배열에 어떤 제출을 설정 할 수있는 범용 수화 기능을하는 것입니다.

데이터베이스가 문자열로만 처리되기 때문에 유효성 검사 기능은 유효한 제출 항목과 그렇지 않은 항목을 파악해야합니다. 잘못된 데이터를 거부하기 위해 데이터베이스에 의존 할 수 없습니다.

또 다른 접근법은 객체 데이터베이스를 사용하는 것입니다. 필자가 가장 좋아하는 것은 MongoDB으로 임의로 복잡한 데이터를 JSON으로 저장하고 깊이 중첩 된 객체 속성을 사용하여 색인/검색 할 수도 있습니다. 그러나 작업을 완료 할 다른 도구도 있습니다.

+0

안녕하세요! 귀하의 회신에 감사드립니다. 나는 너의 첫번째 생각을 좋아한다. 그것은 배치하는 것이 논리적 인 것처럼 보입니다. 나는 여전히 편집을 최소한으로 유지하고 싶다. JSON을 사용하여 각 양식 (시스템에서 편집 가능)을 정의하고 싶습니다. 그런 식으로 업데이 트가 그냥 다시 캐시 된 HTML 양식입니다. 그런 다음 JSON이 업데이트 될 때 json attirbute 값과 post 데이터를 비교하여 (즉 : first_name : string (20)) 이전 양식 데이터가 업데이트의 영향을받지 않는 상태로 유지하면서 처리가 여전히 동적으로 수행됩니다. 따라서 이전 양식에는 이전 중요 데이터 ... 나는 그것이 잘 될 것이라고 생각합니다. :) – thatonefreeman

관련 문제