2013-01-01 17 views
0

我正在創建一個數據庫,用於存儲用戶下載媒體文件的次數,以及用戶下載了哪些媒體文件(基於IP,無需登錄)。我只是不確定MySQL數據庫的正確結構。MySQL數據庫結構用於存儲哪些文件以及用戶下載的次數?

我已經擁有一個包含所有媒體文件的數據庫,因此計數不會成爲問題,但我也希望能夠看到誰下載了該文件。我將使用PHP來檢索內容,但我不確定如何最有效地獲取它。因此,像:「 XYZ.mp3有20個下載[IMN CMS] 點擊 XYZ.mp3已經1.2.3.4四次,其他16個IP地址下載」

另外,我希望能夠看到1.2.3.4已經收聽了XYZ.mp3四次,而HWM.mp3收到了一次,...等。

此外,我最終想知道他們已經收聽了多少mp3文件至。 (在我的網站上有一個內置的播放器)我也希望這是我能看到的地方,很多人基於這個文件聽了這麼多,或者這個用戶已經聽過這個文件。

我知道如何計算,如前所述,但我不確定如何最有效地構建第二部分,以便可以快速收集數據。

此外,文件數量每週都呈線性增長,最終將成爲一個非常大的數字,所以我不確定是否有200列(現在)根據需要擴展是要走的路?我不期望有龐大的用戶羣,但你永遠不知道。我不想以後重組和重新編碼,因爲它確實如此。

感謝您的幫助,讓我知道如果您有任何問題。

+2

請記住,隨着時間的推移,不同的用戶可能會使用相同的IP地址來下載文件。因此,您不僅需要存儲IP,還需要在發生的時間範圍內(例如,如果您還沒有用一些隨機令牌cookie識別用戶)。 – hakre

+1

200列!?什麼? – ethrbunny

+0

@hakre,這是一個好主意。 – David

回答

1

如果是我的話我有3個表:

  1. 連接 - 保持IP和會話ID有一些獨特的連接ID。
  2. 下載 - 保留文件ID和連接ID。這可讓您知道文件已下載多少次以及通過哪個連接。
  3. 播放 - 保留文件ID,連接ID和文件dl%。使用http partial content來跟蹤給定連接ID已播放每個文件的數量。

在這三者之間,你可以建立你所要求的數據。

+0

那麼連接表只會保存使用Cookie ID下載的用戶?如果有人清除他們的cookies,那我該如何處理?下載將保留什麼文件,什麼人,但是我如何正確記錄下300人下載了一個文件,同時仍然能夠快速發現1.2.3.4已經下載了該文件?我會做一個排序的文本字段嗎?如果分配的字符空間變得太小,該怎麼辦?遊戲似乎很簡單,但如果用戶下載不止一次,我該如何最好地記錄這些多個數字? – David

+0

會話var將來自PHP - 定義1.2.3.4與另一個的登錄。文件的每個dl都有一行。要計算一個文件的總數。要查找IP的總數,請按連接ID和計數進行連接。 – ethrbunny

+0

有沒有辦法能夠判斷一個人的cookies是否已被清除?或者最終可能會有來自同一個人的100位唯一訪問者?如果cookies被清除, – David

0

如果我是你,我會做到以下幾點:

我想給每個文件的ID號,其MySQL能夠自動遞增。

2.然後,我會創建另一個表,其中ip和用戶已下載的文件的id存儲。

希望這會有所幫助。

+0

好的,有道理,但我如何有效地記錄,1.2.3.4已經聆聽了20個文件?此外,我如何快速恢復他們在收聽XYZ.mp3的列表中? – David

+0

爲了解決這個問題,當你需要找出這個問題時,你可以編寫一個簡單的PHP程序來與mysql進行通信,以獲取1.2.3.4已經收聽的所有東西。但你打算如何處理這些信息呢?你打算在個人資料頁面上顯示信息嗎? –

+0

它只是用於跟蹤/觀察人們在聽什麼。 複製數據可能會更好嗎?因此,在用戶表中,1.2.3.4已經聽取了XYZ,ZYX,YZY,WHB,JPW,CDA ....然後在文件表中的每一個表中,我將對每個聽說過1.2.3.4的人給他們?那麼XYZ可能有1.2.3.4,5.6.7.8等等?我不喜歡有這樣的重複數據,但這會是最有效的方式嗎? – David

相關問題