当前位置: 首页 > wzjs >正文

企业网站手机版模板免费下载胶南网站建设公司

企业网站手机版模板免费下载,胶南网站建设公司,房地产网站建设平台,怎么建个人网页文章目录 一 限定初识二 限定识别三 限定实现 一 限定初识 一个 员工 可以拥有多份 工作经验,而各个 工作经验 的 时间段 不能相互重叠。可以得出一个推论:对于一个 员工 而言,每个 时间段 只能有一条 工作经验。 UML中第二种表述方式&…

文章目录

  • 一 限定初识
  • 二 限定识别
  • 三 限定实现

一 限定初识

  • 一个 员工 可以拥有多份 工作经验,而各个 工作经验时间段 不能相互重叠。可以得出一个推论:对于一个 员工 而言,每个 时间段 只能有一条 工作经验
    在这里插入图片描述

  • UML中第二种表述方式,如下图:
    在这里插入图片描述

  • 标有“: 时间段”的方框,叫做“限定符”(qualifier)。

  • 对于一个员工,任何一个时间段,要么没有工作经验,要么有一条工作经验,但不能有多条工作经验。换句话说,一个员工可以有多条工作经验,但限定在一个时间段的话,那么最多就只能有一条工作经验。

  • 限定机制起到两个作用:第一,表达了更丰富的语义,把原来用注解说明的约束变成了更严格的符号;第二,简化了关联关系的多重性,把原来的一对多,在形式上,变成了一对一。

二 限定识别

在这里插入图片描述

  • 在技能实体上,原来有一个“同一技能不能录入两次”的约束。现在由于增加对技能类别的限定,已经表达相同的意思。

  • 项目和项目成员之间的关联,是否应该使用限定呢?
    在这里插入图片描述
  • 虽然项目成员里面也有时间段属性,但是项目和项目成员之间的关联并没有被时间段所限定。因为即使在同一个时间段,一个项目还是可以有多个成员。
  • 尽管项目经理和项目成员中都有时间段,但项目经理的关联被时间段所限定了,而项目成员则没有。现在的表示方法清楚地体现出了两者之间的这种区别,而之前只能通过注释中的文字来表达。

  • 项目成员“不必”用时间段来限定,而不是“不能”限定。这是因为,理论上其实也可以在项目一端加一个时间段限定。最终效果如下:
    在这里插入图片描述

三 限定实现

  • 以工作经验(work_experience)表和技能(skill)进行“限定”在数据库里的实现。通过添加唯一索引,在工作经验表上体现出时间段的限定,并且在技能表上体现出技能类别的限定。
    在这里插入图片描述
// domain.orgmng.emp;
//imports ...
public class Emp extends AggregateRoot {// other fields ...// protected List<Skill> skills = new ArrayList<>();protected Map<Long, Skill> skills = new HashMap<>();// protected List<WorkExperience> experiences;protected Map<Period, WorkExperience> experiences = new HashMap<>();// other methods...public Collection<Skill> getSkills() {// return Collections.unmodifiableList(skills);return Collections.unmodifiableCollection(skills.values());}public Optional<Skill> getSkill(Long skillTypeId) {// return skills.stream()//         .filter(s -> s.getSkillTypeId().equals(skillTypeId))//         .findAny();return Optional.ofNullable(skills.get(skillTypeId));}public void addSkill(Long skillTypeId, SkillLevel level, int duration, Long userId) {skillTypeShouldNotDuplicated(skillTypeId);Skill newSkill = new Skill(tenantId, skillTypeId, userId).setLevel(level).setDuration(duration);//skills.add(newSkill);skills.put(skillTypeId, newSkill);}private void skillTypeShouldNotDuplicated(Long newSkillTypeId) {// if (skills.stream().anyMatch(//            s -> s.getSkillTypeId().equals(newSkillTypeId))) {if (skills.get(newSkillTypeId) != null) {throw new BusinessException("同一技能不能录入两次!");}}//    public List<WorkExperience> getExperiences() {//        return Collections.unmodifiableList(experiences);//    }public Collection<WorkExperience> getExperiences() {return Collections.unmodifiableCollection(experiences.values());}public void addExperience(Period period, String company, Long userId) {durationShouldNotOverlap(period);WorkExperience newExperience = new WorkExperience(tenantId, period, LocalDateTime.now(), userId).setCompany(company);//experiences.add(newExperience);experiences.put(period, newExperience);}private void durationShouldNotOverlap(Period newPeriod) {// if (experiences.stream().anyMatch(//                 e -> e.getPeriod().overlap(newPeriod))) {if (experiences.values().stream().anyMatch(e -> e.getPeriod().overlap(newPeriod))) {throw new BusinessException("工作经验的时间段不能重叠!");}}// other methods...
}
  • 把Emp类的skills属性的类型改成Map。Map的Key实际就是 技能类别ID,就保证了对 技能类别 所限定的唯一性。
  • getSkills() 方法,我们取了Map的 values(),并把方法的返回值类型改成了Collection。
  • getSkill(Long skillTypeId) 方法,我们直接从 Map 里取值,而不是像以前那样通过遍历 List 来搜索。
  • 当写程序的时候,如果发现从 List 里搜索比较麻烦,可能就已经想到改成 Map 了。我们就可以“反推”出模型中很可能应该使用限定。这其实是在编写代码的过程中,以优化代码结构为启发,反过来促使模型演进的一个例子。


