【问题标题】:Sales system datamodel (Logical)销售系统数据模型(逻辑)
【发布时间】:2017-05-14 17:42:56
【问题描述】:

我试图建立一个逻辑数据模型,但我不确定它是否建模正确。这是一个非常精简和基本的模型,但总的来说我想知道它是否按照应该的方式建模。

此外,如何将其转换为面向对象编程中的类模型? 我想我需要:

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: ?

【问题讨论】:

  • 你不需要 OrderItem 类。你可以在你的Order 类中有一个项目列表。同样在您的数据模型中,您不需要OrdersItems 之间的关系线,因为两者之间存在一个用于多对多关系的联结表。
  • 感谢您的回复@jmw5598。有道理,如果我删除 Orders 和 items 之间的关系,那么模型是否正确建模?
  • 是的。并且您不需要一个类来表示Order_Items 联结表。您可以在Order 类中使用列表、数组或集合等数据结构来表示OrderItems 集合。
  • 非常感谢。在这种情况下,我的清单将是完美的。 @jmw5598

标签: data-modeling object-oriented-analysis


【解决方案1】:

对于您的数据模型,您不需要OrdersItems 之间的关系线。您正在使用联结表 Order_Items 来表示多对多关系。

至于类模型,您不需要类来为连接表建模。您可以在 Order 类中简单地使用 Item 的集合对其进行建模。 OrderItem 类之间的关系是组合关系。您可以将其视为:Order has-a ItemOrder has-s 集合 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.

    ...
}

编辑:

此外,对于您的多方关系,您可以考虑使用“一到多”线(鱼尾纹线)”而不是“零到多”(鱼尾纹和圆圈)。订单通常至少有1 件商品和至少 1 位客户。订单不是没有客户或商品的订单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-23
    • 2015-09-24
    • 1970-01-01
    • 2011-12-24
    • 2021-03-23
    • 2020-12-22
    • 2012-03-04
    • 1970-01-01
    相关资源
    最近更新 更多