[英]What is a good mySQL database design for multiple rankings?
我正在嘗試找出設計允許用戶對許多項目進行排名的數據庫的最佳方法。
這些項目按所有用戶排名。
每一項都會在開始時自動分配一個等級。 因此,當我創建用戶時,排名表將自動填充。
所以像這樣:
users (id, name) - 100,000+ entries
items (id, name) - never more than 1,000 entries
我目前唯一能想到的排名是:
rankings (id, user_id, item_id, ranking)
但這感覺不對,因為我在rankings
表中將有1億個條目。 我不知道可以嗎? 我還能使用什么其他選項?
每個用戶都可以為每個項目分配零或一個排名嗎? 還是她可以為給定項目分配多個排名?
如果為零或一,則您的排名表應包含這些列
user_id INT
item_id INT
ranking INT
主鍵應該是組合鍵(user_id, item_id)
。 對於同一用戶,這將不允許對同一商品進行多個排名,並且效率很高。 在此表上放置單獨的ID是不正確的事情。
為了提高查詢效率,我建議您還創建覆蓋索引(user_id, item_id,ranking)
和(item_id, user_id, ranking)
。
如果您可以讓成千上萬的用戶對所有1000項進行排名,那就太好了。 這是任何Web應用程序開發人員都希望擁有的問題。
該表的行相當小,使用我提到的索引,它在較小規模和添加用戶時都應具有良好的性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.