2010-04-28 110 views
1

什么是“多对多”关系的同义词?我已经完成了一个对象关系映射器的编写工作,但是我仍然难以确定添加该关系的函数的名称。对于一对一继承,addParent()和addChild()对于多对一/一对多和addSuperclass()似乎很合逻辑,但addManyToMany()对于对象来说听起来相当不直观面向程序员。 addSibling()或addCousin()也没有任何意义。“多对多”关系的同义词(关系数据库)

有什么建议吗?而您关闭这个作为一个非编程问题之前,请记得,一致的命名方案和封装是相当完整的编程:)

+0

a“多对多”关系的同义词是'糟糕的db设计';-) – 2010-04-28 06:14:08

+4

这是怎么回事?我向你保证Stack Overflow的问题<=>标签是一个多对多的关系。我无法想象没有多对多的情况下做很多事情,因为CSV字段效率很低。 – 2010-04-28 06:17:01

回答

4

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

+2

+1对于addRelated() – Josiah 2010-04-28 06:22:55

+0

addRelated()听起来很棒!谢谢。 – 2010-04-28 06:41:02

+0

多对多关系*与orgies相关,addRelated(me)! +1 x) – 2010-04-28 07:14:08

0

CakePHP的把这称为'有属于许多协会

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

+0

对不起,我的意思是对那些不熟悉关系数据库但懂得面向对象概念的人有意义。 Plus“addHasAndBelongsToMany()”比“addManyToMany()”更难以输入。 – 2010-04-28 06:15:56

0

addListaddChildernaddParentsaddParentsAndChildren怎么样?

0

在这个例子中http://pastie.org/938704不会你只是创建一个名为方法:

AddUserGame(用户SomeUser的,游戏someGame)

+0

有趣的想法,然而由问题<=>标签的例子,一个'QuestionTag'似乎没有多大意义作为一个对象本身。如果我正在制作一个页面来显示问题,那么标签将会是问题的子代,而如果我正在制作一个页面来显示标签,问题将会是标签的子代。我想很难找到一种方式来描述两件事情,这两件事都可以是彼此的孩子! – 2010-04-28 06:25:36

0

整蛊!似乎没有适合的通用术语“RelateXtoY()”是我能想到的最好的。

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

0

怎么样这样的思路:

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

它不仅是很难找到的名字为这种对面向对象的系统关系,也很难模拟它们! 对象倾向于生活在层次结构中...

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

0

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