ゲームマップに関する情報をMySQLデータベースに保存しようとしています。これを行うために、整数の配列を含む各マップのVARCHARフィールドを作成します。この整数の配列には、データベースに格納されているさまざまなグラフィック要素のIDに対応する1000個の数値が含まれる可能性があります。
たとえば、このような2D配列(3x3セルマップ)が含まれている場合があります。
1,1,4
2,5,6
1,1,1
その場合、このようなテーブルが私のデータベースにあります
tiles
id | file | desc | other data //...
1 grass.png a grass tile
2 water.png a water tile
ユーザーがデータベースにマップを照会するとき、2D配列と要素に関する情報を送信する必要があります。たとえば、配列に数値2が含まれている場合、ID 2のセルはウォータータイル、ファイル名water.pngなどとして描画する必要があるという情報を返す必要があります。
これを効率的に実装するにはどうすればよいですか?phpで配列全体を調べて、一意のID値を取得し、後でデータベースに情報を再度クエリする必要はありません(私には非効率的です)。
4,1,2,5,6
2D配列が変更されるたびに更新される形式で、一意のIDを含む別のフィールドを作成することを考えていました。これが良い考えである場合、どうすればそれを使用してクエリを実行できますか?以下のようなものは私にはうまくいかないようです
SELECT * FROM tiles WHERE id IN ( SELECT unique_ids FROM mapInfo WHERE id = ..)