0

クライアントが接続して「プレイ」できるカードゲーム用のJavaベースのサーバーを作成しています。各「ゲーム」(Java クラス) には、104 枚のカードのデッキ (通常のデッキの 2 倍) があります。取得した基本クラスは、Game、Deck、Card です。ゲームには 1 つのデッキがあり、デッキには最大 104 枚のカードがあります。Hibernate と PostgreSQL データベースを使用してサーバーの基本構造を作成しました。ここでの問題は、データベースをモデル化する方法です。

カードは 52 枚しかないため、「デッキ」テーブルのデッキに52 枚のカードを作成しても意味がありません。ただし、デッキをシャッフルする必要があります。これを行うためのスマートな方法があると思いますが、データベース モデリングは私の得意分野ではありません。

頭のてっぺんに、カードごとに 1 行、52 行のテーブル「カード」を 1 つ持つことができると思います。次に、ゲームが作成されるたびに行を作成し、Card テーブルで各カードの ID を 2 回参照する番号 (104 個の番号) のリストを保持する別のテーブル「Deck」。それは良い考えのように聞こえますか?そして、Java と Hibernate でこれを達成するにはどうすればよいでしょうか?

または、これを行う必要がある他の方法はありますか?多くのカード ゲームがあるため、これは以前に 100 万回行われており、これを解決するためのベスト プラクティスがいくつかあると思いますが、見つけることができませんでした。この件に関するご意見をいただければ幸いです。事前に、ありがとう!

編集:私は問題を考えすぎていて、Hibernate を使用してデータベースにデッキを挿入し、残りはデータベースに任せるべきですか?

4

2 に答える 2

1

カードをデータベースに保存する意味がわかりません。物事が複雑になりすぎるだけです。私がすることは、102 個の要素の配列を含む、CardDistribution のような名前の Java アプリケーションで別のクラスを作成することです。各要素に、それが保持するカードの ID を与えます。

ゲームを保存する場合は、CardDistribution オブジェクトを JSON にシリアル化し、それを Game テーブルの列に保持します。

データベースから読み取るときは、CardDistribution JSON を逆シリアル化して Java オブジェクトに変換し、それを使用します。

于 2013-05-10T19:21:36.927 に答える