簡體   English   中英

與可選值的多對多關系?

[英]Many-to-many relationship with optional value?

我在兩個表之間有多對多的關系:Order和Item。 我需要保存關於這種關系的額外信息,數量。

所以,我必須在我的模型.xcdatamodel中創建一個額外的表?

在以下模式中, orderItemsOrderItem表之間存在多對多關系。 orderitem是反向關系。

Order (start, end, orderItems)
Item (name, orderItems)
OrderItem (quantity, order, item)

編輯:

所以根據蘭迪的說法,這是你的建議嗎?

Order (start, end, orderItems)
Item (name, quantity, orders)

orderItemsItem作為一個一對多的關系,逆relationshipo是ordersordersOrder的多對多關系

無需創建其他表。 擁有一個M2M關聯表是可以接受的,該表包含除兩個表的FK引用之外的列。 有時,M2M關聯表中的附加列非常有意義。

我很確定你問的問題是:

所以,我必須在我的模型.xcdatamodel中創建一個額外的實體

答案是肯定的。 您需要第三個“OrderItem”實體。

就像你描述的那樣:

  1. 訂單商品只有一個訂單和一個商品。
  2. 訂單包含許多訂單商品,許多訂單商品都使用這些商品。

訂單< - >> 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

模型在http://www.freeimagehosting.net/uploads/f6ca00bc2f.png

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM