[英]Many-to-many relationship with optional value?
我在兩個表之間有多對多的關系:Order和Item。 我需要保存關於這種關系的額外信息,數量。
所以,我必須在我的模型.xcdatamodel中創建一個額外的表?
在以下模式中, orderItems
與OrderItem
表之間存在多對多關系。 order
和item
是反向關系。
Order (start, end, orderItems)
Item (name, orderItems)
OrderItem (quantity, order, item)
編輯:
所以根據蘭迪的說法,這是你的建議嗎?
Order (start, end, orderItems)
Item (name, quantity, orders)
orderItems
分Item
作為一個一對多的關系,逆relationshipo是orders
, orders
分Order
的多對多關系
無需創建其他表。 擁有一個M2M關聯表是可以接受的,該表包含除兩個表的FK引用之外的列。 有時,M2M關聯表中的附加列非常有意義。
我很確定你問的問題是:
所以,我必須在我的模型.xcdatamodel中創建一個額外的實體 ?
答案是肯定的。 您需要第三個“OrderItem”實體。
就像你描述的那樣:
訂單< - >> OrderItem << - >項目
quantity屬性位於OrderItem實體中。
這並不意味着您要創建一個額外的表 。 如果您使用SQLite進行存儲,那么無論如何,Core Data都會使用額外的表來實現多對多關系。
通常使用Core Data,您將設計和使用滿足您需求的數據模型。 你不應該在SQL或表方面考慮它。 實際上,它甚至不必使用SQL進行存儲。
我遇到了同樣的問題。 當我們在Core Data中創建多對多關系時,它會創建一個關系表,不是嗎? 有沒有辦法把信息(關系屬性)放在那個表中?
我已經考慮過這兩種方式,但它們似乎都不是最好的。 如果我錯了,請糾正我...我正在嘗試對我的應用進行建模。
1)它解決了問題,但不使用Core Data的多對多關系。
Order (start, end, orderItems)
Item (name, orderItems)
OrderItem (quantity, order, item)
我更喜歡這個,因為它不會重復行。
2)這樣我們復制數據,不是嗎? 因為如果您在多個訂單中具有相同的項目,則您有多個具有名稱信息的行。 如果項目有更多列,如描述,則問題會增加...將復制描述。
Order (start, end, orderItems)
Item (name, quantity, orders)
3)我現在讀手冊“核心數據”和思想的另一種可能性,它是等於在數據庫中的解決方案2:
Order (start, end, orderedItens)
Item (name, description, ...)
OrderedItem (quantity, order)
OrderedItem的parent = Item
Item
^
|
Order <--->> OrderedItem
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.