我有兩個型號:做一個一對多的關係中使用的核心數據IOS
Card with has_many relation to Works
我的意思是,我有我的數據庫7級靜態的作品,我可以選擇其中的一些,當我創建一個卡。
我定義這樣的關係的has_many:
我的問題很奇怪...這似乎工作,但是當我探索我的sqlite的文件,我看不出之間的任何關係表卡和工作。
我在等待一個card_id和work_id表。
核心數據存儲如何有很多關係?
我有兩個型號:做一個一對多的關係中使用的核心數據IOS
Card with has_many relation to Works
我的意思是,我有我的數據庫7級靜態的作品,我可以選擇其中的一些,當我創建一個卡。
我定義這樣的關係的has_many:
我的問題很奇怪...這似乎工作,但是當我探索我的sqlite的文件,我看不出之間的任何關係表卡和工作。
我在等待一個card_id和work_id表。
核心數據存儲如何有很多關係?
首先,我會提醒你打開sqlite文件核心數據吐出並試圖從他們推斷的事情。它意味着一種不透明的格式:您只能通過Core Data API與Core Data持久存儲進行交互。
但是,要回答您的問題:通常在數據庫設計中,您不會使用像您描述的一對多關係的鏈接表,而只能用於多對多關係。對於一對多,你需要在'一端'的表中有一個外鍵字段,並且該字段的內容是另一個表的主鍵。例如(抱歉隨便舉個例子我在谷歌找到):
tblOrder
與tblOrderDetails
一個一對多的關係。這是通過在關係的多方中具有一個Order#
字段來實現的,該字段是涉及tblOrder
表的主鍵的外鍵。正如你所看到的,不需要鏈接表。
一個多對多的關係會需要一個鏈接表,但一對多沒有。
最後一點:我在你的截圖中注意到,你沒有爲你的works
或customer
關係設置相反的關係。核心數據要求所有關係具有相反關係,否則您的數據可能會損壞。 (這有點簡化,因爲還有其他方法來解決它,但通常使反轉最容易。)
謝謝你的回答。我很抱歉,但我認爲我在做一個多對多的關係實際上......我如何實現鏈接表?我認爲核心數據本身生成它? – Sebastien
噢,好的。那麼,我會再說,如果它在Core Data領域工作,不要惹惱底層數據庫:它只是一個實現細節,它是如何處理連接的。但無論哪種方式,在屏幕截圖中似乎都沒有多對多的關係,因爲多對多關係肯定需要相反的關係。添加相反的關係(確保它也是一對多)並再次查看? –
是的,我添加了一個逆,它工作正常,我的鏈接表是自動創建的。 – Sebastien