“多对多”关系的同义词(关系数据库)

时间:2010-04-28 06:11:20

标签: php database-design oop orm relational-database

“多对多”关系的同义词是什么?我已经完成了一个对象关系映射器的编写,但我仍然不知道如何命名添加该关系的函数。

addParent()和addChild()似乎对于多对一/一对多和addSuperclass()进行一对一继承非常合乎逻辑,但addManyToMany()听起来对于一个对象来说是非常不直观的 - 面向程序员。 addSibling()或addCousin()也没有意义。

有什么建议吗?在您将此视为非编程问题之前,请记住,一致的命名方案和封装对于编程来说是非常不可或缺的:)

7 个答案:

答案 0 :(得分:4)

也许addFriend()?其他选项可能是addLinked()addRelated()

答案 1 :(得分:1)

在关系数据库术语中,一般情况称为包含依赖性,即:A是B的子集,其中A和B是某些(不一定是不同的)关系的投影。 “外键”是包含依赖的特例,其中B是候选键。

答案 2 :(得分:0)

CakePHP将其称为“拥有且属于许多”协会

http://book.cakephp.org/view/85/Saving-Related-Model-Data-HABTM

答案 3 :(得分:0)

addListaddChildernaddParentsaddParentsAndChildren怎么样?

答案 4 :(得分:0)

在此示例http://pastie.org/938704中,您不会只创建一个名为:

的方法

AddUserGame(User someUser,Game someGame)

答案 5 :(得分:0)

棘手!似乎没有一个符合“RelateXtoY()”的通用术语是我能想到的最好的。

然而,对于任何实际的“真实”数据模型,通常可以使用明显的“动词”。例如,对于国家和航空公司之间的多对多关系,您可以使用方法AddRouteTo(CountryId,AirlineId)或TravelledToUsing(CountryId,AirlineId)。

答案 6 :(得分:0)

这一思路怎么样:

  • connect(X, Y)
  • link(X, Y)
  • bind(X, Y)

对于面向对象系统而言,不仅难以找到这种关系的名称,而且对它们进行建模也很困难! 对象往往生活在层次结构中......

查看是否可以找到这种关系的容器 - 检查库使用的方法名称。