To jest stara wersja strony!
1. Wstęp
Celem tego dokumentu jest omówienie implementacji dedukcyjnego systemu bazodanowego DES, bazującego na języku Datalog. Największa część uwagi zostanie skupiona na praktycznych cechach narzędzia, jakkolwiek zawarte zostaną także uwagi o charakterze bardziej teoretycznym.
2.1. Uwagi odnośnie instalacji
Instalacja narzędzia DES jest wyjątkowo prosta – dla poszczególnych systemów operacyjnych, w przypadku ściągnięcia wersji wykonywalnej, polega po prostu na uruchomieniu pliku wykonywalnego EXE (Windows) bądź głównego skryptu (Linux).
2.1.1. MS Windows
W przypadku systemu operacyjnego MS Windows mamy do wyboru dwie możliwości:
- plik des.exe – uruchomienie DES w standardowej konsoli:
- plik deswin.exe – konsola dedykowana dla Windows:
2.2. Uwagi o różnych językach
DES ma postać konsoli, w której wprowadza się poszczególne polecenia. Chociaż przewodnim językiem komunikacji jest Datalog, to jednak istnieje także możliwość używania innych języków – Prologu i SQL. Komendy pozwalające na przełączanie się pomiędzy tymi trzeba językami to:
/datalog
/prolog
/sql
Tego typu komendy pozwalają na permanentne (do czasu kolejnego wpisania kolejnej tego typu komendy) przełączenie się na dany język.
Jeśli natomiast chcemy wpisać tylko jedne polecenie w danym języku, odmiennym od aktualnie używanego, należy wykonać nastepujące komendy:
/datalog polecenie
/prolog polecenie
/sql polecenie
2.2.1. Wnioski
Taki sposób operowania na trzech językach jednocześnie jest bardzo wygodny i pozwala na wykonywanie różnych czynności w sposób wyjątkowo szybki i wydajny, pozwalając na maksymalną elastyczność w osiągnięciu zamierzonego celu bądź rozwiązaniu jakiegoś problemu, jako że języki SQL oraz Datalog / Prolog cechują się większą elastycznością w trochę innych obszarach, uzupełniając się wzajemnie.
2.3. Pomoc
Poniższe komendy służą do uzyskania różnego rodzaju przydatnych informacji:
/help
– wypisuje listę dostępnych w danej chwili komend
/builtins
– wypisuje listę wbudowanych komend i poleceń
3. Opis działania poszczególnych języków
3.1. Datalog
Jest to najważniejszy język DES, z którego to narzędzie wywodzi swoją nazwę. Składnia Datalogu jest bardzo podobna do odpowiednika w Prologu, jedyna różnica jest związana z pewnymi niuansami, o których szerzej za chwilę.
Poniżej punktuję ważne elementy składni języka Datalog:
Atomy
Są to wyrażenia postaci:
a(t1, t2, …, tn)
, gdzie:
a
– predykat (relacja)
t1 … tn
– termy
Wyrażenie warunkowe
Jest to wyrażenie logiczne zawierające:
Funkcje
f(a1, … an)
,gdzie:
a1 … an
– argumenty
Dostępny jest tylko ograniczony zbiór funkcji wbudowanych
3.1.1. Wnioski
Jak widać, język Datalog oferuje maksymalny wachlarz możliwości programowania logicznego, od najprostszych i najpopularniejszych elementów do znacznie bardziej wyrafinowanych i rzadziej stosowanych.
3.2. SQL
Składnia jest zgodna ze standardem SQL.
3.2.1. Ograniczenia
W obecnej wersji (1.7) systemu DES, istnieją jednakże liczne ograniczenia. Poniżej wypunktowałem ważniejsze z nich:
brak funkcji agregujących (min, max, avg)
brak grupowania (group by)
brak klauzuli order by
brak więzów bazodanowych, takich jak klucze podstawowe w tabeli
brak podstawowych operacji na widokach (insert / update / delete)
brak informowania o występujących błędach w składni polecenia
brak możliwości wpisywania wielolinijkowych komend
3.2.2. Wielkość liter
W odniesieniu do języka Datalog, w SQL'u podjęto dwie decyzje związane z rozróżnianiem wielkości liter:
podobnie jak w języku Datalog, w identyfikatorach zdefiniowanych przez użytkownika wielkość liter ma znaczenie. Jest to niezgodne z tendencją występującą w klasycznych systemach DBMS.
w odróżnieniu do języka Datalog, we wbudowanych identyfikatorach wielkość liter nie ma znaczenia. Jest to w zgodzie z obecną tendencją występującą w klasycznych systemach DBMS.
3.2.3. Wnioski
Implementacja języka SQL w systemie DES jest ukierunkowana na wykorzystanie edukacyjne oraz porównawcze w odniesieniu do języków Datalog / Prolog. W żadnym razie nie powinno być stosowane w celu zarządzania danymi i operowania na jakiejkolwiek bazie danych.
3.3. Prolog
Składnia oraz zasady związane z językiem Prolog są w systemie DES takie same jak dla języka Datalog.
3.4. Elementy wspólne
Wspólnym, współdzielonym na identycznych zasadach aspektem każdego z trzech języków systemu DES, są elementy wbudowane. Poniżej opisuję każdy z rodzajów pod kątem składni oraz sposobu bycia wykorzystanym.
Jedynym elementem wbudowanym, który jest różni się w zależności od języka, jest operator porównania „mniejszy lub równy”. W zależności od języka, jego postać jest następująca:
Różnica wynika z faktu, iż w językach Datalog i Prolog operator ten należy odróżnić od operatora implikacji (⇐), a skoro w SQL nie istnieje taki operator, to bardziej naturalne wydaje się zapisanie operatora „mniejszy lub równy” dla tego języka w sposób zgodny z nazwą (⇐).
3.4.1. Operatory porównania
Operatory dostarczane przez system DES są standardowym zestawem spotykanym w każdym z języków programowania. Należą do nich:
X = Y
- testuje równość pomiędzy X i Y. Jeśli chociaż jeden z argumentów X, Y jest zmienną, operator ten staje się odpowiedzialny za operację unifikacji.
X \= Y
- testuje czy X jest różny od Y
X > Y
- testuje czy X jest większy od Y
X >= Y
- testuje czy X jest większy lub równy Y
X < Y
- testuje czy X jest mniejszy od Y
X ⇐ Y
- testuje czy X jest mniejszy lub równy Y
3.4.2. Funkcje
3.4.3. Operatory arytmetyczne
Również tutaj, podobnie jak w przypadku operatorów porównania, mamy do czynienia ze standardowym zestawem. Jakkolwiek, niektóre z operatorów są oznaczone dość niestandardowymi symbolami, dlatego dla porządku wypunktujmy je wszystkie: