Хранение различных типов вопросов и ответов в реляционной базе данных - PullRequest
1 голос
/ 02 февраля 2012

У меня есть три типа вопросов:

  1. Vocab (представлен question:answer парами)
  2. Грамматика (представлена ​​question:[list, of, answers])
  3. Прослушивание (question:answer - где значение представляет собой аудиофайл .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, чтобы преодолеть различия, предлагаемые каждым типом вопроса.При строгом подходе только к СУБД я бы использовал отдельную таблицу для каждого типа вопроса (поскольку BLOB-файлы содержат аудио, грамматические вопросы могут иметь до десятка частей для описания времени, пола и т. Д.).Я рад видеть, что sqlalchemy может сделать с точки зрения упрощения структуры базы данных.

Как можно разработать таблицу questions, которая может обрабатывать словари , а также как сериализуемые, sqlite3 дружественные аудио форматы?

1 Ответ

1 голос
/ 02 февраля 2012

Что не так с таблицей Вопросы (question_id, question_text), с таблицей Ответы (question id, answer_text) и с таблицей Audio_Answers (question_id, audio_blob)? (То есть: каждая строка ответа содержит один идентификатор вопроса и один ответ. Если на вопрос имеется несколько ответов, таблица ответов для этого вопроса будет содержать несколько записей. Это относится к точно такой же путь к таблице Audio_Answers.)

Это позволит вам смоделировать все три типа вопроса с максимальной гибкостью. вопросы с одним или несколькими ответами могут обрабатываться точно так же. В двух таблицах ответов содержатся все ответы, по одному ответу на строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...