扫码阅读
手机扫码阅读
DDD 中的多对多关系建模
79 2024-08-28
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
查看原文:DDD 中的多对多关系建模
文章来源:
TechLead 少个分号
扫码关注公众号
多对多关系的挑战与解决方法
文章讨论了多对多关系在软件建模中的难点及其对软件架构可能造成的问题。在一个具体项目例子中,作者经历了用户与空间间多对多关系管理的困难,发现这种关系导致权限管理复杂且业务需求难以满足。
传统数据库模型的限制
传统的数据库设计使用中间表来处理多对多关系,如项目中的"workspace_user_relation"表。然而,这种设计在技术实现和业务支持上均存在不足。例如,它难以管理用户权限,管理员的权限限制,以及中间表的语义不明确。
面向对象与关系数据库的鸿沟
关系数据库理论自1969年提出以来,它的集合论基础在数据处理上有独特优势,但是与面向对象的编程模型存在天然鸿沟。对象关系映射(ORM)软件试图解决这一问题,但多对多关系在面向对象中是一个难以处理的“隐藏模型”。
重新思考多对多关系
作者提出使用主体-客体思维来重新思考多对多关系。通过识别出“隐藏的模型”,如“工作空间-用户”,并为其命名(例如“空间成员”),可以将复杂的多对多关系简化为两个一对多关系,从而清晰化模型。
隐藏模型的归属问题
在解决了命名问题后,还需决定隐藏模型的归属。以“标签”系统为例,可以设计通用的标签系统,或者将标签与具体业务关联。这取决于业务重点和对聚合搜索能力的需求。
结论
模型建立需服务于业务需求。业务人员需要明确业务重心,并在模型设计中做出权衡和取舍。
想要了解更多内容?
查看原文:DDD 中的多对多关系建模
文章来源:
TechLead 少个分号
扫码关注公众号
TechLead 少个分号的其他文章
周末杂谈 | 追不上热点,但想聊聊程序员的心理问题
本来不想追这种热点的,这篇文章纯粹是为了分享一下我个人的经历,因为这段经历从后面来看其实非常宝贵。
技术管理 | 为什么团队节奏如此重要?
比起忙,往往更可怕的是乱。一旦乱了,项目的节奏感被打乱就会进入恶性循环。越乱越忙,越忙越乱。
领域建模的原则(战术篇)
当团队规模非常大、系统极其复杂的时,我们就需要制定一些原则来评审、检查各个各个团队产出的模型是否合适。
软件价值模型: 为什么需求会常变?
需求变化是软件工程师最难以容忍的一件事,为了做好软件设计,不得不猜测未来需求的变化方向。猜中了就是 “正交分解”,猜不中就是冗余设计。\x0a\x0a那么需求变化背后的逻辑是什么呢?
系统设计 | 高精度计算
聊明白为什么要用 BigDecimal?
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线