【发布时间】:2014-12-31 22:04:29
【问题描述】:
为自动完成功能设计数据库的最佳方式。 我有以下用例(使用技术 JAVA、SPRING、HIBERNATE、Mysql):
我有与技能相关的专业细节(多对多关系)。
public class ProfessionalDetailsDTO {
private Integer professionalId;
//many to many
private List<SkillsDTO> profileSkills;
setter and getter ...
}
public class SkillsDTO {
private String skillName;
private Integer skillRating;
private Integer skillId;
setter and getter
}
现在从 UI 当我键入 Type Skills 时,我应该得到 Valid Skills Suggestion(如 JAVA、Hibernate)。人们可能会保存 Dummy Skills 或突然的值 (例如 XYZ )在技能表中,所以我不想在自动完成中显示这个作为建议。
我现在可以想到以下方法:-
方法一:如下所述有四个表
1.专业详情
column:professionalId
2.技能 列:SkillId、skillName、skillRating
3.Professional_Skills 栏目:skillId,professionalId
4.预定义技能 列:id,技能名称
最好为预定义技能提供一张表,用于自动建议和从 预定义的表会存储在技能表中吗?
缺点:技能名称将在技能表中重复。
方法 2: 在此方法中,SkillRating 被移至专业技能表,并且 Skillname 在技能表中是唯一的 这里我必须将 SkillDTO 映射到 Tables。我必须使用注解,例如 @secondaryTable。
1.专业详情 列:专业ID
2.技能 列:SkillId,skillName
3.Professional_Skills column:skillId,professionalId,,skillRating
方法 3 。与方法 2 相同,但不使用休眠注释,而是使用查询插入到专业技能表中。
请给我一些最佳行业实践来实现上述用例 提前致谢。
【问题讨论】:
-
这很笼统,您可能需要改写一下
-
:) 是的,我列出了三种我想到的方法。只是想在上述方法中获得一些亮点希望你能提供帮助。
标签: java mysql spring hibernate database-design