Constraints / Einschränkungen erstellen

Eine Einschränkung legt fest, daß die Werte in einer Spalte eindeutig sein müssen. Einschränkungen können sich auf eine oder auf mehrere Spalten beziehen. Typische vom System genutzte Einschränkungen bezüglich einzelner Spalten erzwingen die Eindeutigkeit von Tabellen- und Nutzernamen. Typische Einschränkungen in bezug auf mehrere Spalten fordern die Eindeutigkeit von Spaltennamen innerhalb einer Tabelle oder die Eindeutigkeit der Kombination aus Nutzertyp und Mailadresse. Dies wird durch Constraints erreicht, die sich über mehrere Spalten erstrecken. Im ersten Fall sind dies der Spaltennamen und die Spalte, welche die Id der Tabellenzeile enthält, im zweiten Fall wird ein Constraint auf die beiden Spalten Nutzertyp und Mailadresse gelegt. Ein Constraint kann nur Spalten aus einer Tabelle umfassen. Das folgende Menü besteht aus zwei Teilen: Zunächst werden die Grundmerkmale einer Einschränkung festgelegt. Hierbei ändert sich der Text des zweiten Buttons bereits von 'Neuer Constraint' zu 'Neue C-Spalte'. Im Untermenü, welches über diesen Button aufrufbar ist, wird mindestens eine Spalte der im Hauptmenü festgelegten Tabelle ausgewählt.

SuchenNeue C-SpalteSpeichernAbbruch



Hilfe
Übersicht
 -    Eindeutigkeit Artikelname / Preis
   - Artikel.A_Name
   - Artikel.A_Preis
Id
Einschränkungs-Name *
Tabelle *
Fehlermeldung
Status *
Owner
Protokoll2005-09-17 23:12:27, admin    Liste

Löschen

Der Name der Einschränkung unterliegt selbst der Einschränkung, daß er eindeutig sein muß, damit die ausgegebenen Suchergebnisse verständlich sind. Er kann Leerzeichen und gewisse Sonderzeichen enthalten. Das Beispiel verdeutlicht allerdings, daß ein zu langer Name einen Umbruch im Suchergebnis erzeugt. Der optionale Eintrag 'Fehlermeldung' ermöglicht die Definition einer für den Nutzer verständlichen Meldung, die genauer erklärt, was bei der Dateneingabe zu beachten ist. Sie kann zwei Leerstellen ({0} und {1}) enthalten, welche zur Laufzeit mit dem Namen der Tabelle und dem Namen der Einschränkung belegt werden. Der hier gewählte Text entspricht der Fehlermeldung, falls dieser Eintrag fehlt und erzeugt:

Die Einschränkung 'Eindeutigkeit Artikelname / Preis' der Tabelle 'Artikel' wurde verletzt. Korrigieren Sie Ihre Eingabe.
Hier wäre bsp. der Eintrag
Die Kombination aus Artikelname und -preis muß eindeutig sein.
denkbar. Die Ausdrücke {0} und {1} dürfen fehlen.

Für diese Spalte können zusätzliche Multilang-Verzweigungen definiert werden, um diese Fehlermeldung in verschiedenen Sprachen ausgeben zu können.

Das Untermenü für die Spalten

Zu jeder Hauptzeile muß mindestens eine Unterzeile erzeugt werden. Die folgende Definition fordert, daß die Kombination aus Artikelname und Preis eindeutig sein soll.

SuchenNeue C-SpalteSpeichernAbbruch



Hilfe
Übersicht  (1/1)
 < 1 > 
 -    Eindeutigkeit Artikelname / Preis
   - Artikel.A_Name
   - Artikel.A_Preis
Id
Spalte *
Position *

Löschen

Aufgrund der Einschränkungen für Browser kann die Reihenfolge nur durch Ziffern festgelegt werden. Die Verkleinerung eines Wertes führt zum Höherstufen aller Werte ab dem neuen Eintrag, die Erhöhung eines Wertes erzeugt umgekehrt die Verkleinerung der anderen Werte. Wird im ersten Menü die Tabelle geändert, so werden alle Unterzeilen gelöscht.

