2014-06-05 1 views
0

의 내가 있다고 가정 해 봅시다 : 많은 답변이있을 것이다 각 질문에 대한간단한 설문 조사의 결과를 어떻게 모델링합니까?

enter image description here

enter image description here

을 (?이 OneToMany입니다) 답변은 단일 선택 (복수 통해 선택됩니다 선택). 주어진 질문에 대해 각 답변을 몇 번이나 선택했는지 알고 싶습니다. 사용자는 이러한 질문에만 한 번 대답 할 수 있습니다.

몇 가지 솔루션을 찾았습니다 (이 중 하나는 What mysql database tables and relationships would support a Q&A survey with conditional questions?과 같음). 그러나 지나치게 복잡해 보입니다. 이것은 매우 간단한 설문 조사입니다. 하위 정답, 차이 유형의 대답 없음, 다중 선택 없음.

내가 사용하려고 생각하는 것은 question_answer_user라고하는 중간 테이블이지만,이 테이블과 다른 테이블 사이의 관계는 확실하지 않습니다 (복합 기본 키입니까?). ORM으로 모델링 할 수 있도록 필자가 필요합니다. 이 지나치게 간단하게 보이지만, 내 머리가 완전히 당신이 대답에 질문의 기본 키 (ID)를 넣어 질문과 대답을 연결할 수있는 많은 관계로 하나 순간

답변

1

에 튀긴 경우

죄송합니다 외부 키로 테이블.

이 방법을 사용하면 특정 질문 ID로 모든 대답을 쿼리하여 주어진 질문에 대한 모든 대답에 액세스 할 수 있습니다.

사용자 통합 : 사용자가 각 질문에 한 번 대답 할 수 있다고 말합니다. 사용자는 많은 질문에 대답 할 수 있으며 많은 사용자가 질문에 대답 할 수 있습니다. 이 경우 질문의 ID와 사용자의 ID가있는 두 테이블 사이에 연결 테이블이 있어야합니다. 이 연관성을 통해 특정 사용자가 다른 관계를 횡단하여 각 질문에 대해 답변 한 것을 확인할 수 있습니다.

+0

문제는'Answer' 테이블에 사용자가 선택한 답변이 아니라 주어진 답변이 있다는 것입니다 ... 내 명명 규칙이 끔찍한 것이기 때문에 이해하기 쉬워야합니다. – Nimchip

+0

도움을 주셔서 감사합니다. 알아 냈습니다. – Nimchip

+0

'Question'과 다 대일 양방향 관계로'Results'라는 테이블을 추가했습니다. 이 테이블은'question_id','answer_id','user_id'를 가지며, 세 가지 관계는 다 대일입니다. 따라서 나는 그들 중 누구에게 대답을 확인하도록 질의 할 수있다. 다시 한번 감사드립니다! – Nimchip

0

일련의 질문 (예 : 'SQL에서 몇 년 동안의 경험이 있습니까?') 및 고정 된 답변 세트 (1-2,3-4,5)가있는 설문지를 작성하는 경우 -6,7-8) 다음은 훌륭한 테이블 디자인입니다.

questions 
id - longint (primary key) 
text - varchar (255) 

options 
id - longint (primary key) 
question - longint (foreign key to 'questions') 
displayorder - int 
text - varchar (255) (the text of the option) 

answers 
user - longint (foreign key to users' table) 
question - longint (foreign key to questions table) 
option - longint (foreign key to options table) 

답변 테이블이 주어진 질문에 대한 사용자의 대답을 기록, 사용자 당 질문 당 하나 개의 기록을해야합니다 (예를 들어, 사용자 # 3 옵션 # 4 질문 # 1 대답).

관련 문제