DDD 中的多对多关系建模
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
TechLead 少个分号
扫码关注公众号
扫码阅读
手机扫码阅读
多对多关系的挑战与解决方法
文章讨论了多对多关系在软件建模中的难点及其对软件架构可能造成的问题。在一个具体项目例子中,作者经历了用户与空间间多对多关系管理的困难,发现这种关系导致权限管理复杂且业务需求难以满足。
传统数据库模型的限制
传统的数据库设计使用中间表来处理多对多关系,如项目中的"workspace_user_relation"表。然而,这种设计在技术实现和业务支持上均存在不足。例如,它难以管理用户权限,管理员的权限限制,以及中间表的语义不明确。
面向对象与关系数据库的鸿沟
关系数据库理论自1969年提出以来,它的集合论基础在数据处理上有独特优势,但是与面向对象的编程模型存在天然鸿沟。对象关系映射(ORM)软件试图解决这一问题,但多对多关系在面向对象中是一个难以处理的“隐藏模型”。
重新思考多对多关系
作者提出使用主体-客体思维来重新思考多对多关系。通过识别出“隐藏的模型”,如“工作空间-用户”,并为其命名(例如“空间成员”),可以将复杂的多对多关系简化为两个一对多关系,从而清晰化模型。
隐藏模型的归属问题
在解决了命名问题后,还需决定隐藏模型的归属。以“标签”系统为例,可以设计通用的标签系统,或者将标签与具体业务关联。这取决于业务重点和对聚合搜索能力的需求。
结论
模型建立需服务于业务需求。业务人员需要明确业务重心,并在模型设计中做出权衡和取舍。
TechLead 少个分号
TechLead 少个分号
扫码关注公众号
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
查看方案
TechLead 少个分号的其他文章
技术管理 | 谈一些职场认知悖论
如果不能接受自己的价值观调整,就会一直干的很痛苦。
理解 DDD:编程中的模型思维
业务设计上往往没有建立起特定的领域模型,这是我们架构腐化和软件开发困难的关键原因。**业务领域建立好的模型,并指导代码实践,这就是 ”编程思维“。** DDD 领域驱动设计就是解决这部分问题,与其叫领域驱动设计,不如叫做模型驱动设计。
技术管理 | 将工作"游戏化"让人对工作上瘾
使用游戏的机制来管理团队任务和目标。
模型诊断 | 上下文之间的边界和幂等因子
如果在两个服务中需要实现最终一致性,却找不到幂等因子,说明模型设计可能有一些问题,这在边界模型设计上需要特别注意。
自我提升 | 那些童年时期的错误教育
如果我们能认识到童年教育的影响,那么在对某些事情做出反应时,应该认识到这不是处于自然本能,而是来自幼年时期某些经历的影响。
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线