Für was habe ich dann die Constraints in der
Datenbank ?
Du hast 2 Arten Constraints verwendet (laut den Scripts oben):
Primärschlüsselconstraints und Fremdschlüsselconstraints.
Sie haben in der Tat nichts mit dem Delphicode und der Master Detail Mechanik, die Du erzielen möchtest zu tun. Du kannst die Constraints löschen, ohne dass die Funktion Deines Programms beeinträchtigt ist.
Diese beiden und andere Arten von Constraints definieren serverseitige Regeln, die in Deinem Fall u.a. die Datenkonsistenz garantieren! Ja, garantieren. Klingt vielleicht banal, ist es aber nicht.
Beispiel 1:
Deinem Delphiprogramm ist es vermutlich erstmal egal, wenn ein Masterdatensatz gelöscht wird, auch wenn noch Detaildatensätze angezeigt werden. Dein Programm wird diese Daten auch nie wieder anzeigen, also könnte es fast egal sein.
Machst Du aber bspw. einen Report über Deine Daten, wirst Du nie auf die richtigen Zahlen kommen. Weil Du Leichen im Keller hast.
Ein
DB Server speichert eben nicht nur stumpf Daten, es geschieht viel mehr, sofern definiert. Und das unabhängig davon, wie gut oder schlecht das zugreifende Programm ist.
Kleiner Wermutstropfen:
Der Server garantiert zwar die Einhaltung gewisser Regeln, er nimmt Dir aber leider nicht ab, die aus Regelverletzung resultierenden Fehler abzufangen.
Beispiel 2:
Löscht Du bei der Constraint Definition oben einen Datensatz aus der Mastertabelle, auf den bereits Detaildatensätze verweisen, wird der Server einen Fehler erzeugen (eine häßliche Meldung auswerfen, die eigentlich niemand sehen will) und den Datensatz nicht löschen. Probier es aus, entferne den Foreign Key Constraint und von da an, ist dem Server egal, was Du löscht.
Umgekehrt kannst Du die Foreign Key Definition so erweitern, das abhängige Datensätze gleich mitgelöscht werden, praktisch, aber vielleicht etwas überraschend für den Anwender.
Dinge wie automatisch erzeugte Indizes auf Schlüsselfeldern sind ein (meist sinnvolles) Geschenk der
DB Hersteller. Eigentlich macht man auch das häufig selbst, da man dann z.B. die Namensgebung des Index und seine Art kontrollieren kann.