To jest stara wersja strony!


LAB: Integracja z RDBMS

Celem laboratorium jest pokazanie możlwości integracji maszyny wnioskującej SWI Prolog z systemami zarządzania relacyjnymi bazami danych (RDBMS).

Interackja taka jest możliwa z wykorzystaniem ODBC.

1 Konfiguracja ODBC

Aby móc skorzystać z tzw. źródła danych ODBC, należy w domowym katalogu utworzyć plik o nazwie .odbc.ini oraz umieścić w nim poniższą treść:

[prolog]
Description		= PostgreSQL Unicode
Driver		= PostgreSQL Unicode
Trace		= No
TraceFile		= 
Database		= prolog
Servername		= borg.ia.agh.edu.pl
Username                =
Password                =
Port		        = 5432
Protocol		= 6.4
ReadOnly		= No
RowVersioning		= No
ShowSystemTables	= No
ShowOidColumn		= No
FakeOidIndex		= No
ConnSettings		= 

Wartości pól Username oraz Password będą podane przez prowadzącego na zajęciach.

Powyższe działąnia konfigurują połączenie z źródłem danych ODBC o nazwie prolog. Źródło to łączy się z systemem zarządzania relacyjnymi bazami danych PostgreSQL działającym na serwerze borg.ia.agh.edu.pl, a konkretnie z bazą danych prolog.

ODBC w SWI-Prolog

Dokumentacja dotycząca predykatów obsługujących połączenia ODBC z bazami danych.

Połączenia

Do nawiązaywania połączenia z źródłem danych ODBC służy predykat odbc_connect/3. Pierwszym argumentem jest nazwa źródła danych (w poniższym przykładzie prolog), drugim jest identyfikator połączenia, trzecim opcje.

odbc_connect('prolog', Polaczenie,
             [open(once)
           ]).

Przed zakończeniem korzystania z połączenia z źródłem danych należy wywołać predykat odbc_disconnect/1, którego argumentem musi być identyfikator połączenia.

odbc_disconnect(Polaczenie).

Zamiast identyfikatora połączenia można użyć synaonimu połączenia, korzystając z opcji alias:

odbc_connect('prolog', _,
             [ alias(prolog),
               open(once)
           ]).

Tak otwarte połączenie można zakończyć:

odbc_disconnect(prolog).

Schemat Bazy Danych

CREATE TABLE klienci (
    idklienta VARCHAR(10) NOT NULL,
    haslo VARCHAR(10) NOT NULL,
    nazwa VARCHAR(40) NOT NULL,
    miasto VARCHAR(40) NOT NULL,
    kod CHAR(6) NOT NULL,
    adres VARCHAR(40) NOT NULL,
    email VARCHAR(40),
    telefon VARCHAR(16) NOT NULL,
    fax VARCHAR(16),
    nip CHAR(13),
    regon CHAR(9)
);
 
CREATE TABLE kompozycje (
    idkompozycji CHAR(5) NOT NULL,
    nazwa VARCHAR(40) NOT NULL,
    opis VARCHAR(100),
    cena NUMERIC(7,2),
    minimum INTEGER,
    stan INTEGER
);
 
 
CREATE TABLE odbiorcy (
    idodbiorcy INTEGER NOT NULL,
    nazwa VARCHAR(40) NOT NULL,
    miasto VARCHAR(40) NOT NULL,
    kod CHAR(6) NOT NULL,
    adres VARCHAR(60) NOT NULL
);
 
 
CREATE TABLE zamowienia (
    idzamowienia INTEGER NOT NULL,
    idklienta VARCHAR(10) NOT NULL,
    idodbiorcy INTEGER NOT NULL,
    idkompozycji CHAR(5) NOT NULL,
    termin DATE NOT NULL,
    cena NUMERIC(7,2),
    zaplacone BOOLEAN,
    uwagi VARCHAR(200)
);
 
 
CREATE TABLE historia (
    idzamowienia INTEGER NOT NULL,
    idklienta VARCHAR(10),
    idkompozycji CHAR(5),
    wartosc NUMERIC(7,2),
    termin DATE
);

Proste Zapytania

C.d.

Ile można kupić czekoladek za 100 zł.

pl/prolog/prolog_lab/prolog_lab_rdbms.1242060921.txt.gz · ostatnio zmienione: 2019/06/27 15:59 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0