0

背景を知るために私の前の質問を見てください。

列挙型とブール値のクラスのリスト

ただし、私の質問は、列挙型セットがJPA2.0およびデータベースでどのように機能するかです。おそらく値を文字列として保存するので(マッピングを失うリスクを冒したくないため)、セット内のたとえば20を超える列挙型の列挙型は、boolクラスと比較してデータを格納する非常に効果的な方法ではない可能性があります。

さまざまなロールを持つユーザーテーブルについて考えてみます。

user | password | role (enum)
adm    1223       admin, guest, www, lab, elevator, ap, // Might be more than > 20
sam    0000       admin

.....。

何を選べばいいですか?あなたはなにか考えはありますか?

よろしくお願いします

4

2 に答える 2

3

上記のデータベース設計は、ユーザーのロールを格納する方法ではありません。正規化されていないため(1つの列に複数の値があるため)、クエリを実行するのは非常に困難です。たとえば、ロールを持っているすべてのユーザーを知るためにどのようにクエリを作成しますguestか?ap

デザインを次のようなものに変更します。

user table : id, name, passord
role table: id, name
user_role join table: user_id, role_id

JPAの用語では、Userエンティティ、Roleエンティティ、およびManyToManyそれらのエンティティ間の関連付けがあります。ユーザーには0、1、または複数のロールがあり、ロールは0、1、または複数のユーザーによって保持されます。

于 2012-08-02T07:18:41.640 に答える
0

比較的小さなサイズのバイナリ形式で情報を保存したい場合はEnumSet、私が選択します。タイプ別にクエリできるようにしたい場合は、を選択し@ElementCollectionます。

于 2012-08-03T02:02:58.963 に答える