我對與關係型數據庫一起工作相當陌生,但已經閱讀了幾本書並瞭解了優秀設計的基礎知識。mySQL效率問題 - 如何找到正常化的正確平衡......?
我正面臨設計決策,我不確定如何繼續。以下是我正在構建的一個非常簡化的版本:用戶可以對照片1-5進行評分,並且我需要顯示圖片上的平均投票數,同時記錄個人投票。例如,12人投1中,7人投2中,等等,等等
我正常化怪胎最初設計表結構是這樣的:
Table pictures
id* | picture | userID |
Table ratings
id* | pictureID | userID | rating
與所有設置的外鍵約束和一切因爲他們應該是。每次有人評價一張照片時,我都會在評分中插入一條新的記錄,並用它來完成。
要查找的平均評分的圖片大小,我只是運行是這樣的:
SELECT AVG(rating) FROM ratings WHERE pictureID = '5' GROUP by pictureID
有它設置這種方式讓我跑我看中的統計數據。我可以很容易地找到誰給某張照片評了一張3,而不是。
現在我想如果有一大堆評級(這是非常可能的,我真的在設計),發現平均會變得非常昂貴和痛苦。
使用非標準化版本似乎更有效。例如:
Table picture
id | picture | userID | ratingOne | ratingTwo | ratingThree | ratingFour | ratingFive
要計算平均值,我只需要選擇一行。看起來效率更高,但更加醜陋。
有人能指出我該做什麼的正確方向嗎?我最初的研究表明我必須「找到適當的平衡」,但我該如何去尋找這種平衡?任何文章或額外的閱讀信息也將不勝感激。
謝謝。
你有沒有遇到性能問題,或者你只是問嗎? – Pentium10 2010-03-21 08:32:52
我還沒有遇到性能問題。我只是不想設計出可能在高負荷下屈曲的東西。 – Foo 2010-03-21 08:36:56