在关系数据库中存储不同类型的问题和答案
我有三种类型的问题:
- 词汇(用
问题:答案
的形式表示) - 语法(用
问题:[答案列表]
的形式表示) - 听力(用
问题:答案
表示,其中答案是一个.oog
或.wav
的音频文件)。
我在这里避免使用 键:值
这个术语,因为我不确定字典能否存储音频。
我的问题是:
我该如何把这些表格设计得更易于管理呢?
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 个回答
1
一个表格 Questions (question_id, question_text)
,一个表格 Answers (question_id, answer_text)
,还有一个表格 Audio_Answers (question_id, audio_blob)
这样设计有什么问题呢?(也就是说:每一行的答案表里只包含 一个 问题 ID 和 一个 答案。如果一个问题有多个答案,那么答案表里就会有多条记录对应这个问题。音频答案表也是一样的道理。)
这样的设计可以让你灵活地处理这三种类型的问题。不管是只有一个答案还是多个答案的问题,都可以用同样的方式来处理。这两个答案表里保存了所有的答案,每一行只对应一个答案。