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

1 投票
1 回答
655 浏览
提问于 2025-04-17 12:09

我有三种类型的问题:

  1. 词汇(用 问题:答案 的形式表示)
  2. 语法(用 问题:[答案列表] 的形式表示)
  3. 听力(用 问题:答案 表示,其中答案是一个 .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 和 一个 答案。如果一个问题有多个答案,那么答案表里就会有多条记录对应这个问题。音频答案表也是一样的道理。)

这样的设计可以让你灵活地处理这三种类型的问题。不管是只有一个答案还是多个答案的问题,都可以用同样的方式来处理。这两个答案表里保存了所有的答案,每一行只对应一个答案。

撰写回答