2017-05-14 86 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个客户,订单也不是没有客户或项目的订单。