Różnice

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

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:prolog:prolog_lab:prolog_lab_rdbms [2009/05/12 19:07]
wojnicki
pl:prolog:prolog_lab:prolog_lab_rdbms [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 ====== LAB: Integracja z RDBMS ====== ====== 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). Celem laboratorium jest pokazanie możlwości integracji maszyny wnioskującej SWI Prolog z systemami zarządzania relacyjnymi bazami danych (RDBMS).
Linia 29: Linia 30:
 </​code>​ </​code>​
  
-Wartości pól ''​Username''​ oraz ''​Password''​ będą podane przez prowadzącego na zajęciach.+**Uwaga**:  
 +  - Wartości pól ''​Username''​ oraz ''​Password''​ będą podane przez prowadzącego na zajęciach
 +  - Prawa dostępu do pliku ''​.odbc.ini''​ powinny być ustawione na 600.
  
-Powyższe działania konfigurują źródło danych ODBC o nazwie ''​prolog''​. +Powyższe działania konfigurują źródło danych ODBC o nazwie ''​prolog'' ​(''​[prolog]''​)
-Źródło to jest skojarzone z systemem zarządzania relacyjnymi bazami danych PostgreSQL działającym na serwerze ''​borg.ia.agh.edu.pl'',​ a konkretnie z bazą danych o nazwie ''​prolog''​.+Źródło to jest skojarzone z systemem zarządzania relacyjnymi bazami danych PostgreSQL działającym na serwerze ''​borg.ia.agh.edu.pl'',​ a konkretnie z bazą danych o nazwie ''​prolog'' ​(''​Database''​).
  
 +**Ćwiczenie**
 +
 +Sprawdź, czy źródło danych jest poprawnie skonfigurowane. W tym celu uruchom narzędzie ''​isql''​ umożlwiające wykonywanie zapytań w języku SQL na źródle ODBC:
 +
 +<​code>​
 +isql prolog
 +</​code>​
 +
 +Jeżeli połączenie powiodło się zostanie wyświetlony stosowny komunikat:
 +<​code>​
 +~$ isql prolog
 ++---------------------------------------+
 +| Connected! ​                           |
 +|                                       |
 +| sql-statement ​                        |
 +| help [tablename] ​                     |
 +| quit                                  |
 +|                                       |
 ++---------------------------------------+
 +SQL>
 +</​code>​
 +
 +Następnie wykonaj proste zapytanie np. ''​SELECT nazwa FROM kompozycje;''​. Rezultat powinien być zbliżony do tego poniżej:
 +
 +<​code>​
 +SQL> SELECT nazwa FROM kompozycje;
 ++-----------------------------------------+
 +| nazwa                                   |
 ++-----------------------------------------+
 +| Bukiet 1                                |
 +| Bukiet 2                                |
 +| Bukiet 3                                |
 +| Kosz 1                                  |
 +| Kosz rozyczek ​                          |
 +| Kosz mix                                |
 +| Kompozycja suszona ​                     |
 +| Koszyk gozdzikowy ​                      |
 +| Hiacynty w koszyku ​                     |
 +| Biala azalia ​                           |
 +| Rozowa azalia ​                          |
 +| Orchidea rozowa ​                        |
 +| Kosz z azalia ​                          |
 +| Wiazanka czerwona ​                      |
 +| Bukiecik serc                           |
 +| Ikebana z rozami ​                       |
 +| Kwitnacy kosz                           |
 +| Sloneczniki z lilia                     |
 +| Strelicje ​                              |
 +| Anturium latem                          |
 ++-----------------------------------------+
 +SQLRowCount returns 20
 +20 rows fetched
 +SQL>
 +</​code>​
  
 ===== - ODBC w SWI-Prolog ===== ===== - ODBC w SWI-Prolog =====
 +
 +SWI Prolog umożliwia wykonywanie zapytań na źródłach ODBC.
 +Rezultaty zapytania (pojedynczy wiersz) uzgodniane są ze wskazanymi szukanymi.
 +Wartości kolejnych kolejnych wierszy dostępne są poprzez mechanizm nawrotów.
 +
 +Przed wykonaniem zapytania należy nawiązać połączenie ze skonfigurowanym źródłem ODBC.
  
 [[http://​www.swi-prolog.org/​pldoc/​package/​odbc.html|Dokumentacja]] dotycząca predykatów obsługujących połączenia ODBC z bazami danych. [[http://​www.swi-prolog.org/​pldoc/​package/​odbc.html|Dokumentacja]] dotycząca predykatów obsługujących połączenia ODBC z bazami danych.
Linia 71: Linia 134:
 ?- odbc_disconnect(prolog). ?- odbc_disconnect(prolog).
 </​code>​ </​code>​
- 
 ===== - Schemat Bazy Danych ===== ===== - Schemat Bazy Danych =====
  
Linia 132: Linia 194:
 </​code>​ </​code>​
  
 +Kompletny {{:​pl:​prolog:​prolog_lab:​baza.sql.txt|skrypt}} z schematem i danymi.
  
 ===== - Wykonywanie zapytań ===== ===== - Wykonywanie zapytań =====
Linia 167: Linia 230:
 Częstą rozterką kupojącego jest: mam określoną sumę pieniędzy, ale co moge za to kupić np.: Częstą rozterką kupojącego jest: mam określoną sumę pieniędzy, ale co moge za to kupić np.:
   * Jakie i ile kompozycji można kupić za 200 zł?   * Jakie i ile kompozycji można kupić za 200 zł?
 +Takie zapytanie jest trudne lub wręcz niemożliwe do zaimplementowania za pomocą SQL.
  
 **Ćwiczenie** **Ćwiczenie**
Linia 185: Linia 249:
 Zmodyfikuj kod programu z poprzedniego ćwiczenia, tak aby stanowił samodzielną aplikację. Zmodyfikuj kod programu z poprzedniego ćwiczenia, tak aby stanowił samodzielną aplikację.
 Program po skonsultowaniu,​ powinien zapytać o kwotę i wyświetlić wszystkie możlwie kombinacje kompozycji kwiatowych, które można za podaną kwotę kupić, podając: identyfikator kompozycji, nazwę oraz cenę. Program po skonsultowaniu,​ powinien zapytać o kwotę i wyświetlić wszystkie możlwie kombinacje kompozycji kwiatowych, które można za podaną kwotę kupić, podając: identyfikator kompozycji, nazwę oraz cenę.
 +
 +====== Uwagi, komentarze, propozycje ======
 +
 +Laboratorium jest za krótkie. Zostaje ok. 30 minut wolnego czasu.
 +
 + --- //​[[szymek@adres.pl|Szymon Świerkosz]]//​
pl/prolog/prolog_lab/prolog_lab_rdbms.1242148053.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