복붙노트

[SQL] 무엇 MySQL의 데이터베이스 테이블 및 관계 조건 질문과 Q & A 설문 조사를 지원하는 것? [닫은]

SQL

무엇 MySQL의 데이터베이스 테이블 및 관계 조건 질문과 Q & A 설문 조사를 지원하는 것? [닫은]

지금은 아주 간단한 설문 조사 시스템에서 일하고 있어요. 데이터베이스 스키마는 간단 될 것입니다 : 측량 표를, 도움말 테이블과 PossibleAnswers 테이블과 일대 다 관계에 질문 테이블과 일대 다 관계에서.

최근 고객이 그녀가 일부 이전 질문 (예. 당신이 담배를 구입합니까? 좋아하는 담배 브랜드 무엇 다음에 할 것으로 하나의 특정 답을 준 사람들에게 어떤 질문을 표시 할 수있는 기능을 원하는 실현? 두 번째 질문의 아무 소용이 없다 비 흡연자에 대한 질문).

지금은 내 데이터베이스 스키마의 관점에서이 조건 질문을 구현하는 가장 좋은 방법 일 것입니다 무슨 궁금해하기 시작? 질문 A는이 가능한 대답이있는 경우 : A와 B, 그리고 대답이 있다면 질문 B는 사용자에게 표시해야합니까?

편집 : 내가 무엇을 찾고 있어요 것은 데이터베이스의 요구 사항에 대한 그 정보를 저장하는 방법입니다. 내 SQL 실력이 형편으로 데이터의 처리는 아마, 응용 프로그램 측에서 수행됩니다)

해결법

  1. ==============================

    1.마지막 업데이트 : 2015년 5월 3일 https://github.com/durrantm/survey에서 사용할 수 다이어그램 및 SQL 파일

    마지막 업데이트 : 2015년 5월 3일 https://github.com/durrantm/survey에서 사용할 수 다이어그램 및 SQL 파일

    이 (위) 답 또는 요소를 사용하는 경우, 개선 사항에 대한 피드백을 추가하십시오!

    이것은 수천에 의해 수행 진정한 고전이다. 그들은 항상 함께 시작하지만, 실제로는 꽤 복잡 좋은 것으로 '매우 간단'것 같다. 이렇게하려면 레일에 나는 첨부 된 그림과 같이 모델을 사용합니다. 나는 확실히 그것을 통해 일부 복잡한 방법으로 보인다 해요,하지만 당신은이 중 몇 가지를 구축 한 후, 지난 몇 년 동안, 당신은 가장 잘에서 동적 유연한 데이터 구조에 의해 해결, 디자인 결정의 대부분은 매우 고전적인 패턴이 실현 시초. 자세한 내용은 아래 :

    그것은 사용자가 실제 응답을 캡처로 답변 테이블은 매우 중요하다. 당신은 question_options하지 질문에 그 답변의 링크를 알 수 있습니다. 이것은 의도적 인 것입니다.

    input_types는 질문의 유형입니다. 각 질문은, 예를 들어, 1 개 유형이 될 수 모든 라디오 다이얼,에 대한 (예를 들어) 5 라디오 다이얼과 1 개 확인란이있는 경우 모든 텍스트 필드 (들) 등을 사용하여 추가 질문은 "포함되어 있습니까?" 옵션 또는 일부 등의 조합. 사용자의 두 가지 질문이 두 가지 질문, 라디오 다이얼 하나, 체크 상자 하나를 하나로 볼 수는 있지만 내부적으로이 레이블을 지정합니다. 체크 박스는이 경우 하나의 그룹이있을 것이다.

    option_groups 및 option_choices는 '일반'그룹을 만들 수 있습니다. 한 예로, 부동산 응용 프로그램에 문제가있을 수 있습니다 '재산이며 몇 살?'. 대답은 범위에서 원하는 될 수 있습니다 1-5 6-10 10-25 25-100 100 +

    인접한 부동산 세에 대한 질문이있는 경우, 예를 들어, 설문 조사는 같은 option_group 및 옵션이 익숙해 그래서, 상기 범위 '재사용'로 할 것입니다.

    이 소리 units_of_measure이다. 그것은 인치, 컵, 픽셀, 벽돌 또는 무엇을하든, 당신은 한 번 여기를 정의 할 수 있습니다.

    참고 : 자연의 일반적인하지만, 일이 위에 응용 프로그램을 만들 수 있으며,이 스키마는 각 테이블의 기본 키 "ID"로 규칙과 루비 레일 프레임 워크에 매우 적합하다. 또한 관계는 모든 단순 one_to_many 더 many_to_many와 나 has_many이 필요 스루 있습니다. 스루 및 / 또는 : 나는 아마 has_many을 추가 개인 대답은 쉽게 without.multiple.chaining에서 survey_name 같은 것들을 얻을 대표하지만.

  2. ==============================

    2.또한 / 받아들이는 이들의 구문 분석, 복잡한 규칙에 대해 생각하고 질문 표에 문자열을 기반으로 조건 필드를 가질 수있다 :

    또한 / 받아들이는 이들의 구문 분석, 복잡한 규칙에 대해 생각하고 질문 표에 문자열을 기반으로 조건 필드를 가질 수있다 :

    어디에서 A (X) = Y 수단 "질문의 대답 X Y입니다"와 C (x는) 질문 x의 조건 (기본값은 사실이다)을 의미합니다 ...

    질문은 주문 필드가, 당신은 조건이 FALSE이다 질문을 건너 뛰는, 하나 하나에 의해 그들을 통해 갈 것입니다.

    이것은 당신이 당신의 GUI가 자동으로 "단순 모드"에서 다음을 만들고과 사용자가 직접 수식을 입력 할 수 있습니다 "고급 모드"허용 할 수 원하는 복잡성의 조사를 허용해야합니다.

  3. ==============================

    3.한 가지 방법은 필드 테이블 '질문 요구 사항'을 추가하는 것입니다 :

    한 가지 방법은 필드 테이블 '질문 요구 사항'을 추가하는 것입니다 :

    당신이 특정 질문을 제기하기 전에 응용 프로그램에서 당신은이 표를 확인하십시오. 별도의 테이블로, 그것은 쉽게 답 필요한 부가하는 것 (또 다른 행을 추가를 "때로는"등의 답변을 ...)

  4. ==============================

    4.개인적으로,이 경우에, 나는 당신이 설명 된 구조를 사용하는 것이며, 바보 저장 메커니즘으로 데이터베이스를 사용합니다. 나는 응용 프로그램 계층에 이러한 복잡하고 dependend 제약을 가하고의 팬입니다.

    개인적으로,이 경우에, 나는 당신이 설명 된 구조를 사용하는 것이며, 바보 저장 메커니즘으로 데이터베이스를 사용합니다. 나는 응용 프로그램 계층에 이러한 복잡하고 dependend 제약을 가하고의 팬입니다.

    나는 다른 사람에게 외래 키를 가진 모든 질문에 대한 새 테이블을 구축하지 않고 이러한 제약 조건을 적용 할 수있는 유일한 방법은, 이러한 제약을 적용 할 빌드 데이터베이스 트리거에 T-SQL 물건 또는 다른 공급 업체의 특정 메커니즘을 사용하는 것입니다 생각합니다.

    응용 프로그램 수준에서 당신은 훨씬 더 가능성 있고 난 그 옵션을 선호 그래서, 포트 쉽습니다.

    나는이 앱 전략을 찾는 데 도움이되기를 바랍니다.

  5. from https://stackoverflow.com/questions/540885/what-mysql-database-tables-and-relationships-would-support-a-qa-survey-with-con by cc-by-sa and MIT license