sql >> Database >  >> RDS >> PostgreSQL

django quiz-app-model voor meerkeuzevragen

Voor een correct genormaliseerd relationeel databaseschema wilt u een duidelijke Choice model met een externe sleutel op Question :

class Question(models.Model):
    question = models.CharField(...)

class Choice(models.Model):
    question = models.ForeignKey("Question", related_name="choices")
    choice = modelsCharField("Choice", max_length=50)
    position = models.IntegerField("position")

    class Meta:
        unique_together = [
            # no duplicated choice per question
            ("question", "choice"), 
            # no duplicated position per question 
            ("question", "position") 
        ]
        ordering = ("position",)

En dan kun je bij een Question . komen 's keuzes met myquestion.choices.all() (en haal de vraag uit een Choice met mychoice.question ).

Houd er rekening mee dat dit geen beperking oplegt aan het aantal keuzes voor een vraag, zelfs niet dat een vraag ten minste één gerelateerde keuze heeft.

Tenzij je een zeer dwingende reden hebt om het anders te doen, is een goed genormaliseerd schema wat je wilt als je een relationele database gebruikt (rdbms zijn veel meer dan alleen bitbuckets, ze bieden veel van handige functies - zolang je maar een goed schema hebt).



  1. Converteer 'datetimeoffset' naar 'time' in SQL Server (T-SQL-voorbeelden)

  2. Hoe het aantal rijen in een tabel in SQL te tellen

  3. Foutmelding bij het invoegen van blob-gegevenstypewaarde in mysql-tabel

  4. Oracle - Beste SELECT-instructie om het verschil in minuten tussen twee DateTime-kolommen te krijgen?