2014-11-04 56 views
0

为自动完成功能设计数据库的最佳方法。 我有以下用例(使用技术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,休眠)。人们可能会保存假人技能或技能表突然值 (例如,XYZ),所以我不t想要在autoComplete中显示这个建议。

我能想到以下方法眼下的: -

方法1:有四张桌子下面

1.ProfessionalDetails

column:professionalId 

2如上。技能 专栏:SkillId ,skillName,skillRating

3.Professional_Skills 柱:skillId,professionalId

4. PreDefinedSkill 列:ID,SkillName

是否BestPractice多了一个表,预定义的技能,将用于AutoSuggestion和SkillName从 获取的预定义Table将被存储在技能表中?

缺点:技能名称将在技能列表中重复。

方法2:在这种方法中SkillRating移动到professional_Skills表和Skillname是skillTable 这里我SkillDTO映射到Tables.I必须使用annotaion如@SecondaryTable独特。

1.ProfessionalDetails 柱:professionalId

2.Skills 柱:SkillId,skillName

3.Professional_Skills 柱:skillId,professionalId ,, skillRating

方法3 方法3。与方法2相同而不是使用hibernate注释使用查询来插入到professional_Skills表中。

请推荐我一些最好的行业实践来实现上述用例 在此先感谢。

+0

这很宽泛,你可能想要重写一下 – 2014-11-04 21:15:18

+0

:)雅我列出了三种方法在我脑海里。只要想得到一些亮点上述方法希望你能提供帮助。 – user3909389 2014-11-04 21:17:58

回答