2012-02-01 119 views
0

這是我的示例類圖UML混淆許多場景

cls_Invoice = {InvoiceID:整型,InvoiceDate:日期,InvoiceProduct:cls_Products};

cls_Products = {ProductID:int,StockQuantity:double,Price:double};

DB表

發票= {InvoiceID,InvoiceDate}; Products = {ProductID,StockQuantity,Price};

1發票有很多產品 1的產品可以在許多發票 所以最終會出現在ER設計的連接如下圖所示

Invoice_Products = {InvoiceID,產品ID,數量,價格}

但現在又有另外兩個屬性數量和價格,我不知道繪製類圖請指教?

+0

這看起來不正確:您的「類圖」表示發票有一個產品。你在用什麼語言?使用您最喜愛的UML工具更好地繪製圖表,或者使用Java的。我不明白cls_ *和「DB表」之間的關係。 – ShiDoiSi 2012-02-01 15:49:50

+0

我一直在使用C#,但我已經改變爲FLEX!我指出他們是類,我不明白的是如何將多對多ER實體映射到類圖;我知道,它的第一類圖然後ER的其他方式,但我仍然想弄清楚這是如何工作的? – Fara 2012-02-01 18:20:43

回答

3

在UML類圖中,您將有兩個類:發票和產品。發票具有兩個屬性:InvoiceID和InvoiceDate,Product具有三個屬性:ProductID,StockQuantity和Price。在兩個班級之間,你需要一個關聯,在兩端有多個1 .. *。

1

雖然我不是很熟悉的購物應用程序,但是當我仔細想想,這些點來我的腦海:

應該有賣的項目/產品比項目/產品的另一個概念。因爲,「產品概念」應該獨立於「可能對產品做什麼」。例如,銷售產品與產品本身的概念不同。因此,你可能有另一個類,比如orderItem。

class product { 
    Long productId 
    String productName 
    ... 
} 

class orderItem{ 
     Product soldProduct; 
     Invoice itsInvoice; 

     public Invoice getItsInvoice(); 

} 

class Invoice { 
    Long invoiceNumber; 
    List<OrderItem> orderItem; 

} 

如果您這樣做,那麼每個訂單項只屬於一個發票,而發票可能有許多訂單項。因此,ivoice和訂單項之間存在一對多的關係,以及oreritem和產品之間的一對一關係。即使如果你仍然只使用兩個實體,發票和產品,這意味着你在一個實體中結合了「產品」和「銷售產品」的概念,發票和產品之間的關係仍然是一次性的,並非多對多。因爲,兩者之間的關係是通過「銷售產品」。在這種情況下,「已售出的產品」只屬於一張發票。

但是,第一種方法似乎對我更好。