답변:
사용자 입력을 기반으로 새 테이블을 동적으로 작성하는 것은 일반적으로 좋지 않습니다. 양식의 기본 구조가 변경되면 동적으로 생성 된 모든 테이블을 업데이트하여 새 열을 포함 시키거나 이전 열을 제거해야하므로 유지 관리 문제가 발생할 수 있습니다. 그런 다음 쿼리 할 테이블을 아는 문제가 있습니다 (아마도 새로운 모든 문제를 일으키는 동적 SQL로 이어질 것입니다). 그리고 아마도 성능 문제도 있을지 모르지만 그것이 얼마나 나쁠지는 확실하지 않습니다. 또한 테이블은 일반적으로 동일한 엔터티의 각 새 인스턴스 에 대해 동일한 테이블의 복사본을 가지지 않고 엔터티 유형 (예 : "웹 양식") 을 나타내는 데 사용됩니다 .
양식에 대한 단일 테이블을 제안합니다. 양식이 누구인지 식별하려면 각 양식에 식별자가 필요합니다.
형태 ----- 아이디 (PK) 이름 owner_id (FK to users.id) (다른 분야) form_elements ------------- 아이디 (PK) form_id (FK에서 forms.id로) element_type_id (FK에서 element_types.id로) 표제 (다른 분야) element_types ------------- 아이디 (PK) 이름 element_list_values ------------------- 아이디 (PK) element_id (FK에서 form_elements.id로) 이름 값 (다른 분야 ??)
웹 응용 프로그램 forms
을 사용하면 사용자를 적절한 엔터티로 추적한다고 가정하고 만든 사용자를 참조 하여 표에 저장할 양식을 만들 수 있습니다 . 양식은 form_elements
해당 참조 forms
테이블 로 채워 져서 어떤 양식에 속하는지, element_types
어떤 유형인지 알 수 있습니다. element_types
양식이 가질 수있는 다른 요소의 정적 (주로) 목록을 저장합니다. 유형은 "text_field", "drop_down_list", "radio_buttons", "checkbox"입니다. "drop_down_list"및 "radio_buttons"와 같은 유형 element_list_values
의 경우 이러한 요소가 일반적으로 가진 목록에 가능한 옵션을 저장하기 위해 추가 테이블이 필요합니다 .