2011-12-21 16 views
4

私はベストプラクティスは、このようなデータモデルを扱うことであるのだろうか。ベストプラクティス:双方向関係を回避する必要がありますか?

  • 役割
  • ユーザー
  • 許可

Simple security model

我々は3つのエンティティを持っていますエンティティはJavaクラスとして表現され、ハイバーネイトを介してデータベースにマップされることに注意してください。とにかく私は思いますこれらの技術についての知識がなくても問題に答えることができました。

User & Role間とRole & Permission間の多対多の関係があります。

ここでは双方向の関係はありますか?だから、Roleにあなたのすべてのメンバーを与え、彼のすべての役割を与えるようにUserに依頼することができます。

両方のエンティティに問い合わせることは非常に快適ですが、1つの欠点は、関係を削除するときに両方のエンティティを管理する必要があることです。

など。 UserからRoleを削除する場合は、RoleからUserも削除する必要があります。これらの関係がたくさんある場合、これはかなり迷惑になることがあります。したがって、ベストプラクティスが好きです。

+2

トピックから投票された理由はわかりません。データモデリングはSQLデータベースだけではなく、プログラマが行うことです。 – Kos

答えて

4

私は双方向関係を避けようとしています。代わりに、DAO /リポジトリ内の明示的なクエリで一方向を置き換えます。モデルをよりシンプルに保ち、インターフェースを介して正常に実行された場合、アプリケーションは循環依存関係を一掃します

+1

一方向の関係は管理が簡単です。明示的な照会/参照によりパフォーマンスの問題が発生する場合は、双方向の関係にする必要があります。 – ahoffer

1

ここでは双方向の関係はありますか?だから、あなたはすべてのメンバーをあなたに与え、あなたにすべての役割を与えるようにユーザーに依頼する役割を尋ねることができます。

はい。あなたが実際に両方の方法で航行可能性を必要とするなら、可能な限り簡単な方法でそれを得ることを妨げる理由はありません。

1つの欠点は、関係を削除すると必ず両方のエンティティを管理することです。

これは実装によって異なりますが、両方の「終了」を同期させる方法でデータモデルを実装できます。

関連する問題