ここでデザインの質問です。パフォーマンスへの影響があるので非常に興味がありますが、理解可能性やセマンティクスに関してはありますか?
特にエンタープライズ環境では、外部キー制約を作成する代わりに、Hibernate に個別のテーブルを生成させる多くの人を見てきました。
特に、テーブル A とテーブル B があり、関係が 1 対多の場合、人々は Hibernate にテーブル A_B を生成させる傾向があります。これには、A と B の主キーが含まれ、1 対-多くの関係。より具体的には、外部キー制約を新しい別のテーブルに抽出します。
1) パフォーマンスの観点からは、これはそれほど幸運なことではありません。余分なテーブル (より多くのメモリ) と、通常はより多くの結合が必要になるため、パフォーマンスに悪影響を及ぼす可能性があります。もちろん、これは基盤となる実装に依存します。これは、キャッシングとスマート カーソル管理によって軽減できるためです。
2) セマンティクスおよび/または理解可能性は影響を受けますか? もしそうなら、生成されたコードを決して見ないというルールはどうですか? (コード生成の支持者は断固として NO を与えるでしょう)。これは、モデルからテーブルを生成する場合にのみ適用されます (Hibernate で許可されているように)。
3) 正規形は、この方法で表を設計しても影響を受けませんが、より高い正規形を課そうとすると、「表の爆発」に寄与します。
この「ベスト プラクティス」に隠された意味があるのか (それが 1 つであれば)、それとも Hibernate の構成における単なる間違い/理解不足なのか、私には本当にわかりません ;-)。
どんな意見でも大歓迎です!
編集: テーブル/リレーションは n 対 m (多対多) ではありません。また、Hibernate に外部キー制約の代わりにリレーションを生成させることもできます。私の質問 (上記の質問) は、なぜそうするのですか?!