Ich nehme an, Sie sprechen von Fremdschlüsseleinschränkungen, die von der Datenbank erzwungen werden . Sie verwenden wahrscheinlich bereits Fremdschlüssel, Sie haben der Datenbank nur nichts davon erzählt.
Angenommen, ein Programmierer tut dies tatsächlich bereits auf die richtige Weise. Brauchen wir dann wirklich das Konzept der Fremdschlüssel?
Theoretisch nein. Es gab jedoch noch nie eine Software ohne Fehler.
Fehler im Anwendungscode sind normalerweise nicht so gefährlich - Sie identifizieren den Fehler und beheben ihn. Danach läuft die Anwendung wieder reibungslos. Aber wenn ein Fehler zulässt, dass aktuelle Daten in die Datenbank gelangen, bleiben Sie dabei! Es ist sehr schwierig, beschädigte Daten in der Datenbank wiederherzustellen.
Überlegen Sie, ob ein subtiler Fehler in FogBugz das Schreiben eines beschädigten Fremdschlüssels in die Datenbank ermöglichte. Es kann einfach sein, den Fehler zu beheben und den Fix in einer Bugfix-Version schnell an Kunden weiterzuleiten. Wie sollten jedoch die beschädigten Daten in Dutzenden von Datenbanken behoben werden? Der richtige Code kann jetzt plötzlich kaputt gehen, da die Annahmen über die Integrität von Fremdschlüsseln nicht mehr gelten.
In Webanwendungen spricht normalerweise nur ein Programm mit der Datenbank, sodass es nur einen Ort gibt, an dem Fehler die Daten beschädigen können. In einer Unternehmensanwendung können mehrere unabhängige Anwendungen mit derselben Datenbank sprechen (ganz zu schweigen von Personen, die direkt mit der Datenbankshell arbeiten). Es gibt keine Möglichkeit, sicher zu sein, dass alle Anwendungen immer und für immer denselben Fehlern ohne Fehler folgen.
Wenn Einschränkungen in der Datenbank codiert sind, kann das Schlimmste, was bei Fehlern passieren kann, sein, dass dem Benutzer eine hässliche Fehlermeldung angezeigt wird, dass eine SQL- Einschränkung nicht erfüllt ist. Dies ist viel besser, als aktuelle Daten in Ihre Unternehmensdatenbank zu lassen, wo sie wiederum alle Ihre Anwendungen beschädigen oder einfach zu allen Arten von falschen oder irreführenden Ausgaben führen.
Oh, und Fremdschlüsseleinschränkungen verbessern auch die Leistung, da sie standardmäßig indiziert sind. Ich kann mir keinen Grund vorstellen , keine Fremdschlüsseleinschränkungen zu verwenden.