如果我们有多对多的关系,我们通过引入参考表将它们分解为1-m,这应该在ER图中描述。
例如,如果Item和Order是m-m,我们引入了ItemOrder引用表。
但是在开发系统时,我们是否将ItemOrder识别为实体(域类)?
答案 0 :(得分:0)
是的,不,也许。
你有ItemOrder
课吗?也许吧!
它会成为“域名类”吗? 否它不会。域类中的关键字是域。什么构成域类取决于您的利益相关者如何看待域。在这种情况下,他们可能从未想过“物品订单” - 只有一个订单,它与物品有关系。 “订单”和“项目”是相关的域概念,因为它们对您的利益相关者来说是熟悉的; “项目订单”不是。
但是你可能会有一个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;
}
}