2012-08-31 56 views
0

我在管理數據庫方面頗爲陌生,但我對自己想要完成的教學需求有了一個想法。爲我的學生設計數據庫

我打算在一些學生中存儲有關英語技能水平的信息。我計劃讓每個學生登錄到數據庫。一旦出現,他們應該可以通過選中與特定問題相關的方框來評估自己的技能。

我有7個不同的類別,都包含一些問題。最重要的是,每個類別分爲6個不同的級別。例如,聽力理解具有A1,A2,B1,B2,C1,C2等級。每個級別代表不同的英語水平。這些類別都有一系列不同的問題。比如說,「我可以理解,如果有人說得慢一點,並使用清晰的語言。」

每個類別中的每個問題也有三個複選框。一個是學生可以檢查他們是否可以針對具體問題回答「是」,一個是我(老師)在我確認他們可以時檢查,另一個是學生填寫的複選框,如果問題是他們的目標喜歡達到。

到目前爲止,我已經爲學生創建了一個表格,列出了包含大量問題的每個類別的所有7個類別和一個表格。我還有一個與學生表和類別列表相關的「走過去」表,因爲直接鏈接它們會是我假設的多對多關係。

這是一個明智的設計這樣的數據庫的方式嗎?

我現在最大的問題是如何將複選框添加到組合中。它們應該作爲單獨的表格添加,還是應該將它們與問題放在類別表中?顯然,他們應該與每個學生以及每個問題相關聯。

我還沒有開始在不同的水平,因爲我認爲我應該使它與第一個級別的工作,然後添加所有其他級別。

感謝您耐心閱讀。我希望我已經足夠清楚,以便有可能幫助我。

+0

這在創建表的可視化表示是一個看似複雜的話題。總之,你的設計存在問題。每個類別及其問題的表格都是設計的噩夢。當你添加類別時,你會添加表格......但是,不要去閱讀對你的設計的批評,你可能會花更多的時間去熟悉其他人提出的解決方案:請參閱Michael Durrant的回答http://stackoverflow.com/問題/ 540885 /數據庫設計調查系統 – gangreen

+0

好的,謝謝你的評論。 它可能會更好地把所有的問題放在同一個表中,並給每個唯一的類別ID?當我添加更多關卡時,我會添加一個表,其中包含ID鏈接到較大表中每個問題的級別列表。 這是有道理的嗎? –

回答

1

也許對我的判斷,我會張貼此作爲一個答案......

我創建了一個簡單的數據庫結構,並插入根據您的要求的一些數據。您可以在這裏查看:http://www.sqlfiddle.com/#!3/54a2d/3

這種結構非常僵化,以至於添加簡單功能相當困難(從頭開始建議)。

例如,如果沒有對模式進行重大修改,您無法針對「您學習英語多少年」這個問題得到正確答案,您無法重新評估學生,學生無法澄清答案等。

記住 - 任何時候當你開始添加列以適應新的功能時,你的頭上應該有一個無聲的喊叫,告訴你你(可能)做錯了。閱讀有關規範化。

此外,我不知道複選框是否會導致許多客戶端/服務器組合出現問題,但是在帶有SQL Server後端的MS Access中,您需要添加TIMESTAMP列,以便Access可以確定記錄是否已更改在提交更新之前。

UPDATE

新增的SQL小提琴鏈接

enter image description here

+0

好的,我可能會對這個錯誤我不知道。你說我的設計是一場噩夢,所以我必須假設我設計得很糟糕。我當然不介意批評,因爲我認爲這是一個學習的機會。 我想完成的是每個學生都可以用兩種方式檢查每個問題。他們要麼檢查「我可以做這個盒子」,要麼「我想學習這個盒子」。作爲老師,我希望能夠檢查「I-confirm-that-the-student-know-this」框。 –

+0

目標是能夠看到每個學生的語言水平和他們想要改進的內容,以便我可以爲每個學生創建有意義的作業。 你會如何去創造這個? –

+0

你有沒有機會看看我發佈的鏈接?我只是添加了模式的可視化表示。如果我理解正確,這是滿足您的需求的最簡單方法之一。如果你確信你的要求不會改變,那麼這個設計可能會很好地工作。你可能永遠不會長大。但是如果你這樣做,我建議你重新審視這個主題,而不是通過修改這個設計來增加功能。作爲開始,試着瞭解爲什麼添加沒有嚴格的yes/no答案的問題會很困難。 – gangreen