0

夜、

私はデータベースのトレーニングを受けていません、そして私は少し迷っています。

基本的に私はこのデータを持っています:

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

screen_shot_nデータを保存するための最良の方法は何ですか?

シリアル化されたアレイを使用しようとしていますか?または、別のテーブルを作成してそこに保存する必要がありますか?ところで、30kの「ゲーム」があります

とにかく助けになるなら、私はPHPとMySQLを使用しています...

4

4 に答える 4

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";
于 2012-06-13T13:10:39.423 に答える
1

MySQLに画像を保存することは良い考えではありません。ゲーム名とゲームIDのマスターテーブルを保持してから、ゲームIDとタイムスタンプ(オプションのランダムキーを使用)を別のテーブルに保存することをお勧めします。スクリーンショットをtimestamp.jpgの形式でフォルダに保存します

于 2012-06-13T13:10:40.940 に答える
0

ビンタイプのフィールドを作成し、そこにデータを保存する必要があります。

バイナリデータですが、ローカルストレージを使用して、DBからリンクするだけですか?

ディレクトリを保護し、PHPでコンテンツをストリーミングするために.htaccessすることができます。

于 2012-06-13T13:10:04.613 に答える
0

それらを別々のテーブルに保管してください。このようなもの:

表1:GameInfoフィールド:gameid int、nameofgame varchar(X)

表2:GameScreenShotsフィールド:ID int、gameid int、screenshotimage ??(X)

ゲームテーブルのスクリーンショットを参照できるように、テーブルにIDを設定する必要があります。IDにゲームの名前を使用するのは難しい場合があるため、整数にすることをお勧めします。スクリーンショットの実際の画像を保存するか、画像へのリンクを保存するかによって、screenshotimageフィールドのタイプが決まります。

于 2012-06-13T13:10:41.750 に答える