Il design di questo database è buono? Quali entità JPA dovrei creare per questo progetto?

6

Sto provando le mie mani su JPA. Per questo sto pensando di usare l'esempio di un processo di ammissione degli studenti come mostrato nel diagramma qui sotto.

Questo design è buono?

Qualsiasi suggerimento di miglioramento è più che benvenuto.

Sono anche confuso su quali classi Entity dovrei creare per questo. Soprattutto per College_Major , dovrebbe esserci una classe Entity per questo o dovrebbe essere solo una tabella di mappatura creata per il mapping molti-a-molti tra College e Major ?

Se quest'ultimo è un caso migliore, in che modo la tabella Admission_Form si riferisce a un maggiore in un college?

In entrambi i casi, quali dovrebbero essere le classi Entity (se è buono avere) per College_Major e Admission_Form ?

    
posta Nils 05.01.2015 - 17:48
fonte

1 risposta

1

Sembra un progetto abbastanza solido, a parte l'area college_major che sembra darti problemi:)

Personalmente, dividerei questo tavolo in due:

  1. Cambia il tavolo College_Major in modo che sia un vero risolutore da molti a molti (vale a dire senza assunzione int). Questo diventerebbe una tabella di riferimento che è cambiata solo quando un collegio stabilisce un nuovo maggiore.
  2. Intake, che collega a College_Major e ha il rapporto 1: * con l'ammissione. Sospetto che la data di assunzione debba essere aggiunta, dal momento che non dovrebbe essere possibile iscrivere uno studente a un corso non esistente.

Mi piace il tuo uso dei campi ID (ovvero le chiavi primarie neutrali). Per coerenza, la chiave primaria della tabella Studente dovrebbe probabilmente essere denominata student_id anziché solo id.

Ti potrebbe interessare riflettere sul nome Admission_Form. Sembra che il database stia registrando un'ammissione riuscita, che potrebbe non provenire sempre da un modulo, e che alcune forme potrebbero non comportare mai l'ammissione.

Avrai bisogno di una classe di entità per ogni tabella tranne forse College_Major. Se ricordo male, Hibernate può gestire molte e molte relazioni usando le raccolte (ad esempio, il College avrà una lista di major e major avrà una lista di college).

    
risposta data 06.01.2015 - 01:07
fonte

Leggi altre domande sui tag