2012-10-02 14 views
5

Mam więc formularz HTML, w którym użytkownicy mogą odpowiedzieć na pytania jednokrotnego wyboru, zaznaczając jedną z trzech gotowych odpowiedzi lub wpisując własną odpowiedź.Projektowanie baz danych dla pytań związanych z ustawieniami wstępnymi/niestandardowymi

Chociaż jest to oczywiście relacja wiele do wielu, nadal nie mogę znaleźć właściwego sposobu projektowania tabel bazy danych, aby obsłużyć oba typy (TEKST i BOOLEAN). Moje obecne, szybkie i brudne rozwiązanie polega na zakodowaniu na sztywno określonego parametru choice_id w tabeli połączeń w celu uzyskania niestandardowych odpowiedzi. Poszukuję lepszego wzoru do tego.

Odpowiedz

1

Mają następujące tabele:

Tabela 1 Question

QuestionID (ID) 
    QuestionText (Text) 

Tabela 2: Question Response

QuestionResponseId (ID) 
    QuestionResponseTypeId (References Question Response Type) 
    QuestionResponseDetailsId (References Question Response Details) - This should be used for text only values (Custom Answers) 
    QuestionResponse (Boolean) 

Tabela 3: Question Response Type

QuestionResponseTypeId (Id) 
    Description (Text) -- Dictates if the answer is a boolean or a text field 

Tabela 4: Question Response Details

QuestionResponseDetailsId (Id) 
    Description (Text) - Holds the text answer to the questions 

Kiedy Poniższe tabele są wypełniane będzie mieć strukturę, która posiada na pytanie, odpowiedź na pytanie (tekst lub logiczna).

Następnie można filtrować na to, aby wyświetlić tylko odpowiedzi tekstowych, na przykład:

SELECT * FROM QuestionResponse 
INNER JOIN QuestionResponseDetails ON QuestionResponse.QuestionResponseDetailsId = QuestionResponseDetails.QuestionResponseDetailsId 
WHERE QuestionResponse.QuestionResponseTypeId = 1 

Gdzie 1 jest odpowiedzią na podstawie tekstu i 2 jest odpowiedzią na podstawie Boolean (z pytania odpowiedzi typu tabeli)

0

If I were you, chciałbym zrobić coś takiego:

Table Answers: 
question_id INT(11) 
answer_id INT(11) 
preset_answer TINYINT(1) //1, 2, 3 for three answers 
custom_answer VARCHAR(255) 
Powiązane problemy