2011-01-16 7 views
1

Ich entwerfe eine Datenbank, die Fragen, Antworten und Kategorien enthält.Struktur der Datenbank mit Fragen und Antworten

Eine Frage kann zu vielen Kategorien gehören, und eine Kategorie kann viele Fragen haben. Diese Beziehung ist also ein Viele-zu-Viele.

Eine Frage Tisch
Eine Kategorie Tabelle
Eine Tabelle Primärschlüssel der beiden Tabellen oben

So jetzt meine Frage enthalten ist, ist es notwendig oder „besser“ Antworten zu speichern (a, b, c , d, e) in einer eigenen Tabelle namens Antworten? Dann hat die Antworttabelle einen Fremdschlüssel für den Primärschlüssel in der Fragetabelle.

Oder sollte ich nur 5 Spalten in der Fragetabelle haben, die auch die Antworten mit der richtigen Antwort enthalten?

Nach dem, was ich gelesen habe, ist es nicht normal, eine Eins-zu-Eins-Beziehung zu haben.

Vielen Dank im Voraus!

Antwort

4

Eine separate answers Tabelle erstellen. Es gibt zwei Vorteile:

  1. Es passt in relational Paradigma - eine Frage mit vielen Antworten verbunden.
  2. Sie Flexibilität haben, falls, wenn Optionen für Antworten jenseits 5.

Die Antworten geht Tabelle sollte wie folgt aussehen:

ANSWERS 
    answer_id (PK) 
    answer_text 
    is_correct 
    serial_number 
    question_id (FK) 

Nun speichern Sie eine Antwort in eine Zeile ... und für Seriennummer (a, b, c .. oder 1,2,3 .. oder i, ii, iii, ... was auch immer) verwenden Sie serial_number Feld. is_correct zeigt auf richtige Antwort/s.

Sie können mehrere Antworten auswählen, indem

select * from `answers` where question_id = 123 order by serial_number asc 
+0

Danke, dass Sie ein wenig nachdenken und wissen, dass ich sehe, warum das besser und flexibler ist. – LuckyLuke

+0

@Andreas Johannessen hat weitere Details hinzugefügt – Nishant

+0

Ja, ich habe es gesehen. Viel geschätzt, danke! Jetzt ist meine Datenbank fertig :) – LuckyLuke

1

Wenn Sie sicher wissen, dass es immer genau Antworten geben werden (weder mehr noch weniger), dann ist es sinnvoll, sie Spalten in der Fragen Tisch zu machen. Es vereinfacht Ihren Nachschlagevorgang und ist in der Regel effizienter. Wenn Sie jedoch manchmal eine unterschiedliche Anzahl von Antworten haben oder in der Zukunft möglicherweise eine andere haben, sollten Ihre Antworten eine eigene Tabelle haben.

+0

Danke, nach einem zweiten Gedanken sehe ich jetzt, warum dieser Ansatz besser und flexibler ist. – LuckyLuke

Verwandte Themen