무엇 최 implemention 의 클라이언트 작성 가능하고 수정할 수 있 웹 형태에 관계형 데이터베이스?

StackOverflow https://stackoverflow.com/questions/131759

문제

에서 여러 웹 응용 프로그램은 프로젝트 나는 부분의 클라이언트가 요청을 만들 수 있도록 자신의 형태입니다.문제가 발생하는 방법에 대한 저장 형태로 정의하는 방법을 다음을 저장하는 사용자가 입력 값으로 그 사용자 정의 형태입니다.

나는 그것을 본 적이 한 두 가지 방법:

  1. 다고 가정하면 클라이언트를 정의하는 방법은 많은 분야,그리고 무엇 레이블은 사람들이 그와 관련된 필드를;우리는 올 수 있는 솔루션을 포함하는 네 개의 테이블이 있습니다. FormDefinition, FormFieldDefinition, FormInstances, FormFieldValues.클라이언트를 변경 FormDefinitionFormFieldDefinition, 웹 앱을 확인하고 해당 정보를 사용하여 렌더링 HTML 웹 양식에서는 웹사이트 방문자(end-user)를 양식을 제출하는 새로운 행 FormInstances 가 만들어지고 값에 저장됩 FormFieldValues 테이블.

    FormDefinition 을 정의하는 형태,즉 form definition ID = 2, form title = 'Car Registration Form'.행 FormFieldDefinition 을 정의합 분야의 양식 FormDefinition, 즉 field definition ID = 7, field label = 'Car Model', field type = 'varchar(50)'.행 FormInstance 인스턴스의 각각의 형식으로 가득하여 사용자,즉 definition id = 2, date_entered = '2008-09-24'.과 행서 FormFieldValues 은 항목에 의해 사용자,즉 field definition = 7, value = 'Tiburon'.

    불행하게도,이 값을 의미에서 열 FormFieldValues 어야 합 char 형식의 최대 크기는 클라이언트를 지정할 수도 있습니다 웹 form...을 때 형태로 정의 변화,관리하는 오래된 데이터가 불확실하다.그러나 사용자가 항목은 쿼리 가능(썼 빠른 query 을 나열하는 사용자가 항목을 받 양식 id,비슷 또 다른 피벗 질문).

  2. 는 대신 사용하여 네 개의 테이블 것을 직렬화 형태로 정의 및 사용자의 형태로 항목을 XML(또는 YAML 또는 이와 유사한)저장하는 텍스트로.위쪽은 양식은 인간에 읽을 수 있는 데이터베이스에서.는 단점이 있다는 것이 이상의 응용 프로그램 오버헤드를 분석 XML,데이터베이스는 훨씬 더 적은 가능한에서는 SQL 관점에서.

나의 질문은 이것은 무엇이 데이터베이스 모델이라고?(할 수 있도록 google 이 문제를 해결합니다.) 그러나 나는 것이 정착에 대한 답:더 나은 구현 또는 거기에 더 나은(또는 그냥 좋)구현할 수 있습니다.

도움이 되었습니까?

해결책

당신이 묘사하는 것은 종종 "Entity-Attribute-Value"라고하며 때로는 "데이터와 메타 데이터 혼합"으로 묘사됩니다. 즉, 속성 (필드)의 이름은 문자열 (데이터)으로 저장됩니다.

이로 인해 각 양식 인스턴스에 동일한 필드 세트가 포함되거나 필수 필드가 채워 지도록하는 것과 같은 복잡한 문제가 발생합니다 (종래 표에서 널이 아닌 것과 동일).

관계형 데이터베이스 로이 작업을 가장 잘 수행하는 방법을 물었습니다. 관계형 데이터베이스에서는 메타 데이터에 메타 데이터를 사용해야합니다. 이 경우 각 양식에 새 테이블을 작성하고 양식 필드에 열을 사용하는 것을 의미합니다. 따라서 양식 정의는 단순히 테이블 메타 데이터이며, 하나의 양식 인스턴스는 해당 테이블의 한 행입니다. 다중 값 답변 (예 : 확인란)이있는 양식을 지원하는 경우 종속 테이블도 필요합니다.

이것은 비싸거나 확장하기 어려운 것처럼 보일 수 있습니다. 아마도 사실 일 것입니다. 따라서 관계형 데이터베이스 가이 작업에 가장 적합한 도구가 아닐 수도 있습니다. XML 또는 Yaml의 가능성을 언급했습니다. 기본적으로 임시를 정의 할 수있는 일종의 구조화 된 파일 형식. 각 고객의 양식에 대한 DTD를 정의해야하므로 수집 된 각 양식을 검증 할 수 있습니다.

편집하다: 응용 프로그램에서 EAV의 유연성이 실제로 필요하다면 괜찮습니다. 일반적으로 규칙을 위반하는 것을 정당화하는 상황이 있습니다. 추가 작업에주의를 기울이고 개발 일정과로드를 처리하기 위해 서버를 확장 할 때 계획을 세우십시오. 또한 다른 것을 참조하십시오 EAV에 대한 내 답변 stackoverflow에서.

다른 팁

이 데이터베이스 모델은 무엇입니까?

실제로 무엇을 호출 해야할지 잘 모르겠지만,이를 동적으로 생성하는 데 사용되는 것과 동일한 프로세스입니다. 설문 조사 응용 프로그램을 생성하기위한 소스를 찾으면 동일한 일반 데이터베이스 스키마와 유사한 방법을 찾을 수 있습니다.

또한 양식 빌더 사이트를 살펴보십시오 http://wufoo.com/ 또는 http://frevvo.com/ UI 아이디어의 경우 (웹 기반을 기반으로하는 경우).

세 번째 옵션은,당신은 테이블을 작성하고 열을 추가하는 경우 필요합니다.하는 방법에 따라 여러 형태로 만들어지지만,데이터베이스를 처리할 수 있게 많은 테이블이 있습니다.그래서하고자하는 경우 추가 양식을'자동차 등록 양식',테이블을 추가'CarRegistrationForm'.에 대한 모든 분야에 그들이 원하는 형태로 할 수 있습니다 그들 사이에서 선택 몇 가지 기본 형식으로 날짜,int 및 텍스트입니다.때 텍스트를 선택,그들이를 입력해 최대 길이에서 선택 목록을 제공하는 정보를 입력하면 해야될 varchar 또는 clob.

이 작품에서는 SQL Server,당신은 쉽게 할 수 있습의 열을 추가하고 삭제.DB2 그것이 문제가 될 수 있기 때문에,드롭 열이 구현되지 않았습니다.Mysql 나는 확실하지 않다.

등록해야 합 귀하의 형태 및 분야에서 두 개의 테이블이 있습니다.

당신은 아마 원할 것입니다 엔티티-관계 모델

이러한 모델에서 대화식으로 스키마를 만들기위한 GUI 도구가 실제로 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top