Note that there are some explanatory texts on larger screens.

plurals
  1. PODatabase and class design
    text
    copied!<p>Problem - I'm creating a group forum application for school and need to create design matching for following requirements.</p> <ul> <li>Many to many relationship between Group and Group Members.</li> <li>Group member can be either Student or Staff. (May be some other user roles as well in future).</li> <li>Already there exist Student and Staff tables in my database.</li> </ul> <p>Environment - Java, Spring, Hibernate, MySQL</p> <p>Approaches -</p> <p>1.a) DB design</p> <p>group : | id | name | is_active |</p> <p>group_member : | id | group_id | user_role | student_id | staff_id | is_banned | is_default_user |</p> <p>1.b) Class design (DTO classes)</p> <p>Group : GroupMember groupMembers[*], etc.</p> <p>GroupMember : UserRole userRole, Student student, Staff staff, etc.</p> <p>2.a) DB design</p> <p>group : | id | name | is_active |</p> <p>group_member : | id | group_id | is_banned | is_default_user |</p> <p>student_member : | id | group_member_id | student_id |</p> <p>staff_member : | id | group_member_id | staff_id |</p> <p>2.b) Class design</p> <p>Group : GroupMember groupMembers[*], etc.</p> <p>GroupMember : UserRole userRole, Member member, etc.</p> <p>interface Member : getMember():Object</p> <p>StudentMember extends Student implements Member : getMember():Student</p> <p>StaffMember extends Staff implements Member : getMember():Staff</p> <p>I prefer to 2nd approach. Seems it is more extendable. In 1st approach, always 1 column is null. It's waste.</p> <p>Is there any better approaches with mentioned environment (support for hibernate : I'm new bee) for this kind of matters ?</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload