2012-06-13 163 views
0

傍晚,將數據存儲在MySQL數據庫中的最佳方式

我沒有在數據庫中進行培訓,而且我有點迷路。

基本上我有這樣的數據:

Game 
    name_of_game varchar(?); 
    screen_shots ? 
     screen_shot_1 
     screen_shot_2 
       ... 
     screen_shot_n 
/Game 

什麼是存儲screen_shot_n數據的最佳方式是什麼?

我嘗試使用序列化數組嗎?或者我需要嘗試製作另一張桌子並將其存儲在那裏?順便說一句,有30K「遊戲」

我使用PHP和MySQL如果願意幫助反正...

+0

'screen_shot_n'是什麼?沒有屏幕截圖? – sephoy08

+0

您需要閱讀「主鍵」,「外鍵」和「主從關係」。 – Simon

+0

另外,你是否在意知道哪個用戶做了屏幕截圖?這會增加一點複雜性 – Randy

回答

3

我可能會使用一個單獨的屏幕截圖表。

遊戲臺

game_id integer 
name varchar 

截圖表

screenshot_id integer 
game_id integer 
screenshot varchar <--- a file name (or a blob or however you are storing the screenshot) 

然後你就可以找到遊戲中的截圖:

SELECT * FROM screenshots WHERE game_id="123"; 
+0

我認爲這是我查詢的最佳建議。 對於給定數據庫應該有的表的數量是否存在「限制」? 因爲這是一個小例子,我在'遊戲'中有其他的領域需要同樣的關注'截圖'。 – Adola

+0

如果您在mysql中遇到表限制,您可能需要更改進一步優化模式或使用其他數據庫。 – jasonlfunk

0

您將需要創建一個倉位類型的字段,並存儲數據在那裏,

雖然它的二進制數據,也許只是使用本地存儲,只是從數據庫鏈接到它?

你可以.htaccess它來保護目錄並用PHP流內容。

1

存放在MySQL的圖象不爲良好理念。我建議你爲遊戲名稱和遊戲ID保留一張主表,然後在另一個表中存儲遊戲ID和時間戳(使用可選的隨機密鑰)。將屏幕截圖以格式存儲在文件夾中。timestamp.jpg

0

將它們存儲在單獨的表中。是這樣的:

表1:的GameInfo字段:遊戲ID INT,nameofgame VARCHAR(X)

表2:GameScreenShots字段:ID INT,遊戲ID INT,screenshotimage ??(X)

你」我們希望桌上有ID,所以你可以參考遊戲桌上的屏幕截圖。我會建議他們是整數,因爲使用ID的遊戲名稱可能會非常棘手。取決於您是否存儲屏幕截圖的實際圖像或指向圖像的鏈接將決定您的screenshotimage字段的類型。

相關問題