Digamos que tengo el típico entidad cocheDDD: subclases y entidades raíz
class Car : Entity
{
public double MaxSpeed { get; set; }
public Color Color { get; set; }
/* ... */
}
Esta entidad, en mi modelo de dominio, sería la entidad raíz de un agregado.
Ahora digamos que estoy especializado en autos. Creo un Ferrari, y los felices propietarios de Ferraris gusta llamarlos por un apodo:
class Ferrari : Car
{
public string Nickname { get; set; }
}
Digamos que tengo otra entidad, el Compañía entidad. Sería la entidad de raíz de otra Agregado. Hay muchas personas trabajando en una empresa, representada por la entidad Persona. Las personas pueden tener autos. Pero el Presidente de una empresa suele ser muy rica y esta clase de personas, que tienen Ferraris:
class President : Person
{
public Ferrari Ferrari { get; set; }
}
En esta situación, tengo la entidad Presidente, que es dentro la Empresa Aggregate, que contiene una referencia a un Ferrari, una especialización de la entidad raíz de otro agregado.
¿Es esto correcto a la vista de DDD? ¿Puedo/debería considerar la especialización de las entidades raíz como entidades raíz del mismo agregado? Quiero decir, en el dominio que describí, ¿la entidad Ferrari también es la entidad raíz del Car Aggregate (ya que Ferrari también es un Auto)?
Ahora vamos a decir que tengo que persisten este modelo a una base de datos. Creo que mi pregunta no depende del marco OR/M que usaré.
¿Cómo debo compilar la tabla que contiene Cars? ¿Debo construir una sola tabla Cars, con una columna "CarType" (valores posibles: "Car", "Ferrari") y una columna Nullname Nickname?
¿O debería construir una tabla para Cars y una tabla para Ferraris, esta última teniendo su PK a FK de Cars?
Gracias!
¡Fantástico! ¡Gracias! En realidad, en mi sistema "real", los "Automóviles" son muy importantes, pero el "Ferrari" es la cosa más importante en mi dominio, de la que no puedo perder la pista, debo hacer estadísticas al respecto. –