web-dev-qa-db-ja.com

このデータベース設計は良いですか?この設計のためにどのJPAエンティティを作成する必要がありますか?

私はJPAを試しています。そのため、下図のような学生の入学手続きの例を考えています。

Database Diagram

このデザインは良いですか?

改善のための提案は大歓迎です。

また、このためにどのエンティティクラスを作成する必要があるかについても混乱しています。特にCollege_Majorの場合、このためのEntityクラスが必要ですか、それともCollegeMajorの間の多対多マッピング用に作成されたマッピングテーブルのみである必要がありますか?

後者がより良い場合、Admission_Formテーブルはどのように大学の専攻を参照できますか?

どちらの場合でも、College_MajorAdmission_Formのエンティティクラス(ある場合)はどのようにする必要がありますか?

6
Nils

問題を引き起こしているように見えるcollege_majorエリアを除いて、かなり堅実なデザインに見えます:)

個人的には、このテーブルを2つに分割します。

  1. College_Majorテーブルを真の多対多のリゾルバーになるように変更します(つまり、intake intなし)。これは、大学が新しい専攻を設立したときにのみ変更される参照表になります。
  2. College_Majorにリンクしていて、入学と1:*の関係があるIntake。存在しないコースに学生を登録することはできないはずなので、入学日を追加する必要があると思います。

私はあなたがidフィールド(別名ビジネスニュートラル主キー)を使うのが好きです一貫性を保つために、Studentテーブルの主キーは、単なるIDではなく、student_idという名前にする必要があります。

Admission_Formという名前を考えてみてください。データベースは入学の成功を記録しているようです。これは必ずしもフォームから取得されるとは限らず、フォームによっては入学できない場合もあります。

場合によってはCollege_Majorを除いて、各テーブルにエンティティクラスが必要です。私の記憶が正しければ、Hibernateはコレクションを使用して多対多の関係を処理できます(たとえば、大学には専攻のリストがあり、専攻には大学のリストがあります)。

1
kiwiron