在关系数据库中存储不同类型的问题和答案

时间:2012-02-01 22:05:29

标签: python database-design sqlite sqlalchemy

我有三种类型的问题:

  1. Vocab(由question:answer对代表)
  2. 语法(由question:[list, of, answers]表示)
  3. 倾听(由question:answer代表 - 其中值为.oog / .wav音频文件。
  4. 我在这里避免使用术语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友好的音频格式?

1 个答案:

答案 0 :(得分:1)

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

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