2010-04-28 108 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是候選鍵。