0

这是我的示例类图

cls_Invoice = {InvoiceID:int, InvoiceDate:Date, InvoiceProduct: cls_Products };

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

数据库表

发票 = { 发票 ID,发票日期};Products = { ProductID, StockQuantity, Price};

1 发票有许多产品 1 产品可以在许多发票中,因此最终在 ER 设计中会有一个链接,如下所示

Invoice_Products = {InvoiceID, ProductID, Qty, Price}

但是现在还有另外两个属性 Qty 和 Price 我不知道如何绘制类图请指教?

4

3 回答 3

3

在 UML 类图中,您将有两个类:Invoice 和 Product。Invoice 有两个属性:InvoiceID 和 InvoiceDate,Product 有三个属性:ProductID、StockQuantity 和 Price。在这两个类之间,您需要一个关联,两端的重数为 1..*。

于 2012-02-02T12:59:05.863 回答
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 和 order item 之间是一对多的关系,而 oreritem 和 product 之间是一对一的关系。

甚至,如果您仍然只使用发票和产品这两个实体,这意味着您将“产品”和“销售产品”的概念结合在一个实体中,发票和产品之间的关系仍然是一对多而不是多对多。因为,两者之间的关系是通过“销售产品”。在这种情况下,“已售产品”仅属于一张发票。

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

于 2012-02-03T17:38:15.907 回答
-1

这是一个一对多的场景,而不是一个多对多的场景。同一个产品不能成为许多发票的一部分。

于 2018-09-13T15:17:36.470 回答