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

Python 在关系数据库中存储不同类型的问题和答案,python,database-design,sqlite,sqlalchemy,Python,Database Design,Sqlite,Sqlalchemy,我有三类问题: Vocab(由问题:答案对表示) 语法(由问题:[列表,of,答案]表示) 倾听(由问题表示:回答——其中值是.oog/.wav音频文件) 我在这里避免使用术语key:value,因为我不确定字典是否可以存储音频 我的问题: 如何将这组表格建模为可管理的设计 languages lessons lesson_types ========= ======== ============ lang_id le

我有三类问题:

  • Vocab(由
    问题:答案
    对表示)
  • 语法(由
    问题:[列表,of,答案]
    表示)
  • 倾听(由
    问题表示:回答
    ——其中值是
    .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
    在简化数据库结构方面能做些什么


    我如何设计一个能够处理字典和可序列化的、sqlite3友好的音频格式的
    问题
    表呢?

    表格问题
    (问题id,问题文本)
    ,表格答案
    (问题id,答案文本)
    ,表格音频答案
    (问题id,音频blob)
    ?(即:每个答案行包含一个问题id和一个答案。如果一个问题有多个答案,则该问题的答案表中将有多个条目。这与音频答案表的应用方式完全相同。)


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

    表格有什么问题?
    (问题id,问题文本)
    ,表格回答
    (问题id,答案文本)
    ,一个表Audio\u Answers
    (问题id,Audio\u blob)
    ?(即:每个答案行包含一个问题id和一个答案。如果一个问题有多个答案,则该问题的答案表中将有多个条目。这与Audio\u Answers表的应用方式完全相同。)


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

    那么我应该使用一个表来显示
    语法\u答案
    ,你认为呢?我设计了一个跳过数据库,我最大的问题是对各种变化的全面报道……当我探索更多使用相同动词的方法时,我得到了一个不断增加的
    Null
    部分的列表。@Drogans:不,这种结构的要点是,有一个或多个答案的问题可以准确地处理同样的方法。两个答案表包含所有答案。因此,一个以字符分隔的值列表进入同一个答案表,就像简单的vocab答案一样?@Droogans:绝对不是!每行包含一个问题id和一个答案。如果一个问题有多个答案,那么该问题的答案表中将有多个条目。我给了你答案答案是可以接受的,但只有时间才能证明你的建议是否成功。看起来不错……但数据库设计问题很难回答。除非你这么做,否则永远都无法找到答案。谢谢!那么我应该为
    语法回答提供一个表,你认为呢?我设计了一个跳过数据库的原型,我最大的问题是随着我探索更多使用相同动词的方法,我得到了越来越多的
    Null
    部分。@Drogans:不,这种结构的要点是,具有单个或多个答案的问题可以用完全相同的方式处理。两个答案表包含了所有的他回答。那么,一个以字符分隔的值列表与简单的vocab答案放在同一个答案表中?@Droogans:绝对不是!每行包含一个问题id和一个答案。如果一个问题有多个答案,那么该问题的答案表中将有多个条目。我给了你接受的答案,但只有时间会告诉我如果你的建议成功了。看起来不错……但数据库设计问题很难解决。除非你这么做,否则永远没有办法找到答案。谢谢!