Gibt es heutzutage einen Grund, Einschränkungen zwischen Tabellen (innerhalb von SQL Server) zu erstellen? Wenn ja wann Die meisten Anwendungen in meinem Bereich basieren auf Objektprinzipien und Tabellen werden bei Bedarf zusammengefügt. Die Nachfrage richtet sich nach dem Bedarf der Anwendung. Ich werde nicht eine Reihe von eingeschränkten Tabellen für eine einfache Suche laden, für die wiederum (nach der Aktion) eine einfache Suche erforderlich ist.
ORM-Tools wie EntityContext, Linq2Data, NHibernate behandeln die Einschränkungen auch selbst, zumindest wissen Sie, welche Tabellen einander benötigen. Wenn Sie Einschränkungen innerhalb des Servers vornehmen, müssen Sie dieselben Änderungen nur zweimal vornehmen (erzwingen)?
Dies ist normalerweise keine Entscheidungsfrage, aber diese Datenbank ist ganz anders aufgebaut. Das Design sieht regelmäßig gut aus und spiegelt hauptsächlich die Objekte wider, die von den Anwendungen verwendet werden. Was mich stört, sind alle Einschränkungen, die in SQL Server mit "nicht kaskadieren" konfiguriert sind. Das bedeutet, dass Sie beim Codieren neuer Datenbankabfragen "Suchen und Finden" spielen müssen. In einigen Fällen sind bis zu 10 Ebenen einer genauen Reihenfolge erforderlich, um ein einzelnes Löschen durchzuführen.
Das überrascht mich und ich bin mir nicht sicher, wie ich damit umgehen soll.
In meiner einfachen Welt verlieren die Einschränkungen durch diese Einstellung den größten Teil des Zwecks. OK, wenn Hosts ohne Kenntnis des Designs auf die Datenbank zugreifen.
Wie würden Sie sich in diesem Szenario verhalten?
Warum nicht einfach alle Einschränkungen aus db entfernen und auf Anwendungsebene belassen?