【发布时间】:2011-02-15 21:22:00
【问题描述】:
对此有几个问题,阅读它们对我没有帮助。在 Eric Evans DDD 中,他使用了在某些情况下地址作为值类型的示例。对于邮购公司来说,地址是一个值类型,因为地址是否被共享,还有谁住在这个地址并不重要,只是包裹到达了这个地址。
这对我来说很有意义,直到我开始考虑如何设计它。鉴于第 99 页上的图表,他是这样的:
+------------+
|Customer |
+------------+
|customerId |
|name |
|street |
|city |
|state |
+------------+
这会变成:
+------------+
|Customer | (entity)
+------------+
|customerId |
|name |
|address |
+------------+
+------------+
|Address | (value object)
+------------+
|street |
|city |
|state |
+------------+
如果这些是表,Address 将拥有自己的 Id,以便与客户建立关系,将其转变为实体。
在关系数据库中,这些将保留在同一个表中的想法,例如在第一个示例中,并且您将使用 ORM 的功能将地址抽象为值对象(例如 nHibernate 的组件功能) ?
我意识到几页后他谈到了非规范化,我只是想确保我正确理解了这个概念。
【问题讨论】: