0

如果我们有多对多关系,我们通过引入参考表将它们分解为 1-m,并且应该在 ER 图中进行描述。

例如,如果 Item 和 Order 是 mm,我们引入了 ItemOrder 参考表。

但是在开发系统时,我们是否将 ItemOrder 标识为实体(域类)?

4

1 回答 1

0

是的,不,也许。

你会ItemOrder上课吗?也许!

它会是一个“域类”吗?,它不会。域类中的关键字是domain领域类的构成取决于您的利益相关者如何看待该领域。在这种情况下,他们可能从未想过“物品订单”——只有一个订单,它与物品有关系。“订单”和“项目”是相关的领域概念,因为您的利益相关者很熟悉它们;“项目顺序”不是。

但无论如何你可能有一个ItemOrder类 - 但它可能是内部的。例如,如果您使用Row Data Gateway对象,您的Order类可能如下所示:

public class OrderRDG {

    private UUID orderId;

    public static OrderRDG[] find() { /* SQL code etc... */ }
    public static OrderRDG[] findById() { /* SQL code etc... */ }

    public UUID getOrderId() { return orderId; }

    public Item getItems() {
        ItemRDG[] items = []; // yes, I know Java arrays don't work like this - it's only an example
        OrderItemRDG[] orderItems = OrderItemRDG.findItemsByOrderId(orderId);
        for(OrderItemRDG orderItem:orderItems) {
            ItemRDG item = ItemRDG.findById(orderItem.getItemId());
            items.push(item);
        }
        return items;
    }

}
于 2012-12-05T06:36:35.507 回答