设计自动完成功能数据库的最佳方法。 我有以下用例(使用技术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当我输入类型技能时,我应该得到有效的技能建议(如JAVA,Hibernate)。人们可能会保存虚假技能或突然值 (例如XYZ)在技能表中,所以我不想在autoComplete中将其显示为建议。
我现在可以想到以下方法: -
方法1:如下所述有四个表
1.ProfessionalDetails
column:professionalId
2.Skills 柱:SkillId,skillName,skillRating
3.Professional_Skills 柱:skillId,professionalId
4。 PreDefinedSkill 柱:ID,SkillName
最佳实践是为预定义技能增加一个表格,用于AutoSuggestion和从中获取的技能名称 预定义表格将存储在技能表中吗?
缺点:技能名称将在技能表中重复。
方法2:在此方法中,SkillRating已移至professional_Skills表,技能名称在skillTable中是唯一的 在这里,我必须将SkillDTO映射到Tables.I必须使用annotaion,例如@secondaryTable。
1.ProfessionalDetails 柱:professionalId
2.Skills 柱:SkillId,skillName
3.Professional_Skills 柱:skillId,professionalId ,, skillRating
方法3 。作为方法2,但不使用hibernate注释,而是使用查询插入到professional_Skills表中。
请建议我实施上述用例的最佳行业实践 在此先感谢。
答案 0 :(得分:0)
在以下链接中描述了实现上述用例的最佳解决方案(即具有附加列的多对多): http://en.wikibooks.org/wiki/Java_Persistence/ManyToMany 发布此信息可能会帮助他人。