系统设计 | 多对多关系模型拆解案例
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
TechLead 少个分号
扫码关注公众号
扫码阅读
手机扫码阅读
多对多关系拆解分析与模型设计
经验丰富的程序员通常避免使用多对多关系,因为这表明领域模型设计时可能丢失了重要概念。本文通过分析多对多关系的具体案例,提供了领域模型设计的参考资料,并采用 E-R 图来描述这些关系。
具体案例分析
- 订单和商品:多对多关系会丢失订单行的概念,而实际上应引用商品的快照而非商品本身。
- 群和用户:在没有群成员概念的情况下,生命周期管理复杂且某些业务实现困难,例如记录成员在群中的信息。
- 标签和文章:提供了两种拆解方案,一种是将关系设计为标签项,另一种是作为文章标签,取决于业务需求。
- 学生和老师:多对多关系可以拆解为课程和班级,以及学生每年的班级变化。
- 用户、角色和资源:在 RBAC 模型中,用户角色和权限的概念可以拆解多对多关系。
- 分销渠道和商品:可以设计分销商品来拆解多对多关系,并考虑分销商自身的属性和逻辑。
- 组织和用户:需要设计员工和身份概念来拆解复杂的多对多关系。
总结
多对多关系提示了隐藏模型的存在,通常通过添加隐藏模型可以拆解多对多关系。在更复杂情况下,需要找到合适的归属来确立微服务边界。多对多关系是系统设计的钥匙,帮助揭示隐藏的模型。
文章来源于公众号“DDD和微服务”,作者“少个分号”。如有内容错误,可通过微信(shaogefenhao)联系作者并有机会领取红包。欢迎收藏、转发本文。
TechLead 少个分号
TechLead 少个分号
扫码关注公众号
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
查看方案
TechLead 少个分号的其他文章
专注编码,一次只做一件事
如果专注做一件事情,很容易进入一种类似禅定的忘我状态,这种状态被有些人叫做 “心流”。进入这种状态,可以获得极大的效率。\x0a\x0a这种状态不仅可以获得较高生产力,还可以让内心充盈、满足的愉悦感。
系统设计 | 导入和导出
在项目上我们经常会遇到一些导入导出的场景,常见的有 Excel 的导入导出,以及 PDF 的导出。这一期的技术方案总结一下相关的技术方案和实现。
技术管理 | 将工作"游戏化"让人对工作上瘾
使用游戏的机制来管理团队任务和目标。
系统设计 | 如何管理应用系统中的配置?
当一个应用系统演变地非常大时,配置会变得非常混乱。应用系统中不同类型的配置应该如何处理?
技术管理 | 没看清问题本质之前,努力几乎无用
如果能洞察一个企业中人与人之间的关系,以及企业战略方向,那么就能在管理和咨询工作中游刃有余。如果没能洞察到问题的本质,那么结果就是到处碰壁(把自己的工作做得再好都没用)。
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线