Sicherheit

Zur Erstellung von Constraints ist das spezifische oder das allgemeine Add-Recht notwendig. Aktive Constraints werden immer berücksichtigt, unabhängig vom ausführenden Benutzer. Das Execute-Recht spielt hier keine Rolle. Es sind - seltene - Fälle denkbar, in welchen es sinnvoll sein kann, einer Gruppe Berechtigungen für die Bearbeitung eines einzelnen Constraints zuzuordnen. Deshalb sind Constraints als Einzelobjekte im Menü 16 / Berechtigungssätze aufgeführt.

Wenn ein Constraint für einen sd-Kunden mit - für ihn - intern sicherheitsrelevanten Entscheidungen zusammenhängt, so ist die Edit-Berechtigung für Constraints bei diesem Kunden ebenfalls sicherheitsrelevant. Denn die Berechtigung zum Editieren eines Constraints bedeutet, diesen deaktivieren zu können, so daß die tatsächliche Implementation gelöscht wird und nur die Metadaten in den eigenen Systemtabellen erhalten bleiben.

Hinweise

Die Architektur des Gesamtsystems führt dazu, daß NotNull- und RegEx-Einschränkungen im Vorfeld vom Webserver geprüft werden, anschließend wird der Datensatz zum Datenbankserver gesendet. Die dort aufgerufene gespeicherte Prozedur überprüft zunächst die Zugriffsberechtigung und versucht anschließend, die Zeile zu speichern. Eine Constraintsverletzung kann zu diesem Zeitpunkt sichtbar werden. Besitzt ein Benutzer keine Berechtigung zum Speichern der gewünschten Änderungen, so wird keine Constraints-Prüfung durchgeführt.

Der Status 'inaktiv' kann genutzt werden, um den Constraint in der Tabelle zu löschen, die definierten Informationen jedoch zu bewahren.

Da ein Constraint ein Systemobjekt darstellt, wird er verzögert erstellt. Falls die Daten nicht die geforderte Einschränkung erfüllen, so tritt ein Fehler bei der Erstellung auf. Der Status wird auf 'error' gesetzt und eine zusätzliche Fehlermeldung ausgegeben. Ein typisches Beispiel zeigt die folgende Maske:

SuchenNeue C-SpalteSpeichernAbbruch



Hilfe
Übersicht  (1/1)
 < 1 > 
 +    Eindeutigkeit Artikelname / Preis (F)
Id
Einschränkungs-Name *
Tabelle *
Fehlermeldung
Status *
Owner
Protokoll2005-09-18 01:10:55, admin    Liste

Löschen

Die Einschränkung konnte nicht erstellt werden, die gewählten Spalten enthalten bereits Duplikate. Löschen Sie diese und versuchen Sie es erneut.

Die Datenbank meldet:

CREATE UNIQUE INDEX terminated because a duplicate key was found for index ID 2. Most significant primary key is 'Oberhemd'. Could not create constraint. See previous errors. The statement has been terminated.

Die hier ausgegebenen Fehlermeldungen bestehen immer aus zwei Teilen: Zum einen aus der sprachspezifischen, von server-daten erzeugten Fehlermeldung, die aus der gemeldeten Fehlernummer abgeleitet wird. Zum anderen wird immer die englischsprachige Fehlermeldung des MS-SqlServers ausgegeben. Diese liefert einerseits genauere Hinweise, andererseits können diese ergänzenden Hinweise nicht verläßlich genug extrahiert und gesondert ausgegeben werden.

Ein solcher Fehler erfordert, die Daten per Hand zu korrigieren. Anschließend genügt es, den Status auf 'active' oder 'create again' zu setzen und die Informationen erneut zu speichern. Dies startet erneut die Constraintserstellung im Hintergrund und führt entweder zum Erfolg oder zu einem weiteren Fehler.


Kontaktformular:

Schreiben Sie mir und wir bauen gemeinsam Ihre neue Web-Datenbank!

Die Erläuterungen zum Datenschutz habe ich gelesen und stimme diesen zu.

© 2003-2018 Jürgen Auer, Berlin.