2012-06-13 7 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

Я думаю, что это лучшее предложение по моему запросу. Существует ли ограничение на количество таблиц, которые должна иметь данная база данных? Потому что это был небольшой пример, у меня есть другие поля внутри «Игры», которые требуют того же внимания «screenshot». – Adola

+0

Если вы столкнулись с лимитом таблицы в mysql, вам нужно либо изменить вашу дальнейшую оптимизацию схемы, либо использовать другую базу данных. – jasonlfunk

0

Вам нужно будет создать поля типа бен, и хранить данные там,

Хотя, будучи его двоичными данными, возможно, просто используйте локальное хранилище и просто ссылку на него из БД?

YOu может .htaccess защищать каталог и передавать содержимое с помощью PHP.

1

Сохранение изображений в MySQL не является хорошо идея. Я бы предположил, что вы держите основную таблицу для имени игры и идентификатора игры, затем храните идентификатор игры и временную метку (с необязательным случайным ключом) в другой таблице. Храните скриншоты в папке в формате timestamp.jpg

0

Храните их в отдельных таблицах. Что-то вроде этого:

Таблица 1: GameInfo Поля: GameID INT, nameofgame VARCHAR (X)

Таблица 2: GameScreenShots Поля: ID INT, GameID INT, screenshotimage ?? (X)

Вы» Я хочу иметь идентификаторы на столе, чтобы вы могли ссылаться на снимки экрана из игрового стола. Я бы рекомендовал им быть целым числом, так как использование названия игры для id может быть сложным. В зависимости от того, будет ли ваше изображение фактическим снимком снимка экрана или ссылкой на изображение, будет определяться тип поля вашего снимка экрана.

Смежные вопросы