2012-06-20 26 views
1

下面是我的程序如何設置,這是相當基本的。 (Objective-c使用核心數據)我應該如何處理我的銷售/庫存計劃的實施?

  • 客戶實體可以有許多發票。
  • 發票可以有很多項目。

當我創建一個項目時,例如15個數量的庫存,我創建了15個項目。這樣我就可以將哪個項目屬於哪個發票,或者它是否屬於發票。這也使我可以編輯一個單獨的項目,如果說它被損壞了。不過,我不確定這是否是最佳實施。

現在我遇到的問題是,在我的早期實施中,我只有一個項目的許多數量。我有一個屬性「數量」。然而,我發現自己限制瞭如何關聯哪些商品銷售給誰,等等。我創建了第二個實體「ItemSold」,但我發現這是沒有必要的,並且在我嘗試返回特定商品時遇到問題並且添加一個新項目(在它的位置,在銷售點)。

當我嘗試顯示我的項目時,我顯然不想讓15個相同的項目出現在我的表格中,我寧願有一個包含數量的列。

我主要想知道一般情況下,我應該每一次添加每件物品,還是代表多個數量的一件物品。如果它是一個項目,如何區分已售出物品和銷售給誰。

回答

1

那麼,你的情況沒有單一的正確答案。代碼複雜性,性能折衷,模型複雜性......所以請採取以下一些鹽。

Customer 
- name: string 
- orders ->> Order 

Order 
- reference: string // order reference number, unique 
- date: date // date of the order 
- shippingDate: date // shipping date, null = not yet shipped 
- orderItem ->> OrderItem 
- customer -> Customer 

OrderItem // a line on the invoice, roughly 
- quantity: integer 
- discount: double // percentage 
- item -> Item 
- order -> Order 

Item 
- name: string 
- weight: double 
- price: decimal 
- orderItem ->> OrderItem 

這是發票部分。庫存可幾乎相同的處理爲OrderItem的:

InventoryItem // a line in the inventory book 
- quantity: integer 
- state: string // new, returned, damaged... 
- items ->> Item 

隨着反向關係添加到項目:

- inventoryItems ->> InventoryItem 

業務邏輯必須確保庫存是最新的,即損壞的物品不能訂購,這樣的東西。

它當然可以完全不同,但仍然是正確和適合您的需求。

+0

只是試圖把我的頭圍繞你的方法: 你基本上已經介紹了OrderItem和InventoryItem,它與Item有一對多的關係,這意味着我有一個Item,但是當它被添加到OrderItem時,OrderItem照顧數量?我想我喜歡這個,並且會隨之而去。 – Rail24

+0

OrderItem鏈接訂單和項目,一個典型的雙向多對多關係,以及一些附加屬性。一個訂單根據需要具有儘可能多的OrderItem,並且一個Item可以由許多OrderItem鏈接。 –