2012-02-01 67 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

相關問題