自动完成功能的最佳设计方法数据库

时间:2014-11-04 20:58:47

标签: java mysql spring hibernate database-design

设计自动完成功能数据库的最佳方法。 我有以下用例(使用技术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表中。

请建议我实施上述用例的最佳行业实践 在此先感谢。

1 个答案:

答案 0 :(得分:0)

在以下链接中描述了实现上述用例的最佳解决方案(即具有附加列的多对多): http://en.wikibooks.org/wiki/Java_Persistence/ManyToMany 发布此信息可能会帮助他人。