EER-Modell Tiere
Dimitri
- datenbank
0 Encoder0 Tom0 Tabellenkalk- menschelei
0 Der Martin0 Encoder0 Tom
0 hotti
Hallo zusammen!
Ich soll ein EER-Modell für eine Anwendung erstellen. Dabei bin ich auf ein Problem gestoßen, dass ich am besten anhand von Tieren illustrieren kann.
1. Es gibt Tiere.
2. Tiere unterscheiden sich nach Rasse.
3. Es gibt mehrere binäre Relation zwischen Tieren DER SELBEN RASSE.
Rassen könnte man über Relationen oder Subklassen definieren. 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.
Besten Dank.
Gruß Dimitri
Über einen Trigger könnte man das machen. Der prüft bei INSERT und UPDATE ob die Bedingung verletzt wird und bricht dann mit möglichst viel Getöse ab.
Und zusätzlich trotzdem in der Programmlogik, oder in der Query für INSERT / UPDATE, denn einen Fehler selber erkennen ist besser als dass einem der ganze Salat um die Ohren fliegt :-)
Weitere Modellierung würde ich persönlich hier gar nicht erst versuchen.
Hello,
Über einen Trigger könnte man das machen. Der prüft bei INSERT und UPDATE ob die Bedingung verletzt wird und bricht dann mit möglichst viel Getöse ab.
Ob der wirklich abbricht, und zwar möglichst mit einer (selbstdefinierbaren) Fehlernummer, hängt vom Datenbanksystem ab. MySQL konnte das zumindest bis vor kurzem noch nicht, allerdings gibt es einen schmutzigen Trick, mit dem man trotzdem einen wiedererkennbaren (auswertbaren) Fehler werfen kann.
Für die _Einhaltung_ von Regeln sind übrigens eher Strored Routines gedacht. Die kann man auch benutzen, um den Direktzugriff auf die Tabellen gänzlich zu unterbinden. Dann bilden sie praktische eine Shell um die Tabellenfunktionen Select, Insert, Update, Delete, ...
Triggers sind eher dafür gedacht, bei Eintreten bestimmter Ereignisse noch _kleine_ Veränderungen an den Daten vornehmen zu können, bevor sie dann doch eingetragen, geändert oder gelöscht werden.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo,
... könnte man ... machen ... mit ... viel ... Salat
Wie du beim Thema Tiere auf Salat kommst, ist mir ein Rätsel
scnr
Kalk
Hi,
... könnte man ... machen ... mit ... viel ... Salat
Wie du beim Thema Tiere auf Salat kommst, ist mir ein Rätsel
wahrscheinlich eine Spezialisierung auf eine bestimmte Weichtier-Gattung. ;-)
scnr
scnr,2
Martin
Wie du beim Thema Tiere auf Salat kommst, ist mir ein Rätsel
Es könnte einem auch Hack um die Ohren fliegen, aber in diesem Zusammenhang hätte das möglicherweise etwas zu sehr vom Thema abgelenkt.
Hello,
Wie du beim Thema Tiere auf Salat kommst, ist mir ein Rätsel
Es könnte einem auch Hack um die Ohren fliegen, aber in diesem Zusammenhang hätte das möglicherweise etwas zu sehr vom Thema abgelenkt.
Wieso? Das wäre dann doch Hashcode :-)
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
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:
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.