Shimmy, 나는이 문제를 다루는 네 편의 기사를 작성했습니다. Creating a Dynamic, Data-Drive User Interface을 참조하십시오. 이 기사에서는 클라이언트에 대해 저장할 데이터를 사용자가 정의하도록하는 방법을 살펴본 결과 질문의 정확한 검사는 아니지만 꽤 가깝습니다. 즉, 제 기사에서는 최종 사용자가 저장하려는 데이터의 유형을 정의하는 방법을 보여줍니다. 원하는 유형의 선을 따라 있습니다.
다음
, DynamicAttributesForClients
어떤 사용자가 만든 것은 사용자가 자신의 클라이언트를 추적하고자하는 속성을 나타내는 표입니다 :
다음 ER 다이어그램
데이터 모델의 요점을 제공합니다. 간단히 말해 각 속성의 값은
DataTypeId
이며 부울 속성, 텍스트 속성, 숫자 속성 등을 나타냅니다. 귀하의 경우이 표는 설문 조사의 질문을 저장합니다.
DynamicValuesForClients
테이블은 특정 속성에 대해 특정 클라이언트에 대해 저장된 값을 보유합니다. 귀하의 경우이 표에는 설문 조사의 질문에 대한 답변이 저장됩니다. 실제 값은 유형이 sql_variant
인 DynamicValue
열에 저장되어 숫자, 비트, 문자열 등 모든 유형의 데이터를 저장할 수 있습니다.
내 기사에서는 객관식 질문을 처리하는 방법에 대해 설명하지 않습니다. 사용자가 미리 설정된 옵션 목록에서 하나의 옵션을 선택할 수 있지만이를 허용하도록 데이터 모델을 향상시키는 것은 매우 간단합니다. - 기본 키
DynamicAttributeId
-이 질문은
OptionText
과 관련된 속성을 지정 - 옵션 텍스트
DynamicListOptionId
다음과 같은 열이 DynamicListOptions
라는 새 테이블을 만들 것 객관식 옵션 인 특성이있는 경우 사용자 인터페이스의 드롭 다운 목록에 쿼리에서 반환 된 옵션을 채 웁니다.
SELECT OptionText
FROM DynamicListOptions
WHERE DynamicAttributeId = ...
마지막으로, 당신은 (그들이 항목을 선택하지 않은 경우 또는 NULL
사용)가 선택 목록 옵션을 기록 할 DynamicValuesForClients.DynamicValue
열에서 선택한 DynamicListOptionId
값을 저장한다.
기사를 처음부터 끝까지 읽으십시오. 전체 데이터베이스와 모델을 포함하여 다운로드 할 수있는 완전하고 실용적인 데모가 있습니다. 또한이 시리즈를 구성하는 네 가지 기사에서는 데이터 모델을 깊이 탐구하고 사용자가 동적 특성을 정의 할 수 있도록 웹 기반 (ASP.NET) 사용자 인터페이스를 작성하는 방법, 데이터 특성을 표시하는 방법 등을 보여줍니다. .
해피 프로그래밍!
그리고 목록 항목을 포함시킬 것입니까? 예 : 대답은 사전 설정 목록 + "기타"에서 오는 응답입니다. 내 질문을 읽어보십시오. – Shimmy
@Shimmy : 객관식 질문에 대한 토론을 포함하도록 답변을 업데이트했습니다. . 감사합니다 –