【问题标题】:Storing Different Types of Questions and Answers in a Relational Database在关系数据库中存储不同类型的问题和答案
【发布时间】:2012-02-24 14:50:53
【问题描述】:

我有三类问题:

  1. 词汇(由question:answer 对表示)
  2. 语法(由question:[list, of, answers]表示)
  3. 收听(由question:answer 表示——其中值为.oog/.wav 音频文件)。

我在这里避免使用 key:value 这个词,因为我不确定字典是否可以存储音频。

我的问题:

如何将这组表格建模为可管理的设计?

languages         lessons        lesson_types
=========         ========       ============
lang_id           lesson_id      lt_id
lang_name         lang_id        lt_name
                  lesson_name    lt_desc
                  lt_id

这就是最简单的部分。

我难以理解的部分是我如何在 python 中序列化不同类型的对象以克服每种类型的问题提出的差异。在严格的、仅限 DBMS 的方法中,我会为每种类型的问题使用单独的表(因为 BLOB 保存音频,语法问题可以有多达十几个部分来描述其时态、性别等)。我很高兴看到sqlalchemy 在简化数据库结构方面能够做些什么。

我该如何设计一个questions 表来处理字典以及为可序列化、sqlite3 友好的音频格式?

【问题讨论】:

    标签: python database-design sqlite sqlalchemy


    【解决方案1】:

    表 Questions (question_id, question_text)、表 Answers (question id, answer_text) 和表 Audio_Answers (question_id, audio_blob) 有什么问题? (即:每个答案行包含一个问题ID和一个答案。如果一个问题有多个答案,则该问题的答案表将有多个条目。这以完全相同的方式应用于 Audio_Answers 表。)

    这将使您能够以最大的灵活性对所有三种类型的问题进行建模。可以以完全相同的方式处理具有单个或多个答案的问题。两个答案表包含所有答案,每行一个答案。

    【讨论】:

    • 那么我应该为grammar_answers 准备一张桌子,你觉得呢?我设计了一个跳过数据库的原型,我最大的问题是对各种变位的全面覆盖......我最终得到了一个列表,随着我探索更多使用相同动词的方法,该列表不断获得越来越多的 Null 部分。
    • @Droogans:不,这种结构的重点是可以以完全相同的方式处理具有单个或多个答案的问题。两个答案表包含所有答案。
    • 那么,一个以字符分隔的值列表会进入与简单词汇答案相同的答案表中吗?
    • @Droogans:绝对不是!每行包含 一个 问题 ID 和 一个 答案。如果一个问题有多个答案,则该问题的答案表将有多个条目。
    • 我给了你接受的答案,但只有时间会证明你的建议是否成功。看起来不错……但是数据库设计问题很难。除非你去做,否则永远无法找到答案。谢谢!
    猜你喜欢
    • 2011-03-15
    • 1970-01-01
    • 2022-07-25
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    相关资源
    最近更新 更多