<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Constraint</id>
	<title>Constraint - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Constraint"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Constraint&amp;action=history"/>
	<updated>2026-05-27T01:41:41Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Constraint&amp;diff=47500&amp;oldid=prev</id>
		<title>imported&gt;RoBri: -Sperrumgehung &quot;Eindeutscher&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Constraint&amp;diff=47500&amp;oldid=prev"/>
		<updated>2025-09-11T07:50:16Z</updated>

		<summary type="html">&lt;p&gt;-Sperrumgehung &amp;quot;Eindeutscher&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Begriffsklärungshinweis}}&lt;br /&gt;
{{Überarbeiten}}&lt;br /&gt;
Mit &amp;#039;&amp;#039;&amp;#039;Constraint&amp;#039;&amp;#039;&amp;#039; (deutsch „Einschränkung“) werden in diversen [[Programmiersprache]]n Bedingungen definiert, die zwingend vom Wert einer [[Variable (Programmierung)|Variablen]] erfüllt werden müssen, damit der Wert ins System übernommen werden kann. In [[Datenbanksystem]]en finden Constraints rege Anwendung, um den [[Wertebereich]] (Domain) eines [[Skalare Variable|Skalars]] einzuschränken und Werte auf deren Zulässigkeit zu überprüfen. In der [[Programmanalyse]] verwendet man Constraints bei der Analyse funktionaler Programme.&lt;br /&gt;
&lt;br /&gt;
== Constraints in Programmiersprachen ==&lt;br /&gt;
Constraints helfen dem [[Compiler]] und der [[Laufzeitumgebung]], [[Programmierfehler]] einfacher zu erkennen. Nehmen wir eine Variable &amp;lt;code&amp;gt;Anzahl_der_Personen_im_Aufzug&amp;lt;/code&amp;gt; an, hier ist anschaulich klar, dass diese Variable keinen negativen Wert haben darf und nicht über einem Maximalwert liegen darf.&lt;br /&gt;
&lt;br /&gt;
In der Programmiersprache [[Ada (Programmiersprache)|Ada]] kann das so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ada&amp;quot;&amp;gt;&lt;br /&gt;
type Kapazitaet is range 0..13;&lt;br /&gt;
Anzahl_der_Personen_im_Aufzug : Kapazitaet := 15;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier kann der Compiler sofort erkennen, dass der Wert 15 außerhalb der zuvor spezifizierten Bedingung &amp;lt;code&amp;gt;range&amp;lt;/code&amp;gt; liegt. Wäre die Variable nicht eingeschränkt, müsste der Programmierer diese Bedingung bei jeder Änderung selbst überprüfen.&lt;br /&gt;
&lt;br /&gt;
== Constraints in Datenbanksystemen ==&lt;br /&gt;
In Datenbanksystemen funktionieren Constraints prinzipiell gleich. Constraints definieren Bedingungen, die beim Einfügen, Ändern und Löschen von Datensätzen in der Datenbank erfüllt werden müssen.&lt;br /&gt;
&lt;br /&gt;
Viele Datenbanksysteme kennen zusätzlich zu den Constraints noch [[Transaktion (Informatik)|Transaktionen]]. Die Kombination dieser beiden Konzepte ist sehr mächtig, da spätestens am Ende einer Transaktion alle Constraints überprüft werden. Wenn dabei ein Constraint fehlschlägt, werden sämtliche Änderungen an den Daten, die in dieser Transaktion durchgeführt wurden, zurückgenommen, als seien sie nie durchgeführt worden.&lt;br /&gt;
&lt;br /&gt;
Constraints werden in Datenbanksystemen durch [[Integritätsbedingung]]en definiert.&lt;br /&gt;
&lt;br /&gt;
Auflistung möglicher Constraints in Datenbanksystemen:&lt;br /&gt;
* &amp;lt;code&amp;gt;NOT NULL&amp;lt;/code&amp;gt; → der Skalar kann nicht &amp;lt;code&amp;gt;NULL&amp;lt;/code&amp;gt; sein&lt;br /&gt;
* &amp;lt;code&amp;gt;PRIMARY KEY&amp;lt;/code&amp;gt; → der Skalar muss einzigartig sein und kann nicht &amp;lt;code&amp;gt;NULL&amp;lt;/code&amp;gt; sein&lt;br /&gt;
* &amp;lt;code&amp;gt;FOREIGN KEY&amp;lt;/code&amp;gt; → der Skalar muss auf [[Referentielle Integrität]] geprüft werden&lt;br /&gt;
* &amp;lt;code&amp;gt;UNIQUE&amp;lt;/code&amp;gt; → der Skalar muss innerhalb des Attributes einzigartig sein&lt;br /&gt;
* &amp;lt;code&amp;gt;CHECK()&amp;lt;/code&amp;gt; → explizite Überprüfungsanweisung an das [[Datenbankmanagementsystem|DBMS]]; auf was geprüft werden muss, wird als Option dieser Anweisung definiert&amp;lt;ref name=&amp;quot;psqlconstraints&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Des Weiteren gibt es verschiedene Typen von Constraints:&lt;br /&gt;
* Attribut Constraints, beziehen sich auf eine einzelne Spalte&lt;br /&gt;
* Relationen-Constraints, beziehen sich auf mehrere Attribute (Spalten)&lt;br /&gt;
* Benannte Constraints, können anhand des Namens manipuliert werden&lt;br /&gt;
* Unbenannte Constraints, erhalten einen vom System generierten Namen&lt;br /&gt;
&lt;br /&gt;
=== Beispiel: Attribut Constraint ===&lt;br /&gt;
Im nachfolgenden Beispiel handelt es sich bei &amp;lt;code&amp;gt;PRIMARY KEY&amp;lt;/code&amp;gt; um einen unbenannten Constraint und bei &amp;lt;code&amp;gt;CONSTRAINT persons_fp&amp;lt;/code&amp;gt; um einen benannten Constraint.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight highlight=&amp;quot;3&amp;quot; lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE person(&lt;br /&gt;
    id          PRIMARY KEY,&lt;br /&gt;
    fingerprint BYTEA CONSTRAINT persons_fp UNIQUE&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Beispiel: Relationen Constraint ===&lt;br /&gt;
Im nachfolgenden Beispiel handelt es sich bei &amp;lt;code&amp;gt;CONSTRAINT person_prime&amp;lt;/code&amp;gt; um einen benannten Constraint und bei &amp;lt;code&amp;gt;UNIQUE()&amp;lt;/code&amp;gt; um einen unbenannten Constraint.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight highlight=&amp;quot;6-7&amp;quot; lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE person(&lt;br /&gt;
    id      SERIAL,&lt;br /&gt;
    name    VARCHAR,&lt;br /&gt;
    dob     DATE,&lt;br /&gt;
    born_in VARCHAR,&lt;br /&gt;
    CONSTRAINT person_prime PRIMARY KEY(id),&lt;br /&gt;
    UNIQUE(name, dob, born_in)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Constraints in der Logistik ==&lt;br /&gt;
Ein Constraint wird auch in diesem Fall als Einschränkung für eine durchgeführte [[Handeln|Aktion]] verwendet. Es wird nach [[Anforderung (Heuristik)|Anforderungen]] oder [[Requirements]] und Constraints unterschieden. Bei der Versorgung mit Gütern und Dienstleistungen in der [[Logistik]] geben die Constraints z.&amp;amp;nbsp;B. die Einschränkungen an, die bei Zuladung im Bereich [[Volumen]] oder [[Masse (Physik)|Gewicht]] für bestimmte [[Lkw]] gelten.&lt;br /&gt;
&lt;br /&gt;
== Constraints in der Evolution ==&lt;br /&gt;
In der Entwicklung schränken [[Constraint (Evolution)|Constraints]] evolutionäre Wege ein, zum Beispiel auf Grund historischer Gegebenheiten im Bauplan.&lt;br /&gt;
&lt;br /&gt;
== Constraints in der theoretischen Informatik ==&lt;br /&gt;
In der [[Theoretische Informatik|theoretischen Informatik]] und speziell in der [[Künstliche Intelligenz|KI-Forschung]] werden relationale Aussagen, die freie Variablen enthalten, oft als Constraint bezeichnet. Dann wird eine Variablenbelegung oder [[Interpretation (Logik)|Interpretation]] gesucht, die zu einer gegebenen Menge von Constraints passt, folglich diese simultan erfüllt.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel: &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; ist echt oberhalb von &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; ist echt oberhalb von &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt; ist oberhalb von &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; (diese Constraintmenge ist nicht erfüllbar).&lt;br /&gt;
&lt;br /&gt;
Eine Belegung, die alle Constraints erfüllt, wird oft als „[[Modelltheorie|Modell]]“ bezeichnet.&lt;br /&gt;
&lt;br /&gt;
== Constraints in Und-Oder-Bäumen ==&lt;br /&gt;
In [[Und-Oder-Baum|Und-Oder-Bäumen]] finden sich Constraints an den Und-Knoten, hier müssen mehrere Teilziele [[konjunktiv]] erfüllt werden, um das Hauptziel zu erfüllen.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Constraintprogrammierung]]&lt;br /&gt;
* [[Constraint Satisfaction Problem]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{Internetquelle&lt;br /&gt;
 | autor   = Roman Barták&lt;br /&gt;
 | url     = http://kti.mff.cuni.cz/~bartak/constraints/&lt;br /&gt;
 | titel   = Guide to Constraint Programming&lt;br /&gt;
 | zugriff = 2010-01-09&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;psqlconstraints&amp;quot;&amp;gt;{{Internetquelle&lt;br /&gt;
 |hrsg         = PostgreSQL Global Development Group&lt;br /&gt;
 |werk         = PostgreSQL: Das Offizielle Handbuch&lt;br /&gt;
 |url          = http://www.postgresql.org/files/documentation/books/pghandbuch/html/ddl-constraints.html&lt;br /&gt;
 |titel        = Kapitel 5. Datendefinition - 5.4. Constraints&lt;br /&gt;
 |kommentar    = englisch: http://www.postgresql.org/docs/current/static/ddl-constraints.html&lt;br /&gt;
 |zugriff      = 2011-11-03&lt;br /&gt;
 |archiv-url   = https://web.archive.org/web/20111027212156/http://www.postgresql.org/files/documentation/books/pghandbuch/html/ddl-constraints.html&lt;br /&gt;
 |archiv-datum = 2011-10-27&lt;br /&gt;
 }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Datenbanktheorie]]&lt;br /&gt;
[[Kategorie:Programmiersprachelement]]&lt;/div&gt;</summary>
		<author><name>imported&gt;RoBri</name></author>
	</entry>
</feed>