2012-06-13 164 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字段的类型。

相关问题