Lasst sie sagen, dass ich AutoDDD: Subklassen & Stammentität
class Car : Entity
{
public double MaxSpeed { get; set; }
public Color Color { get; set; }
/* ... */
}
Diese Einheit, in meinem Domain-Modell wäre die Stammentität ein Aggregat die typische Einheit habe.
Jetzt sagen wir, ich spezialisiere Autos. Ich erstelle ein Ferrari und die glücklichen Besitzer von Ferraris wie sie durch einen Spitznamen nennen:
class Ferrari : Car
{
public string Nickname { get; set; }
}
Lassen Sie uns sagen, dass ich ein anderes Unternehmen haben, die Firma Einheit. Es wäre die Wurzeleinheit eines anderen Aggregats. Es gibt viele Leute, die an einer Firma arbeiten, vertreten durch die Entität Person. Personen dürfen Autos haben. Aber der Präsident ein Unternehmen ist in der Regel sehr reich und diese Art von Menschen, haben sie Ferraris:
class President : Person
{
public Ferrari Ferrari { get; set; }
}
In dieser Situation habe ich das Unternehmen Präsidenten, die innerhalb die Firma Aggregate sind, das einen Verweis auf einen Ferrari enthält, eine Spezialisierung der Stammeinheit eines anderen Aggregats.
Ist das im Hinblick auf DDD korrekt? Kann/sollte ich die Spezialisierung von Wurzel-Entitäten selbst als Wurzel-Entitäten desselben Aggregats betrachten? Ich meine, in der Domäne, die ich beschrieben habe, ist die Entität Ferrari auch die Wurzel-Entität des Auto-Aggregats (da Ferrari auch ein Auto ist)?
Lassen Sie uns jetzt sagen, ich habe zu bestehen, dieses Modell zu einer Datenbank. Ich denke, dass meine Frage nicht von dem OR/M-Framework abhängt, das ich verwenden werde.
Wie soll ich den Tisch mit Autos bauen? Soll ich einen einzigen Tisch Autos bauen, mit einer "CarType" -Spalte (mögliche Werte: "Car", "Ferrari"), und einer Nullable-Nickname-Spalte?
Oder sollte ich einen Tisch für Autos und einen Tisch für Ferraris bauen, letzterer hat seinen PK einen FK von Cars?
Danke!
Fantastisch! Vielen Dank! Eigentlich sind in meinem "echten" System "Autos" sehr wichtig, aber der "Ferrari" ist das wichtigste Ding in meiner Domäne, von dem ich nicht den Überblick verlieren kann, ich muss Statistiken darüber machen. –