2012-02-01 72 views
1

我有三个类型的问题:存储的问题和答案的不同类型的关系数据库

  1. 翻译(由question:answer对表示)
  2. 语法(question:[list, of, answers]表示)
  3. 听力(表示为question:answer - 其中value是一个.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

问题表(question_id, question_text),表答案(question id, answer_text)和一张表Audio_Answers (question_id, audio_blob)? (即:每一个回答行包含一个问题id和一个答案在一个问题有多个答案,将有多个条目对这一问题的回答表这适用于完全相同的方式向Audio_Answers表。)

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

+0

那么我应该去一个'grammar_answers'表,你觉得呢?我设计了一个跳过数据库的原型,而我最大的问题是各种变形的全面覆盖......我结束了一个列表,在我探索使用相同动词的更多方法时,获得了越来越多的“零”部分。 – Droogans 2012-02-02 22:36:36

+0

@Droogans:不,这种结构的重点在于可以用完全相同的方式处理单个或多个答案的问题。这两个答案表包含所有答案。 – Marcin 2012-02-02 22:39:37

+0

那么,一个以字符分隔的值列表会进入简单词汇答案所做的相同答案表中? – Droogans 2012-02-02 22:41:17

相关问题