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
问题:答案对表示)
问题:[列表,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和一个答案。如果一个问题有多个答案,那么该问题的答案表中将有多个条目。我给了你接受的答案,但只有时间会告诉我如果你的建议成功了。看起来不错……但数据库设计问题很难解决。除非你这么做,否则永远没有办法找到答案。谢谢!