Frage

Lesen auf Constraint-Logikprogrammierung , ich kann nicht umhin zu bemerken, ein scheinbare Beziehung mit SQL-Programmierung. Ist SQL ein Beispiel für "Constraint-Logikprogrammierung" in Aktion?

War es hilfreich?

Lösung

Sie sind sehr ähnlich von einem hohen Niveau. Beide sind deklarative oder Satz basiert, anstatt iterative (das heißt, Sie fragen nach, was Sie wollen - Sie tun nicht Schleife durch und verarbeiten einzelne Elemente nacheinander).

CLP kann in SQL modelliert werden, aber es ist ein Fall eine bessere Lösung für ein Problem zu finden. SQL ist gut für die Antworten in einem bestimmten Datensatz zu finden, die bereits explizit definiert ist. CLP ist gut für die Antworten in Domänen zu finden, die lose oder manchmal sogar nicht einmal vollständig definiert ist.

Als ein Beispiel. Wenn ich wollte alle geraden Zahlen zwischen 1 und 10 Millionen mit SQL ich zurückkehren würde mit allen Zahlen eine Tabelle müssen aufgelistet auszuwählen aus (einem vorhandenen Datensatz). Mit CLP Ich würde ein gebundenes (10M) nur brauchen, aber würde nicht explizit erstellen, die alle Datensätze.

Intern CLP-Motoren (CSP Probleme) können auch schließen Zwänge sie schneller zu machen. SQL Sie müssten diese Regeln herausfinden und sie ausdrücklich zu erklären. Zum Beispiel, wenn Ihr SQL ist, wo A = B und B = C, ein CLP Motor heraus könnten, dass A = C und Verwendung, die schneller zu laufen, wo SQL würde nicht. Sie können in ähnlicher Weise schließt Domänen als auch zur Optimierung der Laufzeit (wenn ich weiß, dass die geraden Zahlen werden nie eine CLP wird sie wieder aus der Betrachtung werfen - SQL wird sie noch überlegen, aber nicht mehr zurück als „Lösung“).

Hoffentlich hilft - ich kann mehr technische erhalten, wenn Sie es brauchen. Der entscheidende Punkt zu erinnern ist, die beiden sind ähnlich, aber die Sie verwenden, hängt von dem Problem Modell. Wenn man sagen kann „das sind meine Variablen, und diese sind, wie die miteinander in Beziehung, gib mir jede gültige Lösung“ dann CLP ist ein guter Kandidat. Wenn man sagen kann: „Es sind meine Variablen, und das sind die Besonderheiten, geben Sie mir eine Teilmenge von meinem vorhandenen Daten sichern, dass passt“ dann SQL ist ein besserer Kandidat.

Andere Tipps

Ich habe nicht eine vollständige Antwort, aber man könnte es interessant findet bei Datalog und DLV zu suchen. Sie sind vielleicht die „missing link“ zwischen Logikprogrammierung (aber nicht CLP) und SQL, die Sie Dinge verstehen deutlicher helfen.

Da es sich um mehr über LP als CLP ich etwas verpasst haben -. Wenn ja, sorry

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top