Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

pl:prolog:prolog_lab:prolog_lab_rdbms [2009/05/11 19:24]
wojnicki
pl:prolog:prolog_lab:prolog_lab_rdbms [2019/06/27 15:50]
Linia 1: Linia 1:
-====== 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 [[wp>​ODBC]]. 
- 
-===== - 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ść: 
- 
-<​code>​ 
-[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 = ​ 
-</​code>​ 
- 
-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 ===== 
- 
-[[http://​www.swi-prolog.org/​pldoc/​package/​odbc.html|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. 
- 
-<code prolog> 
-odbc_connect('​prolog',​ Polaczenie, 
-             ​[open(once) 
-           ]). 
-</​code>​ 
- 
-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. 
- 
-<code prolog> 
-odbc_disconnect(Polaczenie). 
-</​code>​ 
- 
-Zamiast identyfikatora połączenia można użyć synaonimu połączenia,​ korzystając z opcji ''​alias'':​ 
- 
-<code prolog> 
-odbc_connect('​prolog',​ _, 
-             [ alias(prolog),​ 
-               ​open(once) 
-           ]). 
-</​code>​ 
- 
-Tak otwarte połączenie można zakończyć:​ 
- 
-<code prolog> 
-odbc_disconnect(prolog). 
-</​code>​ 
- 
-===== Schemat Bazy Danych ===== 
- 
-Schemat bazy danych, dostępnej jako źródło danych ''​prolog''​ przedstawiony jest poniżej. 
- 
-<code sql> 
-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 
-); 
- 
-</​code>​ 
- 
- 
-===== Proste Zapytania ===== 
- 
-Zapytania można realizować korzystając z predykatu ''​odbc_query/​3''​. 
- 
-Zapytanie zwracające jako wartości szukanych ''​Nazwa'',​ ''​Email''​ wartości kolumn tabeli ''​klienci''​. 
- 
-<code prolog> 
-odbc_query(prolog,​ '​SELECT nazwa, email FROM klienci'​ ,row(Nazwa, Email), []). 
-</​code>​ 
- 
-Ostatni argument ''​odbc_query/​4''​ umożliwia przekazanie dodatkowych opcji, m.in. konwersje typów pomiędzy SQL a Prologiem (patrz [[http://​www.swi-prolog.org/​pldoc/​doc_for?​object=section(3%2c '​2.2'​%2c swi('​%2fdoc%2fpackages%2fodbc.html'​))|dokumentacja]]). 
- 
-===== Zapytania ===== 
- 
-Ile można kupić czekoladek za 100 zł. 
- 
  
pl/prolog/prolog_lab/prolog_lab_rdbms.txt · ostatnio zmienione: 2019/06/27 15:50 (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