我正在 Django 上创建一个测试系统(一个带有问题和答案选项的测试)。目前数据库的架构如下所示:
TestName(id: pk, test_name : str)
TestQuestion(id: pk, question_title : str, test_id : foreign_key_to(TestName))
QuestionVariant(id: pk, variant_title: str, is_correct : bool, question_id : foreign_key_to(TestQuestion))
不知道是不是方便不断的join表,通过test_id和question_id过滤数据来显示测试数据。
您将如何解决这个问题以消除这种不便?
绑定和过滤不会造成任何不便——这不仅是一种常规做法,而且是处理数据的基本原则。所以这不仅是一个问题——以这种方式提出问题本身是毫无意义的。
请相信 - 数据库服务器是专门创建的,不仅可以不断地执行此类工作,而且可以尽可能高效地执行它。几乎所有帮助他的尝试都会适得其反。所以甚至不用理会这个。这里没有任何不便。
此外,作为一个很好的建议。不要
id为主键使用名称。使用您命名引用字段的表单中的字段名称。那些。和现在的test_id表,以及表中的主键。TestQuestionTestName首先,消除歧义。立即通过字段的名称就可以清楚地知道其中的内容(以及表别名 - 也就是确切的位置)。其次,
JOIN .. ON t1.id = t2.user_id你可以写一个更短更符合逻辑的代替JOIN .. USING (user_id)。