sql >> データベース >  >> RDS >> PostgreSQL

多肢選択問題のdjangoクイズアプリモデル

    適切に正規化されたリレーショナルデータベーススキーマの場合、個別のChoiceが必要です。 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",)
    

    そして、Questionにたどり着くことができます。 myquestion.choices.all()でのの選択 (そしてChoiceから質問を取得します mychoice.questionを使用 。

    これは、質問の選択肢の数に制限を課すことはなく、質問に少なくとも1つの関連する選択肢があることを義務付けるものでもないことに注意してください。

    非常に説得力のある理由がない限り、リレーショナルデータベースを使用する場合は、適切に正規化されたスキーマが必要です(rdbmsは単なるビットバケットではなく、ロットを提供します。 便利な機能の-あなたが適切なスキーマを持っている限り、つまり)。



    1. .Net接続プールMySQL一時テーブル

    2. 手動で可能なクエリ内のPL/SQLの不十分な権限

    3. MicrosoftAzureでのPostgreSQLのフェイルオーバーとフェイルバック

    4. pgBouncerを使用してPostgreSQLの高可用性を実現する方法