2017-05-14 92 views
1

我試圖創建一個邏輯數據模型,但我不完全確定它是否建模正確。這是一個非常簡單和基本的模型,但總的來說,我想知道它是否應該是模式化的。銷售系統數據模型(邏輯)

Data Model - Sales system

此外,我怎麼轉換成面向對象編程中的類模型呢? 我想我需要:

Class Customer: int id, string name 
Class Order: int id, string date, Customer object 
Class Item: int id, string itemName, string item Desc 
Class OrderItem: ? 
+1

你不會需要一個'OrderItem'類,你可以有一個列表在'Order'類項目。另外,在數據模型中你不因爲有兩個爲多對多的關係之間的結表需要Orders'和'Items'之間'關係線。 – jmw5598

+0

感謝您的回覆@ jmw5598。有道理,如果我刪除訂單和項目之間的關係,是模型然後模型? – uba2012

+1

是的。你不需要一個類來表示'Order_Items'結點表。您可以在'Order'類中使用像列表,數組或集合這樣的數據結構來表示'Order'的'Items'集合。 – jmw5598

回答

1

爲您的數據模型,你不需要OrdersItems之間的關係線。您正在使用聯結表Order_Items來表示多對多的關係。

至於類模型,您將不需要類來建模聯結表。您可以在Order課程中使用Item的集合進行建模。 OrderItem類之間的關係是一種構圖關係。你可以認爲它是:Order has-a ItemOrder has-s collection Item

這裏是你如何在java中建模Order類。

public class Order { 
    private int id; 
    private Date date; 
    private Customer customer; 
    private List<Item> items; // you could use other collection types as well. 

    ... 
} 

編輯:

而且你的關係的許多方面,你可以考慮使用「一通多」線(烏鴉與線腳)」,而不是‘通過許多零’(烏鴉與圓腳)的訂單,一般具有ATLEAST 1項和ATLEAST 1個客戶,訂單也不是沒有客戶或項目的訂單。