2011-12-05 22 views
1

我創建一個音樂分享網站,讓每個用戶都可以建立自己的帳戶,添加歌曲等。正確的方法來規劃我的數據庫

我想補充的能力,爲用戶給點基於他們是否喜歡這首歌而彼此相愛。

例如,user1在他的收藏中有一些歌曲,user2喜歡一首歌,所以他點擊「我喜歡」,導致給user1一個點。

現在我想知道在我的數據庫中創建「點表」的想法是否有點正確和正確。

我決定創建一個單獨的表來保存關於點的數據,這個表會有ID列,誰給了誰,歌曲ID列,日期列等。我的關注點是,在我的表中我將有一個爲每個已經給出的單個點排。

當然,擁有所有這些具體信息是很好的,但我不確定這是否是正確的方式,或者我正在浪費資源,空間......等等。

也許我可以重新設計我的歌曲表格來增加專欄的分數,而且我只會計算每首歌曲有多少分。

我需要這方面的一些建議,也許我真的不應該擔心自己的設計,optimalization活性和可擴展的,因爲今天的技術是如此之快,功能強大和數據庫查詢是即時的快速..

回答

3

IMO,它的更好使用交易表來跟蹤基於他們的歌曲列表給予用戶的分數。考慮Stackoverflow(SO)是如何工作的,如果您對問題或解決方案進行投票表決,您可以稍後刪除您的投票,如果SO使用了彙總列,則不可能支持這種類型的功能。

我不會過多地關注點表中的行數,因爲它可能會非常窄,慷慨;最多10列。更何況該表將是用戶之間的數據透視表,因此主要由int值組成。

+0

好的,這就是我想聽到的:) –

+0

太棒了,所以我就是這麼想的。 – Aaron

1

問題的一部分非常簡單。如果您需要知道

  • 誰給點
  • 爲這首歌
  • 同日

,那麼你需要記錄所有的信息。

不是那麼簡單嗎?

如果你只有需要知道總數,那麼你可以只存儲總數。

至於規模,比如說你有20,000個用戶,每個用戶平均有200首歌曲。比方說,十分之一得到任何最後的選票,平均每首歌30首。這是400萬用戶歌曲;起價400,000,每首歌曲30首,你有1200萬行。那並不是那麼多。如果表格中的行數太多,對「誰」進行分區會加速很多事情。

相關問題