Database design 数据模型设计与领域模型设计
我正试图模拟一家杂货店。商店里有几个“过道”。每个“过道”都有一组它存储的“物品”的“类别”。每个“类别”只能属于一个“通道”。每个“项目”只能有一个“类别” 在我看来,数据模型很简单:Database design 数据模型设计与领域模型设计,database-design,oop,model,domain-driven-design,Database Design,Oop,Model,Domain Driven Design,我正试图模拟一家杂货店。商店里有几个“过道”。每个“过道”都有一组它存储的“物品”的“类别”。每个“类别”只能属于一个“通道”。每个“项目”只能有一个“类别” 在我看来,数据模型很简单: 带有ID和说明的“过道”桌子 “类别”表,带有ID、名称和参考“过道”表的过道ID 带有ID、名称、说明和引用“CATEGORY”的CATEGORY\u ID的“item”表 对象模型是我需要帮助的地方: 过道对象可以包含类别和项目对象的列表 过道对象可以具有类别对象列表。类别对象中可以有项目对象列表 过道
- 带有ID和说明的“过道”桌子
- “类别”表,带有ID、名称和参考“过道”表的过道ID
- 带有ID、名称、说明和引用“CATEGORY”的CATEGORY\u ID的“item”表
过道的主要问题是它包含哪些类别。应由Category类确定哪些项是成员。这使得每个对象的抽象层次保持一致——其中,通道是更高层次的对象,类别是更详细的层次,项目是最细粒度的 如果这是你仅有的3个选择,那么第2个最有意义 我想,如果我要创建这个模型,我会使用以下模型(稍加修改,只是尽量保持与您的想法接近): 过道对象可以有类别对象列表,类别对象可以有项目对象列表,并且项目与类别和过道关联。 我的修改似乎更多的是在数据方面 我之所以会这么做,是因为有人说“嘿,我在找这个特殊的商品,它在哪一个通道?”——1查找会给你答案。而对于数据模型,则需要进行2次查找
至少我是这么想的。@duffymo这是个很好的问题。现在,我的模型支持类别和项目之间的双向关系。它变得有点古怪,因为它将形成一个循环关系:我可能只需要包含“浅”关系,其中一个项目有一个类别,但该类别只填充了它的ID和名称,而不是所有属于该类别的项目。你觉得怎么样?@dj:那肯定是#2,因为那样你就可以有一个空列表的类别。“inverse=false”打破了Hibernate观点的循环。@duffymo当我从persistence加载数据时,整个结构是否应该存在?例如,加载过道对象时,其中包含的所有类别是否都包含该类别中包含的所有项目?取决于您所谈论的数量。如果这个数字成了问题,我会说他们是懒惰抓取的候选者。只要从持久层获取您需要的内容。@Sev我同意您的看法。我的评论与我对达菲莫的评论大致相同,因为保持一种“肤浅”的关系可能更有意义,即合成对象不包含任何进一步的合成对象。几乎每个岛上都有糖果条和小报。这是一个更准确的杂货店模型吗?