问题 - 我正在为学校创建一个小组论坛应用程序,需要为以下要求创建设计匹配。
- 组和组成员之间的多对多关系。
- 小组成员可以是学生或员工。(将来也可能是其他一些用户角色)。
- 我的数据库中已经存在 Student 和 Staff 表。
环境 - Java、Spring、Hibernate、MySQL
方法 -
1.a) 数据库设计
组:| 编号 | 姓名 | is_active |
组成员:| 编号 | group_id | 用户角色 | 学生ID | 员工编号 | is_banned | is_default_user |
1.b) 类设计(DTO 类)
Group : GroupMember groupMembers[*] 等
GroupMember : UserRole userRole、Student student、Staff staff 等。
2.a) 数据库设计
组:| 编号 | 姓名 | is_active |
组成员:| 编号 | group_id | is_banned | is_default_user |
学生会员:| 编号 | group_member_id | 学生ID |
员工:| 编号 | group_member_id | 员工编号 |
2.b) 类设计
Group : GroupMember groupMembers[*] 等
GroupMember : UserRole userRole、Member member等
接口成员:getMember():Object
StudentMember 扩展 Student 实现 Member:getMember():Student
StaffMember 扩展了员工实现成员:getMember():Staff
我更喜欢第二种方法。似乎它更具可扩展性。在第一种方法中,始终有 1 列为空。这是浪费。
对于此类问题,上述环境(支持休眠:我是新蜜蜂)有没有更好的方法?