Rassen könnte man über Relationen oder Subklassen definieren.
Richtig!
Aber wie kann ich verhindern, dass Relationen zwischen zwei unterschiedlichen Rassen auftreten? Oder geht das nur über die Business-Logik? Gibt es vielleicht ein bekanntes Design-Pattern? Es kann auch allgemeiner als das EER-Modell sein.
Zwei Möglichkeiten hast Du bereits genannt:
- DB-Design
- Klassenhierarchie
Es gibt noch eine dritte Möglichkeit, falls MVC (eine weitere Abstraktion)
3) Multiple Models, Modelle stehen in Beziehung
Das Modell "User" fragt Modell "UserGroup", welche Gruppen es gibt. Das Modell "Schäferhund" fragt Modell "Chiwawa" usw.