2010-11-23 222 views
0

另一個數據庫中的結構化問題,希望你們不介意:d需要建議:MySQL數據庫結構

我有我的網站上該視頻競猜,用這種流:

  1. 觀衆將觀看視頻
  2. 特定的視頻連接到它
  3. 一個問題,它也有兩個問題,其中一個是假的,當然還有另一種是真正的

到目前爲止,我已經想通了,兩臺數據庫設計這個

第一個1是:

table: video 
fields: id, filename, type, size, created 

table: question 
fields: id, question, right_answer, wrong_answer, video_id 

:第二個,我分離的問題,並在每個不同的表答案

table: video 
fields: id, filename, type, size, created 

table: question 
fields: id, video_id, question 

table: answer 
fields: id, answer, video_id, status 

答案表中的狀態字段用於指示答案是正確還是錯誤,可能使用tinyint的值爲0和1

哪一個你會推薦我作爲一個更好的方法,爲什麼,因爲我不真正理解數據庫規範化,有沒有什麼容易理解的文章,以便我可以提高我的知識,任何幫助將不勝感激感謝

問候

更新:

謝謝大家的指出我的數據庫設計一個更好的方法,因爲每個人都建議我應該使用布爾或位的字段類型,我總是在之前使用tinyint這樣的字段:p,所以我搜索一個解決方案,我應該是什麼類型在MySQL中代表布爾值,我偶然發現Which MySQL Datatype to use for storing boolean values from/to PHP?並根據問題的答案我應該使用tinyint(1),所以我想可以肯定地說我現在會繼續使用tinyint:p

再次感謝大家

回答

2

原諒ASCII碼,我提出以下建議:

VIDEO    Question    Answer 
|- id  1--.  |- id  1--.  |- id 
|- filename  '--* |- video_id  '--* |- question_id 
|- type    '- question   |- answer 
|- size         '- correct (bit, not tinyint) 
'- Created 

這讓你添加一個視頻多個問題,並多次回答每個問題的自由。另外,我建議使用一點(不是tinyint)標記「正確」的答案。我也試圖說明這種情況下按鍵的排列方式。

+0

如果我正在考慮進一步開發模塊的靈活性,這確實有道理,謝謝布拉德 – littlechad 2010-11-23 15:48:00

0

如果您打算添加更多的答案,然後採取第二種方式,否則使用第一種。

1

直覺上,我會選擇第一種解決方案,因爲無論如何,您很可能需要同時檢索兩個問題。順便說一句,如果你選擇第二個選項,那麼我會建議你爲「狀態」字段使用一個布爾值,而不是tinyint。