“多对多”关系的同义词是什么?我已经完成了一个对象关系映射器的编写,但我仍然对如何命名添加该关系的函数感到困惑。
addParent() 和 addChild() 对于多对一/一对多和 addSuperclass() 对于一对一继承似乎很合乎逻辑,但是对于面向对象的程序员来说 addManyToMany() 听起来很不直观。addSibling() 或 addCousin() 也没有任何意义。
有什么建议么?在您将此视为非编程问题之前,请记住一致的命名方案和封装对于编程来说是不可或缺的:)
“多对多”关系的同义词是什么?我已经完成了一个对象关系映射器的编写,但我仍然对如何命名添加该关系的函数感到困惑。
addParent() 和 addChild() 对于多对一/一对多和 addSuperclass() 对于一对一继承似乎很合乎逻辑,但是对于面向对象的程序员来说 addManyToMany() 听起来很不直观。addSibling() 或 addCousin() 也没有任何意义。
有什么建议么?在您将此视为非编程问题之前,请记住一致的命名方案和封装对于编程来说是不可或缺的:)
也许addFriend()
?其他选项可能是addLinked()
或addRelated()
。
在关系数据库术语中,一般情况称为包含依赖关系,即:A 是 B 的子集,其中 A 和 B 是对某些(不一定不同)关系的投影。“外键”是包含依赖的一种特殊情况,其中 B 是候选键。
这个思路怎么样:
connect(X, Y)
link(X, Y)
bind(X, Y)
不仅很难为面向对象系统的这种关系找到名称,而且也很难为它们建模!对象往往存在于层次结构中......
看看您是否可以找到这种关系的容器 - 检查库使用的方法名称。
棘手!似乎没有一个适合“RelateXtoY()”的通用术语是我能想到的最好的。
然而,对于任何实际的“真实”数据模型,通常都有一个明显的“动词”可以使用。例如,对于说 Country 和 Airline 之间的多对多关系,您可以使用 AddRouteTo(CountryId,AirlineId) 或 TravelledToUsing(CountryId,AirlineId) 方法。
CakePHP 将此称为“拥有并属于许多”关联
http://book.cakephp.org/view/85/Saving-Related-Model-Data-HABTM
addList
或addChildern
或addParents
或怎么addParentsAndChildren
样?
在此示例http://pastie.org/938704中,您不只是创建一个名为:
AddUserGame(用户 someUser,游戏 someGame)