2014-09-01 5 views
1

ms SQL Server를 기반으로 한 asp.net (C#)을 사용하여 설문 조사 앱을 만들려고합니다. 사용자는 입력 할 복수 선택, 단일 선택 및 텍스트 상자 응답 선택을 볼 수 있습니다. 내 데이터베이스에 텍스트 상자와 단일 선택 대답을 저장할 수 있지만 여러 응답을 저장하는 데 붙어 있습니다.데이터베이스에 설문 조사의 객관식 답변 저장

직원 : (아이디, 이름)

survey_title (ID, 제목, 설명, creation_data)

survey_answer_type (ID

내 디자인은 다음과 같다 , type_name)

survey_question (ID, 질문, survey_id, survey_answer_type_id)

survey_answer (ID, question_id, 답) - 모든 응답 선택 (응답 형식이 텍스트 상자 인 경우 답이 null) -

survey_eanswer (ID, employee_id입니다, answer_id, str_answer) 직원의 -answers (str_answer가 저장 텍스트 상자에 답변하는 데 사용됩니다) -

내 survey_eanswer 테이블에 여러 답변을 저장하는 방법을 찾을 수 없습니다, 나는 쉼표 것을 알고있다 분리 입력은 좋은 설계 전략이 아닙니다.

감사합니다.

+1

, 어떤 형태로 데이터를 가져올 수 있는지 생각해보십시오. 예를 들어, "질문 4에 대한 대답 'c'에 질문을해야하는 경우, 'survey_eanswer'에 여러 행이 있습니다. 각 질문이 적절합니다. –

답변

1

좋은 디자인은 테이블을

survey_question_options해야하는 것입니다 : question_id | | 옵션 | ID (ID, QUESTION_ID, OPTION)

을 |
| 1 | 1 | 적색 |
| 2 | 1 | blue |
| 3 | 1 | 흰색 |
| 4 | 2 | small |
| 5 | 2 | 보통 |
| 6 | 2 | large |

그런 다음 선택한 옵션의 ID 만 저장하십시오. 선택한 각 옵션을 고유 한 별도의 db 항목으로 저장하십시오.
표준 SQL 조작을 사용하여 끝에 설문 조사에 참여/그룹화하고 설문 조사를 평가할 수 있습니다.

예, 당신이 지금 얼마나 많은 사용자가 매체 선택이 끝난 갖고 싶어 :

SELECT Count(*) 
FROM survey_answers 
WHERE question_ID = 2 AND answer = 2 

또는 더 복잡하지만 동일한 의미 : 당신이 주위를 켜면 당신은 몇 가지 장점을 찾을 수 있습니다

SELECT Count(survey_answer.id) 
FROM survey_answers 
LEFT JOIN survey_question_options ON 
    survey_question_options.ID = survey_answers.Answer AND 
    survey_question_options.question_ID = survey_answers.question 
WHERE survey_answer.question_ID = 2 
    AND survey_question_options.option LIKE 'medium' 
+0

내 survey_answer 테이블이 똑같은 기능을합니다.예를 들어 질문 2에 대해 중소형을 선택했다면 어떻게 될까요? survey_eanswer에 4와 5의 ID를 현명한 방식으로 저장하려면 어떻게해야합니까? – quents

+0

아, 복수 응답을 허용하는 질문이 있습니다. 알겠습니다. 이 경우, 나는 모든 대답에 대한 새로운 항목 일뿐입니다. 사람이 옵션 1,3을 선택한다면 - 옵션 1의 하나의 DB 항목을 추가하고 옵션 3을 위해 다른 하나를 추가하십시오. – mcdikki

+0

고맙습니다. 제 생각은 복잡하지만 솔루션은 간단합니다 :) – quents