我真的只是一個業餘愛好者,他的願望太宏大了,我說,我正在試圖找出正確的方式來創建我的數據庫,以便數據庫更改不需要客戶端重構,但也很快。請回復,好像我不太瞭解典型開發或DBA術語。MySQL數據庫設計 - 特定案例,列或附加表格?
這種情況:我試圖確定每個用戶評價了多少本書。我認爲一本書額定如果有任意兩個以下的:
-Overall rating (ratings table)
-sub rating (ratings table)
-tag (book_tags table)
-list (book_lists table)
*Related tables: users, tags, lists
問題:我有10個評級和兩個總體收視率都在額定值表中,每一列中的(猜測這很糟糕,但不確定)。我是否應該有一個收視表(12行)和一個book_ratings表,其中收視表的每一行都是用戶的評分類型?
-e.g. book_ratings: id | user_id | book_id | rating_id
如果有,是什麼,如果有50萬本書,每本書12種分級類型,10,000個用戶,並在該book_ratings表一共有5個十億行會怎樣?這會跑超級慢嗎?另一個考慮是我可能希望在將來添加更多的子分級類型,這也是我認爲改變它可能很有價值的部分原因,但是這是很多工作,所以我想首先檢查。
謝謝!
任何機會,你可以指點我一些關於優化的信息?適合基本的東西?有一天,它真的放慢了速度,直到我在各種查詢中使用的所有字段都添加了索引,但即使這樣做也像一個在黑暗中漫步的盲人。理想情況下,如果情況良好,我希望擁有20萬用戶和100萬本書籍作爲數據庫的一部分(管道夢,但嘿:)。如果可能的話,我想知道如何提前計劃。 – 2012-04-06 01:56:30
優化這些東西是一種黑色藝術。我不熟悉MySQL,但在SQL Server中,您可以顯示查詢的「執行計劃」 - 即服務器執行查詢所執行的操作的細節,這對於優化非常有用,對於SQL Server它甚至直接建議應該添加哪些索引。我假設MySQL有類似的東西。 – MiMo 2012-04-06 14:12:21