文章转载自:

http://3DCEJajF.xshkh.cn
http://idRk7yrJ.xshkh.cn
http://7oXPaiqi.xshkh.cn
http://OCRw9pXE.xshkh.cn
http://lWsoNSqA.xshkh.cn
http://ndRud7WR.xshkh.cn
http://ugB4E9R6.xshkh.cn
http://9PN8whYn.xshkh.cn
http://naK2C96o.xshkh.cn
http://nmhBlHvM.xshkh.cn
http://hCmQRwPA.xshkh.cn
http://1hQwmrWg.xshkh.cn
http://wNp5eTh1.xshkh.cn
http://sAwEGwj0.xshkh.cn
http://h7p5gtZh.xshkh.cn
http://3x4Eg7rA.xshkh.cn
http://lrfXnJa8.xshkh.cn
http://4PaOq0dj.xshkh.cn
http://koeRyyst.xshkh.cn
http://83dcxjDv.xshkh.cn
http://ZRHr9ihG.xshkh.cn
http://BGskhW9A.xshkh.cn
http://b32l25La.xshkh.cn
http://Q26wB3BD.xshkh.cn
http://zOTdSEXF.xshkh.cn
http://UAmyxFlh.xshkh.cn
http://7KRc94uL.xshkh.cn
http://yx6fDk8u.xshkh.cn
http://XiNPlzTZ.xshkh.cn
http://M26B8ZnW.xshkh.cn
http://www.dtcms.com/wzjs/769012.html

相关文章:

  • 网站登录账号密码保存在哪里西北旅游攻略
  • 行政单位单位网站建设企业网站建设方案 功能规划
  • 运营网站费用代理服务网站
  • 做芯片哪个网站推广网站建设温州科目一
  • 查网站开通时间广州网站建设设计哪家好
  • 哪家高端网站建设好小程序与app的区别
  • 东拼西凑网站谁做的wordpress 定制搜索
  • 网站模板站扩容网站运营怎么样
  • 技术网站的费用怎么做会计分录云南建设厅网站监理员培训
  • 摄影网站难做吗logo在线设计图片
  • 品牌网站建设报价表wordpress 父分类显示子分类文章
  • 郑州网站建设公司电话多少wordpress 优化 插件
  • 浙江省建设厅网站查询百度网页版官方
  • 网站修改建议网站设计需要学什么软件
  • 洛阳做网站推广我想做代理
  • 免费网站域名申请免费的网站后台管理系统
  • 廉价网站建设网站常用配色
  • 网站建设的基本步骤和过程网站后台无法审核
  • 网站开发 教学大纲备案域名网站大全
  • 深圳公司网站建设服务为先为什么要用php做网站
  • 常见的网站结构类型小程序的功能与作用
  • 苏州高端网站制作官网上海软件外包公司名单
  • 前海网站建设福田做棋牌网站建设哪家公司便宜
  • 网站规划与建设与安全管理中石油第一建设公司官网
  • 网站管理模式网站结构构图
  • 网站建设托管预算清单重庆市中心城区
  • 做男装海报的素材网站企业服务专区
  • 网站域名中文后缀网页动态设计怎么做
  • 培训机构一般在什么网站做推广免费企业网站开发
  • 域名与网站建设博客群 wordpress