2012-06-29 12 views

risposta

3

Le somiglianze vengono acquisite dal linguaggio di query Datalog. Here è la motivazione e una migliore spiegazione della connessione tra logica e database. Questo estratto dovrebbe indirizzare la tua domanda:

Tuttavia, accoppiamento Prolog e database relazionali mostrano alcune dissonanze . Fatti e regole in Prolog sono organizzati in un ordine totale e la semantica di un programma Prolog dipende da questo ordine. Nel contrasto , le relazioni in un database sono considerate come serie non ordinate di tuple e il risultato di una query è indipendente da qualsiasi ordine fisico . L'elaborazione dei programmi Prolog è orientata a tuple mentre i database relazionali sono orientati. Prolog offre le funzioni procedurali come il predicato di taglio per consentire al programmatore di controllare il processo di inferenza . L'ordine di valutazione di un programma Prolog è predeterminato, mentre le espressioni nel calcolo relazionale sono puramente dichiarativo e la valutazione effettiva viene lasciata a un processore di query che può riorganizzare la query per scopi di ottimizzazione. L'ottimizzazione delle query è stata fondamentale per il successo dei database relazionali. La natura procedurale del motore Prolog lascia l'onere dell'ottimizzazione con il programmatore.

2

Sebbene SQL e Prolog dimostrino entrambi concetti di logica del primo ordine, nessuno dei due è un'implementazione completa di predicate calculus.

Prolog e altri linguaggi di programmazione logica sono fortemente dipendenti dalla ricorsione, sia per la definizione di strutture di dati che per i predicati.

SQL di per sé non consente la ricorsione e l'introduzione di stored procedure è stata eseguita con limitazioni sulla profondità di annidamento di tali chiamate. Per esempio. SQL Server 2000 a 2012 consente at most 32 nested calls.

Nei database relazionali le "relazioni" sono reificate come tabelle (o più flessibilmente, come viste). L'aspetto più simile di Prolog è dynamic factbases, che in alcune implementazioni (SWI, Amzi) consente l'indicizzazione delle prestazioni, molto simile all'indicizzazione delle tabelle relazionali per le prestazioni in SQL.

Sebbene gli RDBMS SQL siano progettati per funzionare in modo efficiente con insiemi di dati molto più ampi di quelli di cui necessita un'implementazione Prolog, Prolog può almeno essere utilizzato per prototipare sia il database che gli aspetti di processo di un progetto di sistema.

Vedere here for a 2005 thesis che esplora estendendo i database relazionali con l'inferenza di Prolog.

Problemi correlati