2012-02-01 79 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和产品之间的一对一关系。即使如果你仍然只使用两个实体,发票和产品,这意味着你在一个实体中结合了“产品”和“销售产品”的概念,发票和产品之间的关系仍然是一次性的,并非多对多。因为,两者之间的关系是通过“销售产品”。在这种情况下,“已售出的产品”只属于一张发票。

但是,第一种方法似乎对我更好。