数据模型设计和领域模型设计

时间:2009-06-17 01:13:22

标签: database-design oop model domain-driven-design

我正在尝试为杂货店建模。在商店里,有几个“过道”。每个“过道”都有一组“商品”的“类别”。每个“类别”只能属于一个“过道”。每个“项目”只能有一个“类别”。

数据模型似乎很简单:

  • 带有ID和DESCRIPTION
  • 的“过道”表
  • 带有ID,NAME和引用“过道”表的AISLE_ID的“类别”表
  • 带有ID,NAME,DESCRIPTION和引用“category”的CATEGORY_ID的“item”表

对象模型是我需要帮助的地方:

  1. Aisle对象可以在其中包含Category和Item对象的列表。
  2. Aisle对象可以包含Category对象列表。 Category对象可以在其中包含Item对象的列表。
  3. 过道可以有一个Item对象列表。 Category对象可以包含Item对象列表。
  4. 在每种情况下,一个Item在逻辑上都有一个Category对象。我为每个域对象都有一个DAO,所以根据它的方式,sql会稍微改变一下。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

我投票选择#2。比#1或#3更有意义。

你认为这种关系需要是双向的吗?项目是否需要能够确定其父类别和祖父母过道是谁?

答案 1 :(得分:1)

我会选择#2。

Aisle的主要关注点是其中包含哪些类别。应该由Category类决定哪些Item是成员。这使得每个对象的抽象级别保持一致 - 其中Aisle是更高级别的对象,Category是稍微更详细的级别,而item是最精细的。

答案 2 :(得分:1)

如果那些是你唯一的3个选项,那么第2号最有意义。

我想,如果我要创建这个模型,我会使用以下模型(小修改,尽量保持尽可能接近你的想法):

过道对象可以有一个类别对象列表,一个类别对象可以有一个项目对象列表,,一个项目与一个类别和一个过道相关联。

我对数据方面的修改似乎更多。

我之所以这样做,是因为,有人说“嘿,我正在寻找这个特殊的物品,过道就在哪里?” - 1次查找会给你答案。而对于您的数据模型,您需要进行2次查找。

至少我是这么认为的。