2011-03-31 18 views
0

行の参照配列を格納するにはどうすればよいですか?たとえば、オンライントレーディングカードゲームを作ろうとすれば、私はすべてのカードを持つテーブルを持ち、各プレイヤーはIDリファレンスのリストで表されるデッキを持っています。MySQL - 各行に参照配列を格納

+1

あなたのDBの設計が必要であることを警告、あなたの頭の中でオフに行く必要があり赤信号やクラクソンズを点滅、データベースの単一列の値の配列を格納するように誘惑している任意の時間より正常化されるべきである。 –

+0

@Christopher - あなたは、問題はデータベース設計にあり、実際にリレーショナルデータベースシステムに言語構造を格納しているわけではないことを認識していますか? –

+0

@Mickael、私は信じています。私は質問をあまりにも早く読んで、私の脳は正反対になった。私の悪い。 – Christopher

答えて

2

私はフィールドとしてcard_owner_idcard_idを使って、別の関係テーブルを作成します。それに応じて外部キーを設定すると、カードまたはユーザーが削除されたときに関係が自動的に削除されます。

+0

だから、私は 'SELECT * FROM cards WHERE card_id =(SELECT card_id FROM user_cards WHERE card_owner_id = $ user_id)'のようなものを使ってユーザーのカードを手に入れたいのですか? – nkorth

+0

あなたはそれらを得るために結合を使うことができます: 'SELECT c。* FROM cards AS C LEFT JOIN user_cards AS uc ON(uc.card_id = c.idとuc.card_owner_id = $ user_id)'。 – Kaivosukeltaja

0

プレイヤー用に1枚、カード用に1枚、デッキ用に1枚(playerIdとcardIdをリンクする)はどうですか?

1

2種類の溶液:

  1. あなたのPHPの配列をシリアル化し、あなたのテーブルのバイナリフィールドに格納します。
  2. このような関係を表現できるようにデータベースを設計します。「プレーヤーには複数のカードがあります。」Player(player_id);カード(card_id、player_id)
-1

各プレイヤーは「選手」テーブルに1つの行がある可能性があります。これらの行のそれぞれは、すべての可能なカードのそれぞれにフィールドを持つことができます。それらのセルのそれぞれは、当該カードを所有しているか所有していないかを示すために、真または偽とマークされてもよい。

そうでしょうか?

- ピート

+0

SOの投稿には署名しないでください。 –

+0

私は固定デッキサイズを持っていると思って、その多くのフィールドをユーザーテーブルに持っていると思っていましたが、それは本当に非効率なようでした。 – nkorth

関連する問題