圓形relationshp我面臨這個問題:一到多,親子表中的MySQL
我有一個父表和子表,一個家長可以有多個孩子,標準的故事。
這些都是制約因素:
- 每個家長必須有至少一個孩子,
- 每個家長必須有一個最喜歡的孩子,
- 每個家長可以有一個最低-favourite小孩
如何設計這在SQL中?
我不知道標準的親子表可以因循環關係中使用:
Parent table:
parentId
favouriteChildId NOT NULL
leastFavouriteChildId NULL
Child table:
childId
parentId
我想使用橋接表的,但我不知道如何將這些約束模型。
編輯:只是爲了增加一些透明度,這裏的問題是環境的一部分:
有價格表(孩子),以及PriceGroup表(母公司)。
PriceGroup有多個價格,一個強制mainPrice(favouriteChild)並且可以有一個officialPrice(leastFavouriteChild)。
以下是無關的問題,但帶來了曙光上下文: 價格按他們指產品分組,一個產品可以有多個價格 - 這些都是然後在價格組分組,每個團隊需要參考主要價格和官方價格(如果有的話)。
它只是父母和他們的直系後裔,還是可以是多層次的? **編輯**順便說一句:你不能'約束'(強迫)父母有一個孩子。 **編輯**數據庫關係被高估。您應該在模型中修復這些關係,這比所有這些MySQL鏈接都重要得多。 – Rudie 2011-05-16 10:02:58
您將遇到問題,因爲您無法插入沒有parentId的子項,並且無法插入沒有childId的父項(在favouriteChildId中引用)。爲了能夠插入任何所需的內容(暫時)禁用外鍵約束,插入兩行,然後再次啓用外鍵約束,然後提交插入。我會盡量設計不同的表格。如果我們對問題定義有更好的理解,這可能會有所幫助。 – PatrikAkerstrand 2011-05-16 10:08:56
我擔心有人會說「(暫時)禁用外鍵約束」。請不要這樣做,並重新考慮你的db模型。 – Rudie 2011-05-16 10:09:58