Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > by-pkgid > b64a0ed9abef7306f12de680983610ea > files > 35

howto-text-el-2006-5mdv2010.0.noarch.rpm

  Åëëçíéêü Database-SQL-RDBMS HOW-TO ãéá Linux (PostgreSQL
  -ÁíôéêåéìåíïóôñáöÝò Ó÷åóéáêü Óýóôçìá ÂÜóçò ÄåäïìÝíùí)
  Al Dev (Alavoor Vasudevan)        alavoor@yahoo.com
  v11.0, 8 Éáíïõáñßïõ 1999

  Áõôü ôï êåßìåíï åßíáé Ýíáò "ðñáêôéêüò ïäçãüò" ãéá íá åãêáôáóôÞóåôå
  ãñÞãïñá ôçí SQL Database engine êáé ôá front end åñãáëåßá ôçò óå Ýíá
  óýóôçìá Unix. ÌéëÜ åðßóçò ãéá ôç ÄéåèíÞ ãëþóóá Ðñïôýðùí (International
  Standard language) ANSI/ISO SQL êáé åîåôÜæåé ôá ðëåïíåêôÞìáôá ôçò SQL
  database engine ðïõ Ý÷åé áíáðôõ÷èåß áðü ôï world-wide internet êÜôù
  áðü Ýíá "áíïéêôü ðåñéâÜëëïí áíÜðôõîçò".  Ðñüêåéôáé ãéá ôï ÐÙÓ (HOW-TO)
  íá åãêáôáóôÞóåôå ôçí ÁíôéêåéìåíïóôñáöÞ Ó÷åóéáêÞ SQL ÂÜóç åðüìåíçò
  ãåíéÜò "PostgreSQL" óå Ýíá óýóôçìá Unix ôï ïðïßï ìðïñåß íá
  ÷ñçóéìïðïéçèåß óáí Application Database Server Þ óáí Web Database
  Server. Ç PostgreSQL õëïðïéåß Ýíá õðïóýíïëï ôïõ Äéåèíïýò Ðñïôýðïõ ISO
  êáé ANSI SQL 1998,92,89. Áõôü ôï êåßìåíï äßíåé åðßóçò ðëçñïöïñßåò ãéá
  ôá ðñïãñÜììáôá äéáóýíäåóçò ìå ôç âÜóç üðùò ôá Front End GUIs, ãéá
  åñãáëåßá RAD (Rapid Application Development), ãéá interfaces ãëùóóþí
  ðñïãñáììáôéóìïý "C", "C++", Java, Perl, ODBC, JDBC ïäçãïýò êáé
  åñãáëåßá óýíäåóçò ôçò âÜóçò ìå Web êáé ðñïãñÜììáôá ãñáöéêÞò
  äéáóýíäåóçò. Ïé ðëçñïöïñßåò ðïõ äßíïíôáé åäþ éó÷ýïõí ãéá üëåò ôéò
  ðëáôöüñìåò Unix êáé ãéá Üëëåò âÜóåéò åðßóçò êáé èá åßíáé ðïëý ÷ñÞóéìåò
  óå Üôïìá íÝá óôï ÷þñï ôùí ÂÜóåùí, ôçò ãëþóóáò SQL êáé ôçò PostgreSQL.
  Áõôü ôï êåßìåíï Ý÷åé åðßóçò ïäçãü åêìÜèçóçò ôçò SQL, êáé ç óýíôáîç SQL
  èá öáíåß ðïëý ÷ñÞóéìç óôïõò áñ÷Üñéïõò. Ïé Ýìðåéñïé èá âñïõí ÷ñÞóéìï
  áõôü ôï êåßìåíï óáí ðñü÷åéñï ïäçãü áíáöïñÜò. Ãéá ôïõò öïéôçôÝò, ïé
  ðëçñïöïñßåò ðïõ äßíïíôáé åäþ èá ôïõò êÜíåé éêáíïýò íá ðÜñïõí ôïí
  ðçãáßï êþäéêá áðü ôç ó÷åóéáêÞ âÜóç äåäïìÝíùí PostgreSQL, áð' üðïõ
  ìðïñïýí íá ìÜèïõí ðþò ãñÜöåôáé ìßá ó÷åóéáêÞ SQL âÜóç äåäïìÝíùí.
  ______________________________________________________________________

  Table of Contents


































  1. ÅéóáãùãÞ

  2. ¶ëëåò ÌïñöÝò áõôïý ôïõ êåéìÝíïõ

  3. Ïé íüìïé ôçò ÖõóéêÞò åöáñìüæïíôáé óôï ëïãéóìéêü!

  4. Ôé åßíáé ç  PostgreSQL ;

  5. Ðïý ìðïñþ íá ôç âñù ;

  6. Ç PostgreSQL õðïóôçñßæåé åîáéñåôéêÜ ìåãÜëåò âÜóåéò, ìåãáëýôåñåò áðü 200 Gig

  7. Ðþò ìðïñþ íá åìðéóôåõèþ ôçí PostgreSQL ; Ôï ðáêÝôï Regression ãéá ôåóô áíáðôýóóåé ôï áßóèçìá åìðéóôïóýíçò óôïí ðåëÜôç

  8. Ãñáöéêü ðñüãñáììá åðéêïéíùíßáò (GUI FrontEnd Tool) ìå ôçí PostgreSQL

  9. Åñãáëåßá åíüò ÏëïêëçñùìÝíïõ ÓõóôÞìáôïò ÁíÜðôõîçò ãéá PostgreSQL (GUI IDE)

  10. Ïäçãïß Äéáóýíäåóçò ìå ôçí PostgreSQL

     10.1 ODBC Drivers ãéá ôçí PostgreSQL
     10.2 UDBC Drivers ãéá ôçí PostgreSQL
     10.3 JDBC Drivers ãéá ôçí PostgreSQL
     10.4 Java ãéá PostgreSQL

  11. Perl Database Interface (DBI) Driver ãéá PostgreSQL

     11.1 Äéáóýíäåóç Perl 5 ìå PostgreSQL
     11.2 Perl Database Interface DBI
        11.2.1 ÔÉ ÅÉÍÁÉ ÔÏ DBI ;
        11.2.2 Ïäçãüò DBI ãéá ôçí PostgreSQL - DBD-Pg-0.89
        11.2.3 Ôå÷íéêÞ õðïóôÞñéîç ãéá ôï DBI
        11.2.4 Ôé åßíáé ôá DBI, DBperl, Oraperl êáé *perl;
        11.2.5 ÐñïäéáãñáöÝò DBI
        11.2.6 ÐñïâëÞìáôá Ìåôáãëþôôéóçò Þ áëëéþò "Êüðçêå óôéò ÅîåôÜóåéò!"
        11.2.7 Õðïóôçñßæåôáé ôï DBI êÜôù áðü ðëáôöüñìåò Windows 95 / NT ;
        11.2.8 Ôé åßíáé ôï DBM; Êáé ãéáôß èá ðñÝðåé íá ÷ñçóéìïðïéþ ôï DBI óôç èÝóç ôïõ;
        11.2.9 Õðïóôçñßæåôáé  < ôï ôÜäå ÷áñáêôçñéóôéêü > óôï DBI;
        11.2.10 ×ñçóéìåýåé êáèüëïõ ôï DBI ãéá ðñïãñáììáôéóìü óå CGI;
        11.2.11 Ðþò ðåôõ÷áßíù ôá÷ýôåñïõò ÷ñüíïõò óýíäåóçò ìå DBD Oracle êáé CGI;
        11.2.12 Ðþò åðéôõã÷Üíù ìüíéìåò (persistent) óõíäÝóåéò ìåôáîý DBI êáé CGI
        11.2.13 ``¼ôáí ôñÝ÷ù Ýíá perl script áðü ôçí ãñáììÞ åíôïëÞò, äïõëåýåé, áëëÜ üôáí  ôï ôñÝ÷ù áðü ôïí httpd, áðïôõã÷Üíåé!'' Ãéáôß;
        11.2.14 Ìðïñþ íá êÜíù multi-threading ìå ôï DBI;
        11.2.15 Ðþò ìðïñþ íá êáëÝóù stored procedures ìå ôï DBI;
        11.2.16 Ðþò ìðïñþ íá ðÜñù ôéò ôéìÝò ðïõ åðéóôñÝöïíôáé áðü ôéò stored procedures ìå ôï DBI;
        11.2.17 Ðþò ìðïñþ íá äçìéïõñãÞóù Þ íá êáôáóôñÝøù ìéá âÜóç äåäïìÝíùí ìå ôï DBI;
        11.2.18 Ðþò äéá÷åéñßæåôáé ôï DBI ôéò ôéìÝò NULL ;
        11.2.19 Ôé åßíáé áõôÝò ïé ìÝèïäïé func (func methods);
        11.2.20 ÅìðïñéêÞ ÕðïóôÞñéîç êáé Åêðáßäåõóç

  12. Åñãáëåßá Äéá÷åßñéóçò ôçò PostgreSQL

     12.1 PGACCESS - ¸íá ãñáöéêü åñãáëåßï ãéá ôç äéá÷åßñéóç ôçò PostgreSQL
     12.2 Windows Interactive Query Tool ãéá PostgreSQL (WISQL Þ MPSQL)
     12.3 Interactive Query Tool(ISQL) ãéá ôçí PostgreSQL - ÏíïìÜæåôáé PSQL
     12.4 MPMGR - Åñãáëåßï Äéá÷åßñéóçò ÂÜóåùí ãéá PostgresSQL

  13. Ñõèìßæïíôáò ðïëëáðëÜ êïõôéÜ PostgreSQL óå ìéá ïèüíç

  14. ÅöáñìïãÝò êáé Åñãáëåßá ãéá ôçí PostgreSQL

     14.1 Ãëþóóá 4çò ãåíéÜò (4GL) PostgreSQL ãéá åöáñìïãÝò ìå web êáé âÜóç äåäïìÝíùí - Ðëáôöüñìá áíÜðôõîçò AppGEN
     14.2 WWW Web interface ãéá PostgresSQL - DBENGINE
     14.3 Apache Webserver Module ãéá PostgreSQL - NeoSoft NeoWebScript
     14.4 Ïé HEITML åðåêôÜóåéò ôçò HTML óôïí server êáé ìéá ãëþóóá 4çò ãåíéÜò ãéá ôçí PostgreSQL
     14.5 America On-line AOL Web server ãéá PostgreSQL
     14.6 Problem/Project Tracking System Application Tool ãéá PostgreSQL
     14.7 ÌåôáôñïðÞ áñ÷åßùí dbase dbf óå PostgreSQL

  15. Åñãáëåßï ãéá Ó÷åäéáóìü/Õëïðïßçóç Web ÂÜóåùí ÄåäïìÝíùí ãéá ôçí PostgreSQL - EARP

     15.1 Ôé åßíáé ôï EARP ;
     15.2 Õëïðïßçóç
     15.3 Ôé ÷ñåéÜæåóôå ãéá íá ôñÝîåôå ôï EARP
     15.4 Ðþò äïõëåýåé ;
     15.5 Ðïý èá ôï âñù ;

  16. PHP Hypertext Preprocessor, ìéá scripting ãëþóóá ãéá ôçí PostgreSQL ç ïðïßá åíóùìáôþíåôáé óå html êáé åêôåëåßôáé óôï Server

     16.1 Êýñéá ÷áñáêôçñéóôéêÜ
     16.2 Áíáãíþñéóç/Åõ÷áñéóôßåò
     16.3 PHP 3 - Óýíôïìï Éóôïñéêü
     16.4 Ôé ìðïñþ íá êÜíù, ëïéðüí, ìå ôï PHP/FI ;
     16.5 ¸íá áðëü ðáñÜäåéãìá
     16.6 CGI Redirection
        16.6.1 Óçìåéþóåéò ãéá ôïí Apache 1.0.x
        16.6.2 Netscape HTTPD
        16.6.3 NCSA HTTPD
     16.7 ÔñÝ÷ïíôáò ôï PHP/FI áðü ôç ãñáììÞ åíôïëþí

  17. Äéáóýíäåóç ìå PostgreSQL ìÝóù Python

     17.1 Ðïý ìðïñþ íá âñù ôï PyGres ;
     17.2 Ðëçñïöïñßåò êáé õðïóôÞñéîç

  18. Åðéêïéíùíßá ìåôáîý PostgreSQL êáé WWW - WDB-P95

     18.1 Ó÷åôéêÜ ìå ôï wdb-p95
     18.2 Åßíáé áðáñáßôçôï ï äéáêïìéóôÞò ôçò PostgreSQL, ôï pgperl, êáé ôï httpd íá åßíáé óôïí ßäéï host;

  19. ÐñïãñáììáôéóôéêÝò äéáóõíäÝóåéò  ãéá "C", "C++", ESQL/C êáé Äõáäéêïß ÔåëåóôÝò  ãéá ôçí PostgreSQL

     19.1 Äéáóýíäåóç ãëþóóáò "C" ìå ôçí PostgreSQL
     19.2 Interface ãëþóóáò "C++" ãéá ôçí  PostgreSQL
     19.3 ESQL/C ãéá PostgreSQL
     19.4 Äõáäéêïß ÔåëåóôÝò ãéá ôçí PostgreSQL

  20. Japanese Kanji Êþäéêáò ãéá ôçí PostgreSQL

  21. ÌåôáöïñÜ ôçò PostgreSQL óå Windows 95/Windows NT

  22. Ëßóôåò áëëçëïãñáößáò

     22.1 ÁðïêôÞóôå Ýíá äùñåÜí ëïãáñéáóìü e-mail
     22.2 ÁããëéêÞ Ëßóôá Áëëçëïãñáößáò
     22.3 Áñ÷åßï ôçò Ëßóôáò Áëëçëïãñáößáò
     22.4 ÉóðáíéêÞ Ëßóôá Áëëçëïãñáößáò

  23. Ôåêìçñßùóç êáé Âéâëéïãñáößá

     23.1 Ïäçãïß åêìÜèçóçò êáé Åã÷åéñßäéá
     23.2 Online Ôåêìçñßùóç
     23.3 ×ñÞóéìç Âéâëéïãñáößá ÁíáöïñÜò
     23.4 Êåßìåíá ðñïäéáãñáöþí ANSI/ISO SQL  - SQL 1992, SQL 1998
     23.5 Óýíôáîç ANSI/ISO SQL 1992
     23.6 Óýíôáîç ANSI/ISO SQL 1998
     23.7 Ïäçãüò åêìÜèçóçò SQL ãéá áñ÷Üñéïõò
     23.8 ÐñïóùñéíÞ åðÝêôáóç (extension) óôï SQL92
     23.9 ÔìÞìá 0 - Áðïêôþíôáò ôá êåßìåíá ISO/ANSI SQL
     23.10 ÔìÞìá 1 - ÔñÝ÷ïõóá êáôÜóôáóç ôïõ ISO/ANSI SQL
     23.11 ÔìÞìá 2 - ISO/ANSI SQL Foundation
     23.12 ÔìÞìá 3 - ISO/ANSI SQL Call Level Interface
     23.13 ÔìÞìá 4 - ISO/ANSI SQL Persistent Stored Modules
     23.14 ÔìÞìá 5 - ÔõðïðïéÞóåéò - Äåóìåýóåéò ISO/ANSI SQL/ ISO/ANSI SQL/Bindings
     23.15 ÔìÞìá 6 - ISO/ANSI SQL XA Interface Specialization (SQL/XA)
     23.16 Part 7 - ISO/ANSI SQL Temporal
        23.16.1 ÅÉÓÁÃÙÃÇ
        23.16.2 ÌÉÁ ÌÅËÅÔÇ- ÁÐÏÈÇÊÅÕÓÇ ÓÕÃ×ÑÏÍÙÍ/ÔÑÅ×ÏÕÓÙÍ ÐËÇÑÏÖÏÑÉÙÍ
        23.16.3 ÌÅËÅÔÇ - ÁÐÏÈÇÊÅÕÓÇ ÉÓÔÏÑÉÊÙÍ ÐËÇÑÏÖÏÑÉÙÍ
        23.16.4 ÌÅËÅÔÇ - ÐÑÏÂÏËÇ (PROJECTION)
        23.16.5 ÌÅËÅÔÇ - ÓÕÓ×ÅÔÉÓÌÏÓ (JOIN)
        23.16.6 ÌÅËÅÔÇ - ÁÈÑÏÉÓÔÉÊÏÉ ÔÅËÅÓÔÅÓ (AGGREGATES)
        23.16.7 ÐÅÑÉËÇØÇ
     23.17 ÔìÞìá 8 - ISO/ANSI ÐÏËÕÌÅÓÁ SQL (SQL MULTIMEDIA - SQL/MM)

  24. Ôå÷íéêÞ õðïóôÞñéîç ãéá ôçí PostgreSQL

  25. ÏéêïíïìéêÜ êáé ÅðáããåëìáôéêÜ ÈÝìáôá

  26. Ëßóôá Üëëùí âÜóåùí äåäïìÝíùí

  27. ×ñÞóéìåò óõìâïõëÝò ãéá áíáæçôÞóåéò óôï Internet World Wide Web

  28. ÓõìðÝñáóìá

  29. Óõ÷íÜ ÄéáôõðùìÝíåò ÅñùôÞóåéò ó÷åôéêÜ ìå ôçí PostgreSQL

  30. Óçìåßùóç Ðíåõìáôéêþí ÄéêáéùìÜôùí

  31. ÐáñÜñôçìá A - Óýíôáîç ôïõ ANSI/ISO SQL 1992

  32. ÐáñÜñôçìá B - Ïäçãüò ÅêìÜèçóçò SQL ãéá áñ÷Üñéïõò

     32.1 Ïäçãüò ÅêìÜèçóçò ãéá PostgreSQL
     32.2 Äåßêôåò Internet äéåõèýíóåùí

  33. Appendix C - Ïäçãßåò ãéá ãñÞãïñç åãêáôÜóôáóç Linux



  ______________________________________________________________________

  1.  ÅéóáãùãÞ

  Ï óêïðüò áõôïý ôïõ êåéìÝíïõ åßíáé íá äþóåé êáôáíïçôïýò äåßêôåò/URLs
  ãéá íá óôÞóåôå ãñÞãïñá ôçí PostgreSQL êáé åðßóçò íá õðåñáóðéóôåß ôá
  ðëåïíåêôÞìáôá åíüò Áíïéêôïý ÓõóôÞìáôïò Ðçãáßïõ Êþäéêá (Open Source
  Code) üðùò ç PostgreSQL, Linux.

  ÊÜèå óýóôçìá õðïëïãéóôÞ óôïí êüóìï ÷ñåéÜæåôáé ìéá âÜóç äåäïìÝíùí ãéá
  íá áðïèçêåýåé /áíáêôÜ ðëçñïöïñßåò. Ï êýñéïò ëüãïò ðïõ ÷ñçóéìïðïéïýìå
  ôïí õðïëïãéóôÞ åßíáé ãéá íá áðïèçêåýïõìå, íá áíáêôïýìå êáé íá
  åðåîåñãáæüìáóôå ôçí ðëçñïöïñßá êáé íá ôá êÜíïõìå üëá áõôÜ ãñÞãïñá,
  åîïéêïíïìþíôáò Ýôóé ÷ñüíï.  Ôáõôü÷ñïíá, ôï óýóôçìá ðñÝðåé íá åßíáé
  áðëü, áîéüðéóôï, ïéêïíïìéêü êáé ðïëý åýêïëï óôç ÷ñÞóç ôïõ.  Ç ÂÜóç
  ÄåäïìÝíùí åßíáé ÓÕÓÔÇÌÁ ÆÙÔÉÊÇÓ ÓÇÌÁÓÉÁÓ ãéá êÜèå åôáéñßá óôïí êüóìï
  ìéá êáé óå áõôÞ áðïèçêåýïíôáé ðïëý óçìáíôéêÝò ðëçñïöïñßåò.  Ôá ðéï
  äçìïöéëÞ óõóôÞìáôá âÜóåùí äåäïìÝíùí âáóßæïíôáé óôéò SQL ðñïäéáãñáöÝò
  ôïõ Äéåèíïýò Ïñãáíéóìïý Ðñïôýðùí ISO (International Standard
  Organisation) ïé ïðïßåò âáóßæïíôáé ìå ôç óåéñÜ ôïõò óôo ðñüôõðï ANSI
  SQL (ÁìåñéêÜíéêï).  Ïé ôñÝ÷ïõóåò ðñïäéáãñáöÝò ðïõ ÷ñçóéìïðïéïýíôáé
  åõñÝùò åßíáé ïé ISO/ANSI SQL 1992.  Ôï ìåëëïíôéêü ðñüôõðï åßíáé ôï SQL
  1998/99 ãíùóôü êáé óáí SQL-3 êáé áíáðôýóóåôáé áêüìç. Äçìïöéëåßò âÜóåéò
  üðùò ç Oracle, ç Sybase êáé Informix åßíáé óõóôÞìáôá âáóéóìÝíá óå áõôÜ
  ôá ðñüôõðá Þ ðñïóðáèïýí íá ôá õëïðïéÞóïõí.

  ¼ðùò öáßíåôáé óå áõôü ôï êåßìåíï, õðÜñ÷ïõí ðåñéóóüôåñá áðü 20
  äéáöïñåôéêÜ óõóôÞìáôá âÜóåùí äåäïìÝíùí, åìðïñéêÜ/âáóéóìÝíá óôï
  internet, ðïõ ÷ñçóéìïðïéïýíôáé óå üëï ôïí êüóìï êáé ðïëëÜ ðåñéóóüôåñá
  èá åìöáíéóôïýí óôï ðñïóå÷Ýò ìÝëëïí.  ×ùñßò Ýíá ðñüôõðï üðùò ôï
  ANSI/ISO SQL, èá Þôáí ðïëý äýóêïëï ãéá ôïí ðåëÜôç íá áíáðôýîåé ìéá
  åöáñìïãÞ ìéá ìüíï öïñÜ êáé íá ôç ôñÝ÷åé óå üëá ôá óõóôÞìáôá âÜóåùí
  äåäïìÝíùí. Ï óçìåñéíüò ðåëÜôçò èÝëåé íá áíáðôýîåé ìéá åöáñìïãÞ ìéá
  öïñÜ ÷ñçóéìïðïéþíôáò ISO SQL, ODBC, JDBC êáé íá ôçí ðïõëÞóåé þóôå íá
  ÷ñçóéìïðïéåßôáé óå üëá ôá äéáöïñåôéêÜ óõóôÞìáôá âÜóåùí äåäïìÝíùí óôïí
  êüóìï.

  Ç äçìïöéëÝóôåñç ðáãêïóìßùò ÄÙÑÅÁÍ âÜóç, ðïõ õëïðïéåß ôìÞìá ôïõ ISO
  SQL, ANSI SQL/98, SQL/92 êáé ANSI SQL/89 RDBMS åßíáé ç PostgreSQL. Ç
  PostgreSQL åßíáé ç ÁíôéêåéìåíïóôñáöÞò Ó÷åóéáêÞ SQL ÂÜóç åðüìåíçò
  ãåíéÜò êáé ôá ìåëëïíôéêÜ ðñüôõðá ANSI SQL üðùò ôï SQL 1998 (SQL-3) êáé
  ðÝñá èá áó÷ïëïýíôáé üëï êáé ðåñéóóüôåñï ìå Áíôéêåéìåíïóôñáöåßò ÂÜóåéò
  êáé ôýðïõò äåäïìÝíùí ÁíôéêåéìÝíïõ (Object data types).  Ç PostgreSQL
  åßíáé ôï ìüíï äùñåÜí RDBMS óôïí êüóìï ðïõ õðïóôçñßæåé
  Áíôéêåéìåíïóôñáöåßò ÂÜóåéò êáé SQL. Áõôü ôï êåßìåíï èá óáò ðåé ðþò íá
  åãêáôáóôÞóåôå ôç âÜóç êáé, åðßóçò, üëá ôá ðáêÝôá ó÷åôéêÜ ìå âÜóåéò,
  ðþò íá åãêáôáóôÞóåôå Web database, application database, ãñáöéêÜ
  ðñïãñÜììáôá åðéêïéíùíßáò êáé ÷åéñéóìïý (front end GUIs êáé ðñïãñÜììáôá
  interface).  Óáò óõìâïõëåýïõìå íá ãñÜøåôå ÏÐÙÓÄÇÐÏÔÅ ôéò åöáñìïãÝò
  âÜóåùí 100 % óõìâáôÝò ìå ôá ðñüôõðá ISO/ANSI SQL, ODBC, JDBC, Ýôóé
  þóôå ç åöáñìïãÞ óáò íá åßíáé ìåôáöÝñóéìç óå ðïëëÝò âÜóåéò üðùò ïé
  PostgreSQL, Oracle, Sybase, Informix êëð.

  Ìå ôçí PostgreSQL, èá Ý÷åôå ôçí õøçëüôåñç ðïéüôçôá êáé ðïëëÜ Üëëá
  ÷áñáêôçñéóôéêÜ ìéá êáé áêïëïõèåß ôï 'Áíïéêôü ÌïíôÝëï ÁíÜðôõîçò Ðçãáßïõ
  Êþäéêá' (Open Source Code development).  Ôï Áíïéêôü ìïíôÝëï ÁíÜðôõîçò
  Ðçãáßïõ Êþäéêá åßíáé ôï ìüíï ôïõ ïðïßïõ ìðïñåßôå íá ðÜñåôå üëïí ôïí
  ðçãáßï êþäéêá, êáé ç áíÜðôõîç ãßíåôáé óôï internet áðü åîáéñåôéêÜ
  ìåãÜëï äßêôõï áíèñþðéíùí ìõáëþí.  Ç ìåëëïíôéêÞ ìüäá ðñïâëÝðåé üôé ç
  ìåãáëýôåñç áíÜðôõîç ëïãéóìéêïý èá ãßíåôáé óôçí áðïêáëïýìåíç
  "Õðåñëåùöüñï Ðëçñïöïñéþí" (Information Super-Highway) ðïõ äéáôñÝ÷åé
  üëï ôïí êüóìï. Óôá ÷ñüíéá ðïõ Ýñ÷ïíôáé, ç áíÜðôõîç ôïõ internet èá
  åßíáé åêñçêôéêÞ ç ïðïßá ìå ôç óåéñÜ ôçò èá ðõñïäïôÞóåé ôç ãñÞãïñç
  õéïèÝôçóç ôçò PostgreSQL áðü ôïõò ðåëÜôåò.

  Åöáñìüæïíôáò ôéò áñ÷Ýò ôçò öõóéêÞò (êâáíôïìç÷áíéêÞ, êëáóóéêÞ,
  èåñìïäõíáìéêÞ), ôùí ìáèçìáôéêþí êáé ôçò óôáôéóôéêÞò óôçí ðïéüôçôá ôïõ
  ëïãéóìéêïý, ðáßñíåôå ôçí õøçëüôåñç ðïéüôçôá ëïãéóìéêïý ìüíï óå Ýíá
  'Áíïéêôü Óýóôçìá Ðçãáßïõ Êþäéêá' üðùò ç PostgreSQL áíïßãïíôáò ôïí
  ðçãáßï êþäéêá óå Ýíá ðåëþñéï áñéèìü áíèñþðéíùí ìõáëþí äéáóõíäåäåìÝíùí
  ìÝóù ôçò Õðåñëåùöüñïõ Ðëçñïöïñéþí. ¼óï ìåãáëýôåñïò ï áñéèìüò ôùí
  áíèñþðùí ðïõ åñãÜæïíôáé ðÜíù ó' áõôü, ôüóï êáëýôåñç èá åßíáé ç
  ðïéüôçôá ôïõ ëïãéóìéêïý.  Ôï Áíïéêôü ÌïíôÝëï Ðçãáßïõ Êþäéêá èá
  åìðïäßóåé åðßóçò ôçí áíáêÜëõøç ôïõ ôñï÷ïý áðü ôçí áñ÷Þ , èá ìåéþóåé ôç
  äéðëÞ äïõëåéÜ  êáé èá åßíáé ðïëý ïéêïíïìéêü, èá åîïéêïíïìåß ÷ñüíï óôç
  äéáíïìÞ êáé áêïëïõèåß ôïõò íüìïõò ôçò ìïíôÝñíáò ïéêïíïìßáò ãéá
  âåëôéóôïðïßçóç ôùí åèíéêþí êáé ãåíéêþí ðüñùí.  ¼ôáí ìéá åñãáóßá
  ëïãéóìéêïý Ý÷åé ãßíåé áðü Üëëïõò, ôüôå ÄÅÍ ÷ñåéÜæåôáé íá ôçí êÜíåôå
  åóåßò ðÜëé. Äå èá óðáôáëÞóåôå ôïí ðïëýôéìï ÷ñüíï óáò óå êÜôé ðïõ Ý÷åé
  Þäç ãßíåé êáëÜ. Êáèþò èá ìðáßíïõìå óôïí 21ï áéþíá, èá õðÜñ÷åé áëëáãÞ
  óôïí ôñüðï ðïõ ðáßñíïõìå ôï ëïãéóìéêü ãéá ÷ñÞóç.  Ïé ðåëÜôåò èá
  ðñïôéìïýí ôá áíïéêôÜ óõóôÞìáôá ëïãéóìéêïý üðùò ç PostgreSQL, ôï Linux
  êëð.

  Áí áãïñÜóåôå åêôåëÝóéìá ðñïãñÜììáôá, äå èá ðÜñåôå êáé ôïí êþäéêá êáé
  ôá äéêáéþìáôÜ ôïõ.  Ï ðçãáßïò êþäéêáò åßíáé áíåêôßìçôï óôïé÷åßï åíþ ôá
  åêôåëÝóéìá äåí Ý÷ïõí êáìéÜ áîßá.  Ôï íá áãïñÜóåôå ëïãéóìéêü ìðïñåß íá
  áíÞêåé óôï ðáñåëèüí.  Ãéá íá áãïñÜóåôå êáëü õëéêü (hardware), áîßæåé
  íá îïäÝøåôå ÷ñÞìáôá êáé íá ðÜñåôå ôï ëïãéóìéêü áðü ôï internet.
  Óçìáíôéêü óçìåßï åßíáé ôï õëéêü ôïõ õðïëïãéóôÞ ôï ïðïßï êÜíåé ôïí
  êýñéï üãêï ôçò äïõëåéÜò.  To õëéêü åßíáé ôï Üëïãï ðïõ êÜíåé ôç äïõëåéÜ
  åíþ ôï ëïãéóìéêü áðëÜ ôï ïäçãåß.  Ôï õëéêü ôùí õðïëïãéóôþí åßíáé ðïëý
  ðïëýðëïêï êáé ìüíï 6 áðü ôéò 180 ÷þñåò óôïí êüóìï ìÝ÷ñé ôþñá Ý÷ïõí
  åðéäåßîåé ôçí éêáíüôçôá ó÷åäéáóìïý êáé êáôáóêåõÞò ðëáêåôþí/õëéêïý
  õðïëïãéóôþí. Ï ó÷åäéáóìüò êáé ç êáôáóêåõÞ chips õðïëïãéóôþí åßíáé
  ðñïçãìÝíç ôå÷íïëïãßá.  Åßíáé ìéá ðïëý óýíèåôç äéáäéêáóßá, äáðáíçñÞ,
  áðáéôåß ìåãÜëåò åðåíäýóåéò óå åñãïóôÜóéá êáé ìç÷áíÝò ðáñáãùãÞò ðïõ
  äïõëåýïõí ìå  ôå÷íïëïãßá 0.18 micron.  Óå Ýíá ìéêñü chip óéëéêüíçò
  åêáôïììýñéá ôñáíæßóôïñò/êõêëþìáôá åßíáé óôåíÜ ðáêåôáñéóìÝíá. Åôáéñåßåò
  üðùò ïé AMD, Intel, Cyrix, Hitachi, IBM êáé Üëëåò îüäåøáí óçìáíôéêü
  áñéèìü áðü áíèñùðï÷ñüíéá ãéá íá ãßíïõí êýñéïé õøçëþí ôå÷íïëïãéþí üðùò
  ç ìéêñïçëåêôñïíéêÞ (Micro-electronics) êáé ç íáíïçëåêôñïíéêÞ (Nano-
  electronics).  Micro óçìáßíåé (Ýíá-åêáôïììõñéïóôü ôïõ ìÝôñïõ 10^-6),
  Nano  óçìáßíåé (Ýíá-äéóåêáôïììõñéïóôü ôïõ ìÝôñïõ 10^-9).  Ç ôñÝ÷ïõóá
  ôå÷íïëïãßá ÷ñçóéìïðïéåß ìéêñïçëåêôñïíéêÞ ãýñù óôá 0.35 micron
  ÷ñçóéìïðïéþíôáò áãùãïýò áëïõìéíßïõ, êáé ìåãÝèç ôùí 0.25 micron
  ÷ñçóéìïðïéþíôáò áãùãïýò çëåêôñïíßùí áðü ÷áëêü.  Óôï êïíôéíü ìáò ìÝëëïí
  èá ÷ñçóéìïðïéçèåß ôå÷íïëïãßá ôùí 0.10 micron ìå ÷áëêü êáé
  íáíïçëåêôñïíéêÞ ãéá íá öôéÜîïõí ôóéðÜêéá õðïëïãéóôÞ. Ïé áãùãïß
  áëïõìéíßïõ èá áíôéêáôáóôáèïýí áðü ÷áëêü óôá chips ôùí õðïëïãéóôþí,
  êáèþò ï ÷áëêüò åßíáé êáëýôåñïò áãùãüò ôùí çëåêôñïíßùí.  Óôç
  öùôïëéèïãñáößá, èá ÷ñçóéìïðïéçèïýí ôå÷íéêÝò õðåñéþäïõò áêôéíïâïëßáò,
  áêôßíåò × Þ äÝóìçò çëåêôñïíßùí ãéá ÷Üñáîç êõêëùìÜôùí ìå ìåëëïíôéêÜ
  ìåãÝèç ìéêñüôåñá ôùí 0.15 micron.

  Óå 20 ÷ñüíéá áðü ôþñá, ôá ôóéð óéëéêüíçò èá áíôéêáôáóôáèïýí áðü
  ìïñéáêïýò õðïëïãéóôÝò êáé âéïôóéðò ðïõ èá åßíáé äéóåêáôïììýñéá öïñÝò
  ãñçãïñüôåñá áðü ôá ôóéð óéëéêüíçò. Ôá ìüñéá åßíáé Ýíá óýíïëï áôüìùí.
  Êáé ôá Üôïìá åßíáé ôá ìéêñÜ óùìáôßäéá ðïõ áðïôåëïýí ü,ôé âëÝðåôå óå
  áõôü ôïí êüóìï.  Ïé ìïñéáêïß õðïëïãéóôÝò èá ÷ñçóéìïðïéïýí ôá ìüñéá ôçò
  ýëçò óáí õðåñãñÞãïñïõò äéáêüðôåò on/off. ¼ôáí ï äéáêüðôçò åßíáé ON
  óçìáßíåé 1, êáé üôáí åßíáé OFF óçìáßíåé 0. ¼ëá ôá ðñïãñÜììáôá óå áõôüí
  ôïí êüóìï âáóßæïíôáé óôï äõáäéêü óýóôçìá.

  Ï ðáñáêÜôù ðßíáêáò äåß÷íåé ôç ðñüïäï êáé ôéò ìåëëïíôéêÝò ôÜóåéò
  ðñïüäïõ ôùí chips ôùí õðïëïãéóôþí.




                            Advancement of chip capabilities in future
                           ********************************************
       +--------------------------+---------+---------+---------+---------+--------+---------+
       | Item/Year                | 1997    | 1999    | 2001    | 2003    | 2012   | 2020    |
       +--------------------------+---------+---------+---------+---------+--------+---------+
       | Feature size(micron)     | 0.25    | 0.18    | 0.15    | 0.13    | 0.05   |< 0.00001|
       +--------------------------+---------+---------+---------+---------+--------+---------+
       | Wafer size(mm)           | 200     | 300     | 300     | 300     | 450    | Mol/Bio |
       +--------------------------+---------+---------+---------+---------+--------+---------+
       | Min Operating Voltage    | 1.8-2.5 | 1.5-1.8 | 1.2-1.5 | 1.2-1.5 | 0.5-0.6| < 0.001 |
       +--------------------------+---------+---------+---------+---------+--------+---------+
       | Max power dissipation    | 70      | 90      | 110     | 130     | 175    | 600     |
       +--------------------------+---------+---------+---------+---------+--------+---------+
       | On-chip frequencey (MHz) | 750     | 1,250   | 1,500   | 2,100   | 10,000 | > 50,000|
       +--------------------------+---------+---------+---------+---------+--------+---------+
       | DRAM capacity            | 256 MB  | 1 GB    | 2 GB    | 4 GB    | 256 GB | > 1000GB|
       +--------------------------+---------+---------+---------+---------+--------+---------+




  ¼ðùò âëÝðåôå, ôï õëéêü åßíáé õøçëÞò ôå÷íïëïãßáò êáé óçìáíôéêü åíþ ôï
  ëïãéóìéêü åßíáé ëéãüôåñï äýóêïëç ôå÷íïëïãßá.  Áñá, ç êáôáóêåõÞ
  õëéêïý/õëéêþí-áãáèþí åßíáé æùôéêÞò óçìáóßáò ãéá ôçí åèíéêÞ ïéêïíïìßá!
  Åôáéñåßåò üðùò ïé Compaq, Dell, Sun Microsystems, HP, IBM ðïõ
  êáôáóêåõÜæïõí õðïëïãéóôÝò åßíáé ïé êýñéïé óõíåéóöÝñïíôåò óôçí
  ïéêïíïìßá ôçò ÁìåñéêÞò óÞìåñá êáé óôï ìÝëëïí!!

  Áðü ôçí Üëëç, êÜèå ÷þñá áíåîáéñÝôùò óôïí êüóìï áíáðôýóóåé/öôéÜ÷íåé
  ëïãéóìéêü.  Óôçí ðñáãìáôéêüôçôá, ïðïéïóäÞðïôå óôïí êüóìï ìå Ýíá ìéêñü
  PC ÷áìçëïý-êüóôïõò ìðïñåß íá äçìéïõñãÞóåé Ýíá óýóôçìá ìéáò âÜóçò
  äåäïìÝíùí óáí ôçí Oracle . ÁëëÜ èá ôïõ Ýðáéñíå 10 ÷ñüíéá (ï
  äéáêïìéóôÞò ôçò Oracle åßíáé ðåñßðïõ 10 áíèñùðï-Ýôç äïõëåéÜ).  ¸íá
  áíèñùðï-Ýôïò åßíáé Ýíá Üôïìï ðïõ äïõëåýåé ìå ðëÞñç áðáó÷üëçóç ãéá Ýíá
  ïëüêëçñï Ýôïò. Áí 10 Üíèñùðïé åñãÜæïíôáé ãéá 10 Ýôç ôüôå Ý÷ïõí
  îïäåõôåß 10 áíèñùðï-Ýôç.

  ÂÜóåéò üðùò ïé Oracle, Informix, Sybase, IBM DB2 (Unix) ãñÜöôçêáí óå
  ãëþóóá "C" êáé ôá åêôåëÝóéìá äçìéïõñãÞèçêáí ìåôáãëùôôßæïíôáò ôïí
  êþäéêá êáé ìåôÜ áðïóôÜëèçêáí óôïõò ðåëÜôåò. Ïé âÜóåéò Oracle, Sybase,
  Informix åßíáé ðñïãñÜììáôá 100 % "C"!!

  Ìéá êáé Ý÷åé ãßíåé ðïëëÞ äïõëåéÜ óôçí PostgreSQL ôá ôåëåõôáßá 12
  ÷ñüíéá, äåí Ý÷åé íüçìá îáíáäçìéïõñãÞóïõìå áðü ôçí áñ÷Þ ìéá Üëëç âÜóç
  ðïõ íá éêáíïðïéåß ôï ðñüôõðï ANSI/ISO SQL. Åßíáé ìåãÜëï ðëåïíÝêôçìá íá
  ÷ñçóéìïðïéÞóïõìå ôïí õðÜñ÷ïíôá êþäéêá êáé íá ðñïóèÝóïõìå ôá
  ÷áñáêôçñéóôéêÜ ðïõ ëåßðïõí Þ ðñïóèÞêåò óôçí PostgreSQL êáé íá
  áñ÷ßóïõìå íá ôç ÷ñçóéìïðïéïýìå áìÝóùò.

  Ç PostgreSQL äåí åßíáé áðëÜ ìéá äùñåÜí âÜóç áëëÜ Ýíá êáëÞò ðïéüôçôáò
  'Ðñïúüí Internet'.  ÐñïâëÝðåôáé üôé ç æÞôçóç ðñïúüíôùí "Made By
  Internet" èá áõîçèåß åêèåôéêÜ ìéá êáé åßíáé éêáíü íá äéáôçñåß õøçëÞ
  ðïéüôçôá, ÷áìçëü êüóôïò, åîáéñåôéêÜ ìåãÜëç âÜóç ÷ñçóôþí êáé áôüìùí ðïõ
  áíáðôýóóïõí êþäéêá. ÁõôÜ ôá Ýèíç ðïõ äå ÷ñçóéìïðïéïýí ôá ðñïúüíôá
  'Made By Internet' èá ÷Üóïõí óïâáñÜ ôçí "ÅðáíÜóôáóç World-wide
  Internet" êáé èá ìåßíïõí ðïëý ðßóù áðü ôéò Üëëåò ÷þñåò. Ï ëüãïò åßíáé
  üôé ôï ßäéï ôï "Internet" åßíáé ç ìåãáëýôåñç åôáéñåßá ðáñáãùãÞò
  ëïãéóìéêïý óå üëï ôïí êüóìï!

  2.  ¶ëëåò ÌïñöÝò áõôïý ôïõ êåéìÝíïõ

  Áõôü ôï êåßìåíï åßíáé ôõðùìÝíï óå 10 äéáöïñåôéêÝò ìïñöÝò, ïíïìáóôéêÜ -
  DVI, Postscript, Latex, LyX, GNU-info, HTML, RTF (Rich Text Format),
  Plain-text, Óåëßäåò âïçèåßáò Unix (Unix man pages) êáé SGML.

  ·  Ìðïñåßôå íá ðÜñåôå áõôü ôï êåßìåíï HOWTO óáí Ýíá áñ÷åßï tar óå
     ìïñöÞ HTML, DVI, Postscript Þ SGML áðü ôï -
     <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/other-formats/>

  ·  Ç áðëÞ ìïñöÞ êåéìÝíïõ âñßóêåôáé óôï:
     <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO>


  ·  Ãéá ó÷üëéá, ðáñáôçñÞóåéò, äéïñèþóåéò, åíçìåñþóåéò ðåñß ôçò
     ÅëëçíéêÞò ìåôÜöñáóçò áõôïý ôïõ HOWTO, óôåßëôå email óôçí Âïýëá
     ÓáíéäÜ : voulariba@hellug.gr Þ óôïí Åõñéðßäç Ðáðáêþóôá :
     evris@hellug.gr êáé åíáëëáêôéêÜ : ep@rocketmail.com


  ·  ÌåôáöñÜóåéò óå Üëëåò ãëþóóåò üðùò ÃáëëéêÜ, ÃåñìáíéêÜ, ÉóðáíéêÜ,
     ÊéíÝæéêá, ÃéáðùíÝæéêá âñßóêïíôáé óôï
     <ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO> ÏðïéáäÞðïôå âïÞèåéá
     ãéá ìåôÜöñáóç óå Üëëåò ãëþóóåò åßíáé åõðñüóäåêôç.

     Ôï êåßìåíï ãñÜöôçêå ÷ñçóéìïðïéþíôáò ôá "åñãáëåßá SGML" ôá ïðïßá èá
     ôá âñåßôå óôï - <http://www.xs4all.nl/~cg/sgmltools/> Áöïý
     ìåôáãëùôôßóåôå ôïí êþäéêá èá Ý÷åôå åíôïëÝò üðùò

  ·  sgml2html databasehowto.sgml     (ãéá íá äçìéïõñãÞóåôå áñ÷åßá html)

  ·  sgml2rtf  databasehowto.sgml     (ãéá íá äçìéïõñãÞóåôå áñ÷åßá RTF)

  ·  sgml2latex databasehowto.sgml    (ãéá íá äçìéïõñãÞóåôå áñ÷åßá
     latex)


  Ôï êåßìåíï âñßóêåôáé óôï -

  ·  <http://sunsite.unc.edu/LDP/HOWTO/PostgreSQL-HOWTO.html>

  Ìðïñåßôå åðßóçò íá âñåßôå ôï êåßìåíï óôá ðáñáêÜôù mirrors sites -

  ·  <http://www.caldera.com/LDP/HOWTO/PostgreSQL-HOWTO.html>

  ·  <http://www.WGS.com/LDP/HOWTO/PostgreSQL-HOWTO.html>

  ·  <http://www.cc.gatech.edu/linux/LDP/HOWTO/PostgreSQL-HOWTO.html>

  ·  <http://www.redhat.com/linux-info/ldp/HOWTO/PostgreSQL-HOWTO.html>

  ·  ¶ëëá mirror sites êïíôÜ óáò (network-address-wise) ìðïñåßôå íá
     âñåßôå óôï <http://sunsite.unc.edu/LDP/hmirrors.html> äéáëÝîôå Ýíá
     site êáé ðçãáßíåôå óôïí êáôÜëïãï /LDP/HOWTO/PostgreSQL-HOWTO.html


  Ãéá íá äåßôå ôï êåßìåíï óå ìïñöÞ dvi, ÷ñçóéìïðïéÞóôå ôï ðñüãñáììá
  xdvi. Ôï ðñüãñáììá xdvi âñßóêåôáé óôï ðáêÝôï tetex-xdvi*.rpm óôï
  Redhat Linux ôï ïðïßï âñßóêåôáé óôá êïõìðéÜ ControlPanel |
  Applications | Publishing | TeX menu.  Ãéá íá äéáâÜóåôå êåßìåíï dvi
  äþóôå ôçí åíôïëÞ -

  xdvi -geometry 80x90 howto.dvi

  êáé áëëÜîôå ôï ìÝãåèïò ôïõ ðáñáèýñïõ ìå ôï ðïíôßêé. Äåßôå ôç óåëßäá
  âïÞèåéáò ãéá ôï xdvi.

  Ãéá íá ìåôáêéíçèåßôå ÷ñçóéìïðïéÞóôå ôá âåëÜêéá, ôá ðëÞêôñá Page Up,
  Page Down, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå åðßóçò ôá ãñÜììáôá 'f', 'd',
  'u', 'c', 'l', 'r', 'p', 'n' ãéá íá ìåôáêéíçèåßôå ðñïò ôá ðÜíù, êÜôù,
  óôï êÝíôñï, óôçí åðüìåíç óåëßäá, óôçí ðñïçãïýìåíç óåëßäá êëð.

  Ãéá íá áðåíåñãïðïéÞóåôå ôï expert ìåíïý ðáôÞóôå 'x'.  Ìðïñåßôå íá
  äéáâÜóåôå áñ÷åßá postscript ÷ñçóéìïðïéþíôáò ôï 'gv' (ghostview) Þ
  'ghostscript'.  Ôï ðñüãñáììá ghostscript âñßóêåôáé óôï ðáêÝôï
  ghostscript*.rpm êáé ôï ðñüãñáììá gv óôï ðáêÝôï gv*.rpm óôï Redhat
  Linux ôï ïðïßï âñßóêåôáé óôá êïõìðéÜ ôùí ìåíïý ControlPanel |
  Applications | Graphics.  Ôï ðñüãñáììá gv åßíáé ðïëý ðéï öéëéêü óôï
  ÷ñÞóôç áðü ôï ghostscript.  Ôï ghostscript êáé ôï gv åßíáé åðßóçò
  äéáèÝóéìá êáé óå Üëëåò ðëáôöüñìåò üðùò óå OS/2, Windows 95 êáé NT,
  âëÝðåôå áõôü ôï êåßìåíï áêüìç êáé óå áõôÝò ôéò ðëáôöüñìåò.


               Ãéá íá äéáâÜóåôå êåßìåíï postscript äþóôå ôçí åíôïëÞ  -
                       gv howto.ps

               Ãéá íá ÷ñçóéìïðïéÞóåôå ôï ghostscript ôçí åíôïëÞ -
                       ghostscript howto.ps




  ÐÑÏÓÏ×Ç: Ôï êåßìåíï áõôü åßíáé ìåãÜëï, ï óõíïëéêüò áñéèìüò óåëßäùí (óå
  postscript) áí ôõðùèåß èá åßíáé ðåñßðïõ 113 óåëßäåò óôá ÁããëéêÜ (óôá
  åëëçíéêÜ èá ðñÝðåé íá åßíáé ðåñéóóüôåñåò).

  Ìðïñåßôå íá äéáâÜóåôå ôï êåßìåíï óå ìïñöÞ HTML ÷ñçóéìïðïéþíôáò
  Netscape Navigator, Microsoft Internet explorer, Redhat Baron Web
  browser Þ ïðïéïäÞðïôå áðü ôïõò Üëëïõò 10 web browsers.

  Ìðïñåßôå íá äéáâÜóåôå ôçí Ýîïäï ôïõ óå latex, LyX ÷ñçóéìïðïéþíôáò ôï
  LyX, Ýíá X-Windows ãñáöéêü ðñüãñáììá äéáóýíäåóçò ìå latex.

  3.  Ïé íüìïé ôçò ÖõóéêÞò åöáñìüæïíôáé óôï ëïãéóìéêü!

  Óå áõôü ôï êåöÜëáéï, èá óáò äåßîïõìå ðþò ç åðéóôÞìç ðáßæåé óçìáíôéêü
  ñüëï óôç äçìéïõñãßá äéáöüñùí áíôéêåéìÝíùí üðùò ôï ëïãéóìéêü, ôï
  óýìðáí, ôá Üôïìá, ôçí åíÝñãåéá áêüìá êáé åóÜò ôïõò ßäéïõò!  Áõôü ôï
  êåöÜëáéï èá óáò äåßîåé åðßóçò ãéáôß ç ãíþóç ôçò åðéóôÞìçò åßíáé ðïëý
  óçìáíôéêÞ ÐÑÉÍ íá îåêéíÞóåôå íá ÷ñçóéìïðïéåßôå ôá ðñïúüíôá ôçò.  Ôá
  áíôéêåßìåíá ðåñéëáìâÜíïõí ï,ôéäÞðïôå - ãéá ðáñÜäåéãìá ç PostgreSQL, ï
  ÷ñüíïò, ç ìÜæá, ç åíÝñãåéá, ïé ðëáíÞôåò, ï Þëéïò, ôï öåããÜñé, ôá
  áóôÝñéá, ïé ãáëáîßåò, ïé Üíèñùðïé êëð... åßíáé áíôéêåßìåíá
  äçìéïõñãÞìáôá ôçò åðéóôÞìçò.  Áõôü ôï êåöÜëáéï ðåñéãñÜöåé åðßóçò ðþò
  ïé íüìïé ôçò åðéóôÞìçò êáé ç óôáôéóôéêÞ åõíïïýí ôá óõóôÞìáôá open-
  source code üðùò ç PostgreSQL êáé ôï Linux.  Êáèþò ç ôá÷ýôçôá óôï
  äéáäßêôõï áõîÜíåôáé êáèçìåñéíÜ, êáé ôï äéáäßêôõï ãßíåôáé ïëïÝíá êáé
  ðéï óôáèåñü, ôá óõóôÞìáôá open-source code ãíùñßæïõí ãñÞãïñç áíÜðôõîç.
  Êáé áí ïé óôáôéóôéêïß êáíüíåò êáé ïé íüìïé ôçò öõóéêÞò åßíáé óùóôïß,
  ôá óõóôÞìáôá closed source-code èá áöáíéóôïýí ôåëéêÜ áðü ôïí ðëáíÞôç.

  Ïé ðáñÜãñáöïé ðïõ áêïëïõèïýí ðáñáêÜôù èá óáò äåßîïõí - "ðüóï áðÝñáíôç
  åßíáé ç åðéóôÞìç, ðüóï óçìáíôéêÞ åßíáé ãéá ôïí Üíèñùðï êáé ðþò åðéäñÜ
  óå Ýñãá ëïãéóìéêïý üðùò ç PostgreSQL, ôï Linux".

  Ôï íá áíáðôýîåôå Ýíá project üðùò ç PostgreSQL, áðáéôåß åíÝñãåéá êáé
  ÷ñüíï, Üñá ç PostgreSQL åßíáé ðñïúüí åíÝñãåéáò êáé ÷ñüíïõ.  Ìéá êáé ç
  åíÝñãåéá êáé ï ÷ñüíïò ìðïñïýí íá åîçãçèïýí ìüíï åðéóôçìïíéêÜ, õðÜñ÷åé
  ìéá áìößäñïìç ó÷Ýóç ìåôáîý ôçò öõóéêÞò êáé ôùí Ýñãùí ëïãéóìéêïý üðùò ç
  PostgreSQL, ôï Linux.

  Ïé åðéóôçìïíéêïß íüìïé (ÖõóéêÞ) åöáñìüæïíôáé ðáíôïý, óõíÝ÷åéá, óå ü,ôé
  êÜíåôå áêüìç êáé óôá Ýñãá ëïãéóìéêïý üðùò  óõóôÞìáôá âÜóåùí äåäïìÝíùí.
  Ç ÖõóéêÞ åöáñìüæåôáé áêüìç êáé üôáí ìéëÜôå (ç÷çôéêÜ êýìáôá), ðåñðáôÜôå
  (ôñéâÞ ìåôáîý åäÜöïõò êáé ðÝëìáôïò), äéáâÜæåôå Ýíá âéâëßï Þ ãñÜöåôå
  ëïãéóìéêü.  Ðïëëïß êëÜäïé ôçò åðéóôÞìçò üðùò ç öõóéêÞ, ç ÷çìåßá êëð.
  óõã÷ùíåýïíôáé óå ìéá åõñåßá ðåñéï÷Þ, ôá ÌáèçìáôéêÜ (åðßóçò ãíùóôÜ êáé
  óáí ôç Âáóßëéóóá üëùí ôùí Åðéóôçìþí).  ÏôéäÞðïôå óå áõôü ôïí êüóìï
  Ý÷åé âáèéÝò ñßæåò óôá ìáèçìáôéêÜ, óõìðåñéëáìâáíïìÝíçò ôçò PostgreSQL.
  Ç PostgreSQL ÷ñçóéìïðïéåß ôç 'ÌïíôÝñíá ¶ëãåâñá' ,Ýíá ðïëý ìéêñü
  ðáñáêëÜäé ôùí ìáèçìáôéêþí . Ç 'ÌïíôÝñíá ¶ëãåâñá' áó÷ïëåßôáé ìå ôç
  'Èåùñßá Óõíüëùí', ôç 'Ó÷åóéáêÞ ¶ëãåâñá', åðéóôÞìç ôùí Groups, Rings,
  Collections, Sets, Unions, Intersections, Exclusions, Domains, Lists,
  êëð...

  Ëïãéóìéêü üðùò ç PostgreSQL õðÜñ÷åé óÞìåñá ëüãù ôçò åíÝñãåéáò êáé ôïõ
  ÷ñüíïõ.  Ç åíÝñãåéá åßíáé áõôÞ ðïõ äçìéïýñãçóå ôïí êüóìï, ôïí
  áíèñþðéíï åãêÝöáëï êáé ðïëëÜ Üëëá ðñÜãìáôá! Ç ìÜæá êáé ç åíÝñãåéá
  åßíáé ç ÉÄÉÁ ÏÍÔÏÔÇÔÁ!  Ôï ãåãïíüò üôé ç ìÜæá êáé ç åíÝñãåéá åßíáé ôï
  ßäéï ðñÜãìá Þôáí Üãíùóôï óôïõò áíèñþðïõò 100 ÷ñüíéá ðñéí!

  Ïé êõøÝëåò óôïí áíèñþðéíï åãêÝöáëï êáôáíáëþíïõí åíÝñãåéá êáèþò
  åðåîåñãÜæïíôáé (ðáñÜãïõí ëïãéóìéêü) ìåôáôñÝðïíôáò ôç ÷çìéêÞ åíÝñãåéá
  óå èåñìéêÞ åíÝñãåéá.  Áêüìç êáé ôþñá ðïõ äéáâÜæåôå áõôÞ ôçí ðáñÜãñáöï,
  ïé êõøÝëåò óôïí åãêÝöáëü óáò êáßíå âåíæßíç êáé ÷ñçóéìïðïéïýí ôçí
  åíÝñãåéá. Ãé' áõôü ÓÔÁÌÁÔÇÓÔÅ ÍÁ ÄÉÁÂÁÆÅÔÅ ÔÙÑÁ!  Ç åíÝñãåéá ôùí
  íåõñþíùí (êõøÝëåò óôïí åãêÝöáëï) ìðïñåß íá ìåôñçèåß óôá åñãáóôÞñéá.
  Ãéá ðáñÜäåéãìá, õðÜñ÷ïõí ðïëëÜ üñãáíá üðùò ïé "Áíé÷íåõôÝò ØåìÜôùí" êáé
  Üëëá éáôñéêÜ üñãáíá ðïõ ìðïñïýí íá ìåôñÞóïõí ôçí åíÝñãåéá ðïõ
  êáôáíáëþíåé ï åãêÝöáëïò.

  ¼ëá áõôÜ õðïíïïýí üôé ï áíèñþðéíïò åãêÝöáëïò åßíáé ìéá èåñìïäõíáìéêÞ
  ðçãÞ åíÝñãåéáò.  ÅðåéäÞ ï Üíèñùðïò åßíáé ìéá èåñìïäõíáìéêÞ ðçãÞ
  åíÝñãåéáò, ïé íüìïé ôçò èåñìïäõíáìéêÞò åöáñìüæïíôáé óôïí åãêÝöáëï êáé
  Ýôóé ç èåñìïäõíáìéêÞ Ý÷åé Ýììåóá áðïôåëÝóìáôá óå ëïãéóìéêü üðùò ç
  PostgreSQL.

  ¼ðùò óå êÜèå åðéóôÞìç, åßíáé áäýíáôï íá ÷ôßóåôå ïðïéïäÞðïôå óýóôçìá Þ
  èåùñßá (óõìðåñéëáìâáíïìÝíïõ åíüò óõóôÞìáôïò âÜóåùí äåäïìÝíùí) ðïõ íá
  åßíáé 100 % ôÝëåéï êáé ÷ùñßò óöÜëìáôá.  Åßíáé óá íá êõíçãÜôå Ýíáí
  áíåìïóôñüâéëï , äå èá êáôáöÝñïõìå ÐÏÔÅ íá öôéÜîïõìå ôï ôÝëåéï óýóôçìá
  Þ èåùñßá. Ëåðôïìåñåßò ìáèçìáôéêÝò åîéóþóåéò/óõæçôÞóåéò ãéá ôçí
  áðüäåéîç ôçò ýðáñîçò åíüò 'ôÝëåéïõ óõóôÞìáôïò' åßíáé áäýíáôï íá ãßíïõí
  åäþ êáèþò îåðåñíÜ ôï óêïðü áõôïý ôïõ êåéìÝíïõ.

  Êáé ìéá ôÝôïéá ìáèçìáôéêÞ óõæÞôçóç áó÷ïëåßôáé ìå ôïí Üðåéñï áñéèìü
  äéáóôÜóåùí ðïõ õðÜñ÷ïõí óôç öýóç.  Äõóôõ÷þò, ïé Üíèñùðïé ìðïñïýí íá
  äïõí Þ íá íéþóïõí 4 äéáóôÜóåéò áëëÜ ôá ìáèçìáôéêÜ ìðïñïýí íá
  åîåñåõíÞóïõí åýêïëá êáé Üëëåò äéáóôÜóåéò.

  ¶ëëåò äéáóôÜóåéò åßíáé 'Üðåéñá ìéêñüôåñåò' áðü ôá Üôïìá êáé ôá ßäéá ôá
  Üôïìá åßíáé ìå ôç óåéñÜ ôïõò ðïëý ìéêñÜ êáé ôï áíèñþðéíï ìÜôé äå
  ìðïñåß íá ôá îå÷ùñßóåé!  Ôá ÌáèçìáôéêÜ åßíáé ðïëý éó÷õñÜ ìéá êáé
  ìðïñïýí íá áíáëýóïõí êáé íá åîçãÞóïõí ôç ãÝííçóç/ èÜíáôï üëçò ôçò
  õöçëßïõ.  Ï êüóìïò ìáò Ý÷åé ó÷åäüí ìçäåíéêü ìÝãåèïò áí ôïí êïéôÜîåôå
  áðü Üëëï óýìðáí êáé áíôßóôñïöá. Áõôü óçìáßíåé üôé ï êüóìïò ìáò äåí
  åßíáé ïñáôüò (äåí õðÜñ÷åé) ãéá ôá Üôïìá ðïõ âñßóêïíôáé óå Üëëï óýìðáí.
  Êáé áíôßóôñïöá!  ÈåùñçôéêÜ, ìðïñåßôå íá âãåßôå áðü ôïí êüóìï ìáò êáé
  íá ôáîéäÝøåôå ìåãÜëåò áðïóôÜóåéò (äéóåêáôïììýñéá Ýôç öùôüò) óå
  åëÜ÷éóôï ÷ñüíï êáé íá îáíáìðåßôå óôïí êüóìï ìáò óå Ýíá äéáöïñåôéêü
  óçìåßï ôïõ ÷ùñï÷ñüíïõ!  Ç áðüóôáóç ìåôáîý ôïõ êüóìïõ ìáò êáé ôùí Üëëùí
  êüóìùí åßíáé ðñáãìáôéêÜ ìçäåíéêüò!

  Áêüìç êáé áí õðÜñ÷åé Üðåéñïò áñéèìüò äéáóôÜóåùí, ìðïñïýí üëåò íá
  ðñïêýøïõí/ äçìéïõñãçèïýí áðü Ýíá ìéêñü áñéèìü ÊÕÑÉÙÍ äéáóôÜóåùí.
  ¶ðåéñïò áñéèìüò äéáóôÜóåùí ìðïñïýí íá óõíäõáóôïýí êáé íá  êáôáëÞîïõí
  óå êýñéåò äéáóôÜóåéò.  Ïé êýñéåò äéáóôÜóåéò áðëÜ áðïññïöïýí ôéò Üëëåò
  äéáóôÜóåéò ÷ùñßò áõôÝò íá êáôáóôñÝöïíôáé.  Ïé ìáèçìáôéêïß
  ÷ñçóéìïðïéïýí áõôÝò ôéò êýñéåò äéáóôÜóåéò ãéá íá êáôáíïÞóïõí ôç
  ãÝííçóç êáé ôï èÜíáôï ôïõ óýìðáíôïò. Ï êüóìïò óôïí ïðïßï æåßôå óÞìåñá
  äçìéïõñãÞèçêå ìå ôï BIG BANG äéóåêáôïììýñéá ÷ñüíéá ðñéí (ó÷åäüí 20
  äéóåêáôïììýñéá ÷ñüíéá ðñéí) ôï ïðïßï äçìéïõñãÞèçêå áðü
  áëëçëåðéäñÜóåéò áôïìéêþí óùìáôéäßùí Üëëùí äéáóôÜóåùí.  Ëßãï ðñéí ôï
  big bang õðÞñ÷å Ýíá ðïëý ìéêñü óçìåßï üðïõ ôï ìÞêïò, ôï ðëÜôïò êáé ôï
  ýøïò Þôáí ÌÇÄÅÍ (äçëáäÞ, ï êüóìïò ìáò äåí õðÞñ÷å åêåß!!) åíþ õðÞñ÷å ôï
  õðüëïéðï óýìðáí êáé ïé êýñéåò äéáóôÜóåéò. Åêåßíç ôç ÷ñïíéêÞ óôéãìÞ äåí
  õðÞñ÷áí Üôïìá, áóôÝñéá, ðëáíÞôåò êáé ãáëáîßåò!  Ôá Üôïìá ìÝóá óôï óþìá
  óáò äåí õðÞñ÷áí åêåß!  ¸÷ïõí ãßíåé, ëïéðüí, ôüóá ðïëëÜ ðñÜãìáôá ÐÑÉÍ
  íá ãåííçèåßôå!

  Ôï Big bang êáé åðïìÝíùò êáé ç ãÝííçóç ôïõ êüóìïõ ìáò ðñïêëÞèçêå áðü
  ëßãá Üôïìá êýñéùí äéáóôÜóåùí. ÊÁÐÏÉÏÓ (êÜôé;) ðñïêÜëåóå ôç óõíôñéâÞ
  åëÜ÷éóôùí ðïëý ìéêñþí áôüìùí Üëëùí äéáóôÜóåùí ìå áðïôÝëåóìá ôç
  äçìéïõñãßá ôïõ êüóìïõ ìáò, êáé ãåííÞèçêáí íÝåò äéáóôÜóåéò ÷ñüíïõ,
  ìÞêïõò, ðëÜôïõò, ýøïõò ! ÂëÝðïõìå ôï ÷Ýñé êÜðïéïõ óå áõôÞ ôç
  äéáäéêáóßá. ÁõôÞ ç äéáäéêáóßá äåí åßíáé êáé ðïëý êáôáíïçôÞ áðü ôïí
  Üíèñùðï.

  Ï Üíèñùðïò ðñïóðáèåß íá äçìéïõñãÞóåé Ýíáí Üëëï êüóìï óôï åñãáóôÞñéï
  ðñïóïìïéþíïíôáò ôï ãåãïíüò big bang (âñßóêåôáé õðü êáôáóêåõÞ Ýíáò
  ôåñÜóôéïò åðéôá÷õíôÞò óôçí Åõñþðç, Üëëç ìéá êáôáóêåõÞ óôï ÍôÜëáò, ç
  ÁìåñéêÞ óôáìÜôçóå ëüãù ðåñéêïðþí óôïí ðñïûðïëïãéóìü). ÕðÜñ÷ïõí Üôïìá
  Üëëùí äéáóôÜóåùí, üðùò Ý÷ïõìå êé åìåßò Üôïìá óôïí äéêü ìáò êüóìï.
  ÈåùñçôéêÜ, ìðïñåßôå íá äçìéïõñãÞóåôå/ðáñÜãåôå Üðåéñï áñéèìü êüóìùí!
  ÁõôÞ ç äéáäéêáóßá åßíáé áíôéóôñåðôÞ, äçëáäÞ ï êüóìïò ìáò ìðïñåß íá
  óõññéêíùèåß óå ìåñéêÜ Üôïìá Üëëùí äéáóôÜóåùí!  Åßíáé ðáñüìïéï ìå ôï íá
  ãåííçèÞêáôå áðü äýï ìéêñïóêïðéêÝò êõøÝëåò ïé ïðïßåò èá óõãêñïõóôïýí
  ãéá íá äçìéïõñãÞóïõí ìßá ìüíï êõøÝëç.  ÁõôÞ ç ìüíç ìéêñïóêïðéêÞ
  êõøåëßäá äéáéñÝèçêå êáé ðïëëáðëáóéÜóôçêå óå 6 ôñéóåêáôïììýñéá
  êõøåëßäåò ìÝ÷ñé íá ãßíåé Ýíáò Üíèñùðïò ýøïõò 6 ðüäéá (äçëáäÞ åóåßò!).
  ÕðÜñ÷ïõí ìåñéêÝò ïìïéüôçôåò ìåôáîý áíèñþðïõ êáé óýìðáíôïò, ôï óýìðáí
  ãåííéÝôáé êáé áñãüôåñá ðåèáßíåé üðùò êáé ïé Üíèñùðïé. Ìéá êáé åßíáé
  áäýíáôç ìéá ÔÅËÅÉÁ êáôÜóôáóç (üðùò êáé ç ÁÐÏËÕÔÙÓ ÌÇ ÔÅËÅÉÁ
  êáôÜóôáóç), ïé êüóìïé óáí ôïõò äéêïýò ìáò ãåííéïýíôáé êáé ðåèáßíïõí
  áñãüôåñá ìå ìéá êõêëéêÞ äéáäéêáóßá. ÁËËÁ äåí õðÜñ÷åé ÔÅËÅÉÏÓ èÜíáôïò,
  ìüíï ìåôáó÷çìáôéóìüò åðéôñÝðåôáé áðü ôçí åðéóôÞìç!  Ï êüóìïò ìáò
  ìåãáëþíåé ìå ôá÷ýôáôï ñõèìü, äåí åßíáé óôáôéêüò, áíôßèåôá åßíáé ðïëý
  äõíáìéêüò.  Áõôüò ï êüóìïò èá óõíå÷ßóåé íá ìåãáëþíåé þóðïõ íá
  ðáñåìâëçèåß êÜôé ðïõ èá êáôáóôñÝøåé ôïí êüóìï ìáò åöáñìüæïíôáò
  äõíÜìåéò ìå åîùôåñéêÝò äéáóôÜóåéò ðïõ èá áðïññïöÞóïõí êáé èá
  åîáöáíßóïõí ôïí êüóìï ìáò!  ÕðÜñ÷ïõí äýï ðéèáíüôçôåò - íá áðïìáêñõíèåß
  ç ìÜæá áðü ôïí êüóìï ìáò ìÝóù ôùí ìáýñùí ôñõðþí (áñãÞ äéáäéêáóßá), Þ
  íá ðñïóôåèåß êáé Üëëç ìÜæá óôïí êüóìï ìáò ìÝóù ôùí Üóðñùí ôñõðþí
  (ãñÞãïñç äéáäéêáóßá ìåãÜëçò óýãêñïõóçò).  Ìðïñåß íá õðÜñ÷ïõí
  åêáôïììýñéá êüóìïé áëëÜ ëßãïé åßíáé áõôïß ðïõ äçìéïõñãÞèçêáí áðü
  êýñéåò äéáóôÜóåéò. Äåí Ý÷åôå öôéá÷ôåß ìüíï áðü Üôïìá áõôïý ôïõ êüóìïõ
  áëëÜ êáé áðü Üôïìá Üëëùí äéáóôÜóåùí!  Óôéò ìáýñåò ôñýðåò ôá Üôïìá êáé
  ôá óùìáôßäéá ôïõ êüóìïõ ìáò ìÝíïõí åãêëùâéóìÝíá êáé ìåôáó÷çìáôßæïíôáé
  êáé ìåôáôñÝðïíôáé ôåëåßùò óå óùìáôßäéá Üëëùí äéáóôÜóåùí! Óôï êÝíôñï
  ìéáò ìáýñçò ôñýðáò ï ÷ñüíïò, ôï ðëÜôïò êáé ôï ýøïò åßíáé ìçäÝí! Êáé ç
  ìáýñç ôñýðá åßíáé ç ðüñôá ÅÎÏÄÏÕ/ÅÉÓÏÄÏÕ ðñüò êáé áðü Üëëïõò êüóìïõò.
  Ðüñôåò ÅÉÓÏÄÏÕ/ÅÎÏÄÏÕ ðñïò Üëëïõò êüóìïõò ìðïñïýí íá áíïßîïõí ðáíôïý,
  áêüìç êáé ìÝóá óôï óþìá óáò!  Ìðïñåß íá õðÜñ÷åé Üðåéñïò áñéèìüò
  ÷ñùìÜôùí, ãëùóóþí õðïëïãéóôÞ, ó÷åäßùí ôóéð õðïëïãéóôÞ êáé èåùñßåò áëëÜ
  ÄÅÍ ÌÐÏÑÅÉ íá õðÜñîåé ÅÍÁ ÌÏÍÏ ÔÅËÅÉÏ ÷ñþìá, ãëþóóá õðïëïãéóôÞ, ó÷Ýäéï
  Þ óýóôçìá! Áõôü ðïõ ìðïñåßôå íá Ý÷åôå åßíáé ìüíï Ýíá Ó×ÅÄÏÍ ÔÅËÅÉÏ
  ÷ñþìá (åýñïò êýìáôïò), óýóôçìá, âÜóç äåäïìÝíùí Þ èåùñßá! Ç öýóç åßíáé
  üðùò Ýíá Êáëåéäïóêüðéï.

  ÓõíäõÜæïíôáò ôçí åíÝñãåéá åêáôïììõñßùí áíèñþðùí óå üëï ôïí êüóìï ìÝóù
  internet, åßíáé äõíáôü íá åðéôåõ÷èåß Ýíá Ó×ÅÄÏÍ ÔÅËÅÉÏ óýóôçìá
  (óõìðåñéëáìâáíïìÝíïõ åíüò óõóôÞìáôïò âÜóåùí äåäïìÝíùí). Ç åíÝñãåéá ôïõ
  êÜèå áíèñþðïõ áôïìéêÜ åßíáé åëÜ÷éóôç, áëëÜ äéáóõíäÝïíôáò Ýíá ìåãÜëï
  áñéèìü áíèñþðùí, ç óõíïëéêÞ åíÝñãåéá èá åßíáé ôåñÜóôéá ãéá íá
  äçìéïõñãÞóåé Ýíá ó÷åäüí ôÝëåéï óýóôçìá.  Ïé Üíèñùðïé åßíáé üíôá ìå
  ðåñéïñéóìÝíç åíÝñãåéá êáé áðïèÝìáôá, êáé ðïëý óõ÷íÜ óå áõôïýò
  ïöåßëïíôáé ëÜèç áðü áðëÜ ìÝ÷ñé êáé ðïëý óïâáñÜ.  ÅðåéäÞ ç ôÜóç ìáò ãéá
  ëÜèç ðïéêßëëåé óå êÜèå Üíèñùðï áíÜëïãá ìå ôéò éäéáßôåñåò
  åðéäåîéüôçôåò, ôç óõãêåêñéìÝíç åìðåéñßá ðïõ Ý÷åé ï êáèÝíáò êáé ôéò
  óõãêõñßåò ôçò óõãêåêñéìÝíçò óôéãìÞò, ç áíáêÜëõøç êáé ç åëÜôôùóç ôùí
  ëáèþí ëïãéóìéêïý (bugs) ðïõ äçìéïõñãïýíôáé áðü êÜðïéï Üíèñùðï
  äéåõêïëýíåôáé ìå ôç óõãêÝíôñùóç ðïëëþí Ýîõðíùí áíèñþðùí-ìõáëþí ãéá íá
  áíôéìåôùðßóïõí ôï óõãêåêñéìÝíï ðñüâëçìá.  Ðåñéóóüôåñá Üôïìá
  óõíåðÜãåôáé ðåñéóóüôåñåò áíèñùðïþñåò ãéá êþäéêá êáé ôçí áíôßóôïé÷ç
  ëåéôïõñãßá ôïõ.

  Åßíáé îåêÜèáñï üôé ôï ßíôåñíåô ìðïñåß íá äéáóõíäÝóåé Ýíá ôåñÜóôéï
  áñéèìü áíèñþðùí, üðïõ üëïé ìáæß äéáèÝôïõí ðïëý åíÝñãåéá êáé ÷ñüíï. Ìå
  ôï óõíäõáóìü ôïõò ìðïñïýí íá ðáñá÷èïýí ðñïúüíôá ëïãéóìéêïý õøçëüôåñçò
  ðïéüôçôáò óå ðïëý ëéãüôåñï ÷ñüíï óå óýãêñéóç ìå åìðïñéêÝò åôáéñåßåò.
  Áêüìç êáé ìåãÜëåò åôáéñåßåò üðùò ç Microsoft, ç IBM äå ìðïñïýí íá
  õðåñéó÷ýóïõí êáé íá áãíïÞóïõí ôïõò íüìïõò ôçò ÖõóéêÞò áëëÜ èá
  ÕÐÏÔÁ×ÈÏÕÍ ôåëéêÜ óå áõôïýò!

  ÓÞìåñá, õðÜñ÷ïõí ôüóåò ðïëëÝò âÜóåéò äåäïìÝíùí óå üëï ôïí êüóìï ðïõ
  óôï÷åýïõí ìüíï óôéò ðñïäéáãñáöÝò ANSI/ISO SQL. Ïé Üíèñùðïé äåí ðñÝðåé
  íá ÷áñáìßæïõí ôï ÷ñüíï ôïõò ãéá íá äçìéïõñãÞóïõí ôüóá ðïëëÜ
  ÐÁÑÏÌÏÉÁ/ÏËÏÉÄÉÁ ðáêÝôá ëïãéóìéêïý  åíþ õðÜñ÷ïõí ôüóïé Üëëïé ôïìåßò
  ôçò åðéóôÞìçò ðïõ ÷ñåéÜæïíôáé ðñïóï÷Þ.  Ôï óõìðÝñáóìá åßíáé ôï åîÞò :
  åîáéôßáò ôùí íüìùí ôçò åðéóôÞìçò, ôá 'áíïé÷ôÜ óõóôÞìáôá ðçãáßïõ
  êþäéêá' üðùò ç PostgreSQL, ôï Linux èá åßíáé ðÜíôá ðïëý êáëýôåñá áðü
  ôá 'êëåéóôÜ óõóôÞìáôá ðçãáßïõ êþäéêá' êáé áõôü åßíáé äõíáôü íá
  áðïäåé÷ôåß êáé åðéóôçìïíéêÜ.


  4.  Ôé åßíáé ç  PostgreSQL ;

  Ç PostgreSQL Ýêäïóç 6.4 åßíáé ìéá äùñåÜí âÜóç, ìå ôçí ïðïßá óáò
  äßíåôáé üëïò ï ðçãáßïò êþäéêáò êáé åßíáé Ýíá Óýóôçìá
  ÁíôéêåéìåíïóôñáöÞò-Ó÷åóéáêÞ ÂÜóçò ÄåäïìÝíùí ó÷åäüí óõìâáôÞ ìå
  (ðëçóéÜæåé üëï êáé ðåñéóóüôåñï) ìå ôï ANSI SQL1998,92,89 êáé ôñÝ÷åé óå
  äéáöïñåôéêÝò ðëáôöüñìåò hardware êáé ËåéôïõñãéêÜ óõóôÞìáôá.


               ÌåñéêÝò öïñÝò âãáßíïõí óå êõêëïöïñßá Ýêôáêôåò äéïñèþóåéò, ìðáëþìáôá (patches) ãéá äéïñèþóåéò
               ëáèþí ìåôÜ ôçí Ýêäïóç GA PostgreSQL. Ìðïñåßôå íá åöáñìüóåôå ôá ðñïáéñåôéêÜ patches
               áíÜëïãá ìå ôéò áíÜãêåò ôçò åöáñìïãÞò óáò. ÁêïëïõèÞóôå ôá ðáñáêÜôù
               âÞìáôá ãéá íá åöáñìüóåôå ôá patches -
               Ðçãáßíåôå óôïí êáôÜëïãï ðïõ âñßóêåôáé ï êþäéêáò ôçò postgresql
                       cd /usr/src/postgresql6.3.1
                       patch -p0 < patchfile
                       make clean
                       make
               Äåßôå åðßóçò ôç óåëßäá âïÞèåéáò ãñÜöïíôáò 'man patch'




  Ôá áñ÷åßá ãéá patch âñßóêïíôáé óôï

  ·  PostgreSQL patches :  <ftp://ftp.postgresql.org/pub/patches>

  Ï áðüëõôïò óêïðüò êáé ï ôåëéêüò óôü÷ïò ôçò PostgreSQL åßíáé ãßíåé 100
  % óõìâáôÞ ìå ôçí ANSI/ISO SQL êáé íá ãßíåé åðßóçò ç íïýìåñï ÅÍÁ
  ÁíïéêôÞ ÃåíéêÞ ÂÜóç óôïí êüóìï. Ç PostgreSQL åðßóçò èá ïäçãÞóåé,
  äéåõèýíåé, åëÝãîåé, ðáñáêïëïõèÞóåé êáé õðáãïñåýóåé ôï ìÝëëïí ôçò
  ANSI/ISO SQL.  Áõôü ãéáôß, ç õëïðïßçóç êáé ïé éäÝåò ãßíïíôáé ðñþôá
  óôçí PostgreSQL êáé Ýðåéôá åíóùìáôþíïíôáé óôçí ANSI/ISO SQL.

  Ï Informix Universal server (åêäüèçêå ôï 1997) âáóßæåôáé óå
  ðñïçãïýìåíç Ýêäïóç ôçò PostgreSQL åðåéäÞ ç Informix áãüñáóå ôçí
  Illustra Inc. êáé åíïðïéÞèçêå ìå ôçí Informix.  Ç âÜóç Illustra Þôáí
  ðëÞñùò âáóéóìÝíç óôçí Postgres (ðñïçãïýìåíç Ýêäïóç ôçò PostgreSQL).

  Ç PostgreSQL åßíáé ìéá åðÝêôáóç ôïõ óõóôÞìáôïò äéá÷åßñéóçò ôçò âÜóçò
  äåäïìÝíùí POSTGRES, Ýíá åðüìåíçò ãåíéÜò ðñüôõðï Ýñåõíáò DBMS. Åíþ ç
  PostgreSQL äéáôçñåß ôï äõíáìéêü ìïíôÝëï äåäïìÝíùí êáé ôïõò ðëïýóéïõò
  ôýðïõò äåäïìÝíùí ôçò POSTGRES, áíôéêáèéóôÜ ôçí ãëþóóá åñùôÞóåùí
  PostQuel ìå Ýíá åêôåôáìÝíï õðïóýíïëï ôçò SQL.

  Ç áíÜðôõîç ôçò PostgreSQL ãßíåôáé áðü ìéá ïìÜäá ðñïãñáììáôéóôþí óôï
  Internet ðïõ åßíáé üëïé ãñáììÝíïé óôç ëßóôá áëëçëïãñáößáò áíÜðôõîçò
  ôçò PostgreSQL.  ÓõíôïíéóôÞò ôçò ïìÜäáò åßíáé ï Marc G. Fournier

  ·  scrappy@postgreSQL.org

     ÁõôÞ ç ïìÜäá åßíáé õðåýèõíç ãéá üëç ôçí ôñÝ÷ïõóá êáé ìåëëïíôéêÞ
     áíÜðôõîç ôçò PostgreSQL.  ÖõóéêÜ, ï ßäéïò ï ðåëÜôçò âÜóåùí
     äåäïìÝíùí åßíáé áõôüò ðïõ áíáðôýóóåé ôçí PostgreSQL! Ôï öïñôßï ôçò
     áíÜðôõîçò äéáíÝìåôáé óå Ýíá ðïëý ìåãÜëï áñéèìü ôåëéêþí ÷ñçóôþí
     âÜóåùí óôï internet.

  Ïé óõããñáöåßò ôçò PostgreSQL 1.01 åßíáé ïé Andrew Yu êáé Jolly Chen.
  Ðïëëïß Üëëïé óõíåéóÝöåñáí óå áõôÞ ôç ìåôáöïñÜ, ôï ôåóôÜñéóìá, ôçí
  áðïóöáëìÜôùóç êáé ôçí åðÝêôáóç ôïõ êþäéêá. Ï áñ÷éêüò êþäéêáò ôçò
  Postgres, áð' üðïõ ðñïÝêõøå ç PostgreSQL, Þôáí ç ðñïóðÜèåéá ðïëëþí
  áðïöïßôùí óðïõäáóôþí, ìåôáðôõ÷éáêþí, êáé ðñïóùðéêïý ðñïãñáììáôéóôþí
  ðïõ äïýëåøáí êÜôù áðü ôçí åðßâëåøç ôïõ ÊáèçãçôÞ Michael Stonebraker
  óôï ÐáíåðéóôÞìéï ôçò Êáëéöüñíéá, óôï Berkeley.

  Ôï áñ÷éêü üíïìá ôïõ ëïãéóìéêïý óôï Berkeley Þôáí Postgres. ¼ôáí
  ðñïóôÝèçêå ç ëåéôïõñãéêüôçôá ãéá SQL ôï 1995, ôï üíïìá Üëëáîå óå
  Postgres95. Ôï üíïìá Üëëáîå ðÜëé óôï ôÝëïò ôïõ 1996 óå PostgreSQL.

  Åêáôïììýñéá PostgreSQL Ý÷ïõí åãêáôáóôáèåß ùò äéáêïìéóôÝò âÜóåùí
  äåäïìÝíùí, Web database serversêáé Application data servers. Åßíáé
  ðïëý ðñï÷ùñçìÝíç, êáé åßíáé áíôéêåéìåíïóôñáöÞò  ó÷åóéáêÞ âÜóç
  äåäïìÝíùí (ORDBMS).

  H PostgreSQL ìðïñåß íá áðïèçêåýóåé ðåñéóóüôåñïõò ôýðïõò äåäïìÝíùí áðü
  ôïõò ðáñáäïóéáêïýò ôýðïõò äåäïìÝíùí üðùò integer, characters, êëð. -
  ìðïñåßôå íá äçìéïõñãÞóåôå ôïõò äéêïýò óáò ïñéóìÝíïõò ôýðïõò,
  óõíáñôÞóåéò, êëçñïíïìéêüôçôá êëð.  Ç PostgreSQL ôñÝ÷åé óå Solaris,
  SunOS, HPUX, AIX, Linux, Irix, Digital Unix, BSDi,NetBSD, FreeBSD, SCO
  unix, NEXTSTEP, Unixware êáé óå ïðïéïäÞðïôå ôýðï Unix. Ç ìåôáöïñÜ ôçò
  óå Windows 95/NT åßíáé óå åîÝëéîç.

  ·  Ôßôëïò:             PostgreSQL SQL RDBMS Database (Óýóôçìá
     Äéá÷åßñéóçò Áíôéêåéìåíïóôñáöïýò Ó÷åóéáêÞò ÂÜóçò ÄåäïìÝíùí)

  ·  ÔñÝ÷ïõóá Ýêäïóç:   6.4

  ·  ×ñïíïëïãßá:      Ç PostgreSQL åßíáé 12 ÷ñïíþí. Áíáðôýóóåôáé áðü ôï
     1985

  ·  Óõããñáöåßò:       Áíáðôýóóåôáé áðü
     åêáôïììýñéá/ðáíåðéóôÞìéá/åôáéñåßåò óôï internet ãéá ôá ôåëåõôáßá 12
     ÷ñüíéá

     Ç PostgreSQL êáé ôá ó÷åôéêÜ êïììÜôéá ôïõ êåéìÝíïõ õðüêåéíôáé óôçí
     ðáñáêÜôù ÐÍÅÕÌÁÔÉÊÇ ÉÄÉÏÊÔÇÓÉÁ.


       PostgreSQL Óýóôçìá Äéá÷åßñéóçò ÂÜóçò ÄåäïìÝíùí

       ÐíåõìáôéêÞ Éäéïêôçóßá (c) ôïõ ðáíåðéóôçìßïõ ôçò California

       ¶äåéá ãéá ÷ñÞóç, áíôéãñáöÞ, ìåôáâïëÞ, êáé äéáíïìÞ áõôïý ôïõ ëïãéóìéêü êáé ôçò
       ôåêìçñßùóÞò ôïõ ãéá ïðïéïäÞðïôå óêïðü, ÷ùñßò ôÝëç, êáé ÷ùñßò ãñáðôÞ óõìöùíßá
       ðáñÝ÷åôáé, ìå ôçí ðñïûðüèåóç üôé ôï óçìåßùìá ðíåõìáôéêÞò éäéïêôçóßáò êáé
       áõôÞ êáé ïé ðáñáêÜôù äýï ðáñÜãñáöïé èá åìöáíßæïíôáé óå üëåò ôéò êüðéåò.

       ÌÅ ÊÁÍÅÍÁÍ ÔÑÏÐÏ, ÄÅÍ ÈÁ ÈÅÙÑÇÈÅÉ ÔÏ ÐÁÍÅÐÉÓÔÇÌÉÏ ÔÇÓ ÊÁËÉÖÏÑÍÉÁ ÍÏÌÉÊÁ ÕÐÅÕÈÕÍÏ
       ÃÉÁ ÁÌÅÓÇ, ÅÌÌÅÓÇ, ÅÉÄÉÊÇ, ÔÕ×ÁÉÁ, Ç ÐÁÑÁÃÙÌÅÍÇ ÆÇÌÉÁ, ÓÕÌÐÅÑÉËÁÌÁÍÏÌÅÍÇÓ ÊÁÉ ÔÇÓ
       ÁÐÙËÅÉÁÓ ÊÅÑÄÙÍ ÐÏÕ ÐÑÏÅÊÕØÅ ÁÐÏ ÔÇÍ ×ÑÇÓÇ ÁÕÔÏÕ ÔÏÕ ËÏÃÉÓÌÉÊÏÕ ÊÁÉ ÔÇÓ
       ÔÅÊÌÇÑÉÙÓÇÓ ÔÏÕ, ÁÊÏÌÁ ÊÁÉ ÁÍ ÔÏ ÐÁÍÅÐÉÓÔÇÌÉÏ ÔÇÓ ÊÁËÉÖÏÍÉÁ Å×ÅÉ ÅÉÄÏÐÏÉÇÈÅÉ ÃÉÁ
       ÔÇÍ ÐÉÈÁÍÏÔÇÔÁ ÌÉÁÓ ÔÅÔÏÉÁÓ ÆÇÌÉÁÓ.

       ÔÏ ÐÁÍÅÐÉÓÔÇÌÉÏ ÔÇÓ ÊÁËÉÖÏÑÍÉÁ ÅÉÄÉÊÁ ÁÐÁÑÍÅÉÔÁÉ ÊÁÈÅ ÅÃÃÕÓÇÓÇ, ÓÕÌÐÅÑÉËÁÌÂÁÍÏÌÅÍÇÓ,
       ÁËËÁ Ï×É ÐÅÑÉÏÑÉÓÌÅÍÇÓ ÌÏÍÏ ÓÅ ÁÕÔÇÍ, ÔÇÓ ÕÐÏÍÏÏÕÌÅÍÇÓ ÅÃÃÕÇÓÇÓ ×ÑÇÓÇÓ, ÊÁÉ ×ÑÇÓÇÓ
       ÃÉÁ ÊÁÐÏÉÏ ÓÕÃÊÅÊÑÉÌÅÍÏ ÓÊÏÐÏ. ÔÏ ËÏÃÉÓÌÉÊÏ ÐÏÕ ÐÁÑÅ×ÅÔÁÉ ÅÄÙ ÅÉÍÁÉ ÓÅ ÂÁÓÇ "ÙÓ Å×ÅÉ"
       ÊÁÉ ÔÏ ÐÁÍÅÐÉÓÔÇÌÉÏ ÔÇÓ ÊÁËÉÖÏÑÍÉÁÓ ÄÅÍ Å×ÅÉ ÕÐÏ×ÑÅÙÓÇ ÃÉÁ ÐÁÑÏ×Ç ÓÕÍÔÇÑÇÓÇÓ, ÅÍÇÌÅÑÙÓÅÙÍ,
       ÅÌÐËÏÕÔÉÓÌÙÍ, Ç ÔÑÏÐÏÐÏÉÇÓÅÙÍ.




  5.  Ðïý ìðïñþ íá ôç âñù ;

  Ìðïñåßôå íá áãïñÜóåôå ôï CDROM Redhat Linux, Debian Linux Þ ôï
  Slackware Linux ðïõ ðåñéÝ÷ïõí Þäç ôçí Postgresql óå ìïñöÞ ðáêÝôïõ (êáé
  ï ðçãáßïò êþäéêáò êáé ôá åêôåëÝóéìá) áðü ôá :

  ·  Linux System Labs Web site:   <http://www.lsl.com/>  7 (U.S.
     äïëÜñéá)

  ·  Cheap Bytes Inc Web site:   <http://www.cheapbytes.com/> 7 (U.S.
     äïëÜñéá)

  ·  Debian Êåíôñéêü Web site :  <http://www.debian.org/vendors.html>

  Ï ïñãáíéóìüò PostgreSQL ðïõëÜ åðßóçò Ýíá 'PostgreSQL CDROM' ðïõ
  ðåñéÝ÷åé üëïí ôïí ðçãáßï êþäéêá êáé åêôåëÝóéìá ãéá ðïëëÜ ëåéôïõñãéêÜ
  óõóôÞìáôá Unix êáé ðëÞñç ôåêìçñßùóç.

  ·  Ôï CDROM ôçò PostgreSQL èá ôï âñåßôå áðü ôï êåíôñéêü Web site ôçò
     óôï : <http://www.postgresql.org> ãéá 29 (ÁìåñéêÜíéêá äïëÜñéá)

  ÄéáíïìÞ ôçò PostgreSQL ìüíï ìå åêôåëÝóéìá:

  ·  Ìðïñåßôå íá ôñÝîåôå ôçí PostgreSQL ÷ùñßò íá ìåôáãëùôôßóåôå ôïí
     êþäéêá.  ÅãêáôáóôÞóôå ôá åêôåëÝóéìá ãéá Intel-Linux áðü ôï áñ÷åßï
     <ftp://www.redhat.com/pub/contrib/i386/> postgresql-6.4.i386.rpm.
     Áõôü åßíáé Ýíá redhat 'rpm' ðáêÝôï êáé ðåñéÝ÷åé êáé ôïí êþäéêá êáé
     ôá åêôåëÝóéìá ãéá ôçí PostgreSQL.

  ·  Site ìå åêôåëÝóéìá ãéá Solaris, HPUX, AIX, IRIX, Linux :
     <ftp://ftp.postgresql.org/pub/bindist> Áí ìåôáãëùôôßóåôå ôïí êþäéêá
     ãéá ïðïéáäÞðïôå ðëáôöüñìá, ðáñáêáëþ  óôåßëôå ôï óôï site, ìðïñåß íá
     åßíáé ÷ñÞóéìï ãéá ôïõò õðüëïéðïõò.

  ·  ftp site : ÐÜñôå ôá åêôåëÝóéìá ãéá Intel-Linux áðü ôï áñ÷åßï
     <ftp://ftp.redhat.com/pub/contrib/i386/> postgresql-6.4.i386.rpm.
     Áõôü åßíáé Ýíá redhat 'rpm' ðáêÝôï êáé ðåñéÝ÷åé êáé ôïí êþäéêá êáé
     ôá åêôåëÝóéìá ãéá ôçí PostgreSQL.

  WWW Web sites:

  ·  Êåíôñéêü Web site: <http://www.postgresql.org/>

  ·  Äåýôåñï Web site: <http://logical.thought.net/postgres95/>

  ·  <http://www.itm.tu-clausthal.de/mirrors/postgres95/>

  ·  <http://s2k-ftp.cs.berkeley.edu:8000/postgres95/>

  ·  <http://xenium.pdi.net/PostgreSQL/>

  ·  <http://s2k-ftp.cs.berkeley.edu:8000/postgres95/>


  Ôá ftp sites ðáñïõóéÜæïíôáé ðáñáêÜôù :-

  ·  Primary FTP: <ftp://ftp.postgresql.org/pub>

  ·  Secondary FTP: <ftp://ftp.chicks.net/pub/postgresql>

  ·  <ftp://ftp.emsi.priv.at/pub/postgres/>

  ·  <ftp://ftp.itm.tu-clausthal.de/pub/mirrors/postgres95>

  ·  <ftp://rocker.sch.bme.hu/pub/mirrors/postgreSQL>

  ·  <ftp://ftp.jaist.ac.jp/pub/dbms/postgres95>

  ·  <ftp://ftp.luga.or.at/pub/postgres95>

  ·  <ftp://postgres95.vnet.net:/pub/postgres95>

  ·  <ftp://ftpza.co.za/mirrors/postgres>

  ·  <ftp://sunsite.auc.dk/pub/databases/postgresql>

  ·  <ftp://ftp.task.gda.pl/pub/software/postgresql>

  ·  <ftp://xenium.pdi.net/pub/PostgreSQL>



  Ï ðçãáßïò êþäéêáò ôçò PostgreSQL åßíáé åðßóçò äéáèÝóéìïò óå üëá ôá
  mirror sites ôïõ sunsite unc (óýíïëï ðåñßðïõ 1000 sites óå üëï ôïí
  êüóìï). Âñßóêåôáé åðßóçò óôç äéáíïìÞ ôïõ Red Hat Linux óôï áñ÷åßï
  /pub/contrib/i386/postgresql.rpm .

  ·  Ãéá ôç ëßóôá ôùí mirror sites ðçãáßíåôå óôï
     <ftp://sunsite.unc.edu>

  6.  Ç PostgreSQL õðïóôçñßæåé åîáéñåôéêÜ ìåãÜëåò âÜóåéò, ìåãáëýôåñåò
  áðü 200 Gig

  Ç áðüäïóç ôùí 32-bit ìç÷áíþí cpu èá ðÝóåé ãñÞãïñá üôáí ôï ìÝãåèïò ôçò
  âÜóçò îåðåñÜóåé ôá 5 gig. Ìðïñåßôå íá ôñÝîåôå âÜóç ôùí 30 gig óå ìéá
  32-bit cpu áëëÜ ç áðüäïóç äå èá åßíáé êáé ðïëý åíôõðùóéáêÞ.  ÕðÜñ÷ïõí
  ðåñéïñéóìïß ðïõ åðéâÜëëïíôáé áðü ôï ìÝãåèïò ôçò ìíÞìçò RAM (ìÝãéóôï 2
  gig ìüíï), ðåñéïñéóìïß áðü ôá ìåãÝèç ôïõ óõóôÞìáôïò áñ÷åßùí êáé åðßóçò
  áðü ôï ëåéôïõñãéêü óýóôçìá.

  Áí ÷ñåéÜæåôáé íá ÷ñçóéìïðïéÞóåôå åîáéñåôéêÜ ìåãÜëåò âÜóåéò, óáò
  óõìâïõëåýïõìå íá ÷ñçóéìïðïéÞóåôå ìç÷áíÝò ôùí 64-bit üðùò Digital Alpha
  cpu, Sun Ultra-sparc 64-bit cpu, Silicon graphics 64-bit cpu, Intel
  Merced IA-64 cpu, ìç÷áíÝò HPUX 64bit, IBM 64-bit. Ìåôáãëùôôßóôå ôçí
  PostgreSQL óå ìéá 64-bit cpu êáé èá ìðïñåß íá õðïóôçñßæåé ôåñÜóôéåò
  âÜóåéò êáé ìåãÜëá queries. Ç áðüäïóç ôçò PostgreSQL ãéá åñùôÞóåéò óå
  ìåãÜëïõò ðßíáêåò êáé âÜóåéò èá åßíáé ðïëëÝò öïñÝò ôá÷ýôåñç áðü ôçí
  PostgreSQL óå ìç÷áíÝò ìå cpu 32-bit. Ôï ðëåïíÝêôçìá ôùí ìç÷áíþí 64-bit
  åßíáé üôé ç äåéêôïäüôçóç ôïõ ÷þñïõ ìíÞìçò åßíáé ðïëý ìåãÜëç êáé ôï
  ëåéôïõñãéêü óýóôçìá ìðïñåß íá õðïóôçñßîåé óõóôÞìáôá ìåãÜëùí áñ÷åßùí,
  ðáñÝ÷åé êáëýôåñç áðüäïóç ìå ìåãÜëåò âÜóåéò, õðïóôçñßæåé ðïëý
  ðåñéóóüôåñç ìíÞìç (RAM), Ý÷ïõí ðåñéóóüôåñåò äõíáôüôçôåò êëð.

  7.  áíáðôýóóåé ôï áßóèçìá åìðéóôïóýíçò óôïí ðåëÜôç Ðþò ìðïñþ íá
  åìðéóôåõèþ ôçí PostgreSQL ; Ôï ðáêÝôï Regression ãéá ôåóô

  Ôï ðáêÝôï Regression ãéá ôåóô (src/test/regress) ðåñéëáìâÜíåôáé óôç
  äéáíïìÞ êáé áöÞóôå ôïí õðïëïãéóôÞ óáò íá åðáëçèåýóåé ôéò óôÜíôáñ
  ëåéôïõñãßåò SQL êáé ôéò äõíáôüôçôåò åðÝêôáóçò ôçò PostgreSQL.  Ôï
  ðáêÝôï ãéá ôåóô ðåñéÝ÷åé Þäç åêáôïíôÜäåò SQL ôåóô ðñïãñÜììáôá.

  Èá ðñÝðåé íá ÷ñçóéìïðïéÞóåôå ôç äýíáìç ôïõ õðïëïãéóôÞ ãéá íá åëÝãîåôå
  ôçí PostgreSQL, áíôß íá ÷ñçóéìïðïéÞóåôå ôç äýíáìç ôïõ áíèñþðéíïõ
  åãêåöÜëïõ.  Ïé õðïëïãéóôÝò ìðïñïýí íá åêôåëÝóïõí ôåóô ãéá ôï ëïãéóìéêü
  regression åêáôïììýñéá Þ áêüìç êáé äéóåêáôïììýñéá öïñÝò ãñçãïñüôåñá
  áðü üôé ïé Üíèñùðïé.

  Óôï ðñïóå÷Ýò ìÝëëïí ç ôá÷ýôçôá ôùí õðïëïãéóôþí èá åßíáé áñêåôÜ
  ôñéóåêáôïììýñéá öïñÝò ãñçãïñüôåñïé áðü ôïí áíèñþðéíï åãêÝöáëï!

  ¸ôóé, Ý÷åé íüçìá íá ÷ñçóéìïðïéÞóïõìå ôç äýíáìç ôïõ õðïëïãéóôÞ ãéá íá
  åëÝã÷ïõìå ëïãéóìéêü.

  Ìðïñåßôå íá ðñïóèÝóåôå êáé Üëëá ôåóô óå ðåñßðôùóç ðïõ ôï ÷ñåéÜæåóôå,
  êáé ìðïñåßôå íá ôá óôåßëåôå óôï êåíôñéêü web site ôçò PostgreSQL áí
  íïìßæåôå üôé èá åßíáé ÷ñÞóéìï óå Üëëïõò óôï internet.  Ôï ðáêÝôï
  Regression ãéá ôåóô åíéó÷ýåé ôçí åìðéóôïóýíç ôïõ ðåëÜôç óôçí
  PostgreSQL êáé åõêïëýíåé ôç ãñÞãïñç åöáñìïãÞ ôçò PostgreSQL óå
  óõóôÞìáôá ðáñáãùãÞò.

  Ôï ðáêÝôï Regression ãéá ôåóô ìðïñåß íá èåùñçèåß óáí Ýíá "ÐÏËÕ
  ÓÔÁÈÅÑÏ" ôå÷íéêü êåßìåíï óõìöùíçìÝíï áìïéâáßá ìåôáîý ôùí
  ðñïãñáììáôéóôþí êáé ôùí ôåëéêþí ÷ñçóôþí. Ïé ðñïãñáììáôéóôÝò ôçò
  PostgreSQL ÷ñçóéìïðïéïýí åêôåôáìÝíá ôï ðáêÝôï regression ãéá ôåóô êáôÜ
  ôçí ðåñßïäï ôçò áíÜðôõîçò êáé åðßóçò ðñéí ôçí Ýêäïóç ôïõ ëïãéóìéêïý
  óôï êïéíü ãéá íá äéáóöáëßóïõí ôçí êáëÞ ðïéüôçôá.


  Ïé äõíáôüôçôåò ôçò PostgreSQL áíôéêáôñïðôßæïíôáé óôï ðáêÝôï ãéá ôåóô
  regression.  Óå ðåñßðôùóç ðïõ ìéá äõíáôüôçôá, óýíôáîç Þ ÷áñáêôçñéóôéêü
  äåí ðåñéëáìâÜíåôáé óôï ðáêÝôï äåí óçìáßíåé ðùò êáëýðôåôáé áíáãêáóôéêÜ
  áðü ôçí PostgreSQL. Ìðïñåßôå íá ôï åëÝãîåôå, ðáñüëá áõôÜ, åóåßò êáé íá
  åíóùìáôþóåôå ôï ôåóô óáò óôï ðáêÝôï.


  8.  Ãñáöéêü ðñüãñáììá åðéêïéíùíßáò (GUI FrontEnd Tool) ìå ôçí Post-
  greSQL

  Ç äéáíïìÞ ôçò PostgreSQL ðåñéëáìâÜíåé ìéá âéâëéïèÞêç óå  Tcl/Tk, ðïõ
  ïíïìÜæåôáé 'pgTcl'. Ç Tcl/Tk åßíáé Ýíá åñãáëåßï ãéá ãñÞãïñç áíÜðôõîç
  åöáñìïãþí êáé ìéá ðïëý äõíáôÞ scripting ãëþóóá.  Áíáðôýóóåôå ìéá öïñÜ
  ôçí åöáñìïãÞ óáò êáé ôçí ôñÝ÷åôå ðáíôïý : óå NT, Win 95, Linux, OS/2
  êáé üëá ôá óõóôÞìáôá unix.  Tcl åßíáé ôá áñ÷éêÜ ôïõ 'Tool Command
  Language' êáé Tk ôïõ 'Tool Kit'. ÕðÜñ÷åé Ýíá ïëïêëçñùìÝíï ðåñéâÜëëïí
  áíÜðôõîçò (IDE - integrated development environment) ãéá ôçí Tcl/Tk
  ðïõ ëÝãåôáé SpecTcl. ÊïéôÜîôå ãé áõôü ôï rpm ðáêÝôï óôç äéáíïìÞ Redhat
  linux Þ óôï sunscript site ðïõ äßíåôáé ðáñáêÜôù.

  Óõíéóôïýìå ôçí Perl ãéá ãëþóóá ðñïãñáììáôéóìïý ìéá êáé åßíáé ç ðéï
  äéáäåäïìÝíç ãëþóóá, ðïëý éó÷õñÞ êáé äéáôßèåôáé ãéá üëá ôá ìç÷áíÞìáôá
  êáé üëåò ôéò ðëáôöüñìåò ëåéôïõñãéêþí. Óáò óõìâïõëåýïõìå íá
  ÷ñçóéìïðïéÞóåôå  Perl-Tk Þ Perl-Qt Þ C++ QtEZ Þ C++ Lesstiff. Ï
  óõíäõáóìüò Perl, C êáé Tk èá éêáíïðïéÞóåé ôéò áíÜãêåò ôùí ðåñéóóïôÝñùí
  projects, ëáìâÜíïíôáò õðüøç ôï äéáèÝóéìï ÷ñüíï, ôçí ôá÷ýôçôá ôùí
  åêôåëÝóéìùí êáé ôçí åõêïëßá ðñïãñáììáôéóìïý. Óçìåéþóôå üôé ôá
  ðñïãñÜììáôá óå Java ôñÝ÷ïõí ðïëý áñãÜ. Áêüìç êáé ôá ðñïãñÜììáôá ðïõ
  åßíáé ãñáììÝíá óå C++ ôñÝ÷ïõí ðéï áñãÜ áðü ôá ðñïãñÜììáôá ðïõ
  ãñÜöïíôáé óå C. Ôá ðñïãñÜììáôá óå C åêôåëïýíôáé ôá÷ýôåñá áðü ôá
  áíôßóôïé÷á ðñïãñÜììáôá ãñáììÝíá óå ïðïéáäÞðïôå Üëëç ãëþóóá
  ðñïãñáììáôéóìïý.

  Ç Perl ÷ñçóéìïðïéåßôáé ãéá ôïí ðñïãñáììáôéóìü ôïõ 90 % ôùí internet
  scripts óôïí êüóìï.  ¸ôóé èá Ý÷åôå ìüíï ìéá ãëþóóá, ôçí "Perl", ãéá
  üëåò óáò ôéò áíÜãêåò,  óå åöáñìïãÝò üóï êáé óôï internet.  Äåßôå ôï
  Perl Database Interface áõôïý ôïõ êåéìÝíïõ óôï ``''

  Èá ðñÝðåé íá ìåëåôÞóåôå ôá äõíáôÜ óçìåßá ôçò Perl óå óýãêñéóç ìå ôçí
  Tcl/Tk ðñéí îåêéíÞóåôå êÜðïéï project óå Tcl.  Ç Tcl/TK äßíåôáé
  óõíÞèùò ìå êÜèå linux cdrom. Ìðïñåßôå åðßóçò íá ôç âñåßôå óôá sites -

  ·  Tcl/Tk  <http://www.scriptics.com>

  ·  ÁíôéêåéìåíïóôñáöÝò extension ôçò Tcl ðïõ ïíïìÜæåôáé INCR óôï
     <http://www.tcltk.com>

  ·  Visual TCL site  <http://www.neuron.com>

  ·  Visual TCL Redhat rpm óôï
     <ftp://ftp.redhat.com/pub/contrib/i386/visualtcl*.rpm>

  ·  <http://sunscript.sun.com/>

  ·  <http://sunscript.sun.com/TclTkCore/>

  ·  <ftp://ftp.sunlabs.com/pub/tcl/tcl8.0a2.tar.Z>

  ·  Âéâëßá áíáöïñþí: ÐïëëÜ ôå÷íéêÜ âéâëßá ãéá TCL/TK äéáôßèåíôáé óôçí
     áãïñÜ.


  9.  Åñãáëåßá åíüò ÏëïêëçñùìÝíïõ ÓõóôÞìáôïò ÁíÜðôõîçò ãéá PostgreSQL
  (GUI IDE)


  ÊïéôÜîôå ôá ðáñáêÜôù åñãáëåßá áíÜðôõîçò ôá ïðïßá ìðïñåßôå íá
  ÷ñçóéìïðïéÞóåôå óå óõíäõáóìü ìå ïäçãïýò ODBC/JDBC.  Áõôïß åßíáé
  ðáñüìïéïé ìå Borland C++ Builder, Borland JBuilder.

  Ôï Vibe åßíáé Java êáé C++ IDE (Integrated Development Environment)
  êáé êÝñäéóå óôçí Unix Åðéóêüðçóç ãéá ôá ïëïêëçñùìÝíá óõóôÞìáôá
  áíÜðôõîçò ôçò ÷ñïíéÜò.

  ·  Ðåñéóóüôåñåò ðëçñïöïñßåò ãéá ôï Vibe óôï
     <http://www.LinuxMall.com/products/00487.html>

  ·  Ôï 'QT' åßíáé ìéá ðëáôöüñìá áíÜðôõîçò åöáñìïãþí ãéá Windows95/NT
     êáé Unix  <http://www.troll.no> êáé ôï ftp site ôïõ åßíáé ôï
     <ftp://ftp.troll.no>

     Ìðïñåßôå åðßóçò íá ÷ñçóéìïðïéÞóåôå Borland C++ Builder, Delphi,
     Borland JBuilder, PowerBuilder óå Windows95 êáé íá óõíäåèåßôå ìå
     ôçí PostgreSQL óå Ýíá óýóôçìá unix ìÝóù ïäçãþí ODBC/JDBC.

  Äåßôå åðßóçò ôï PERL Database Interface óå áõôü ôï êåßìåíï óôï ``'' Ç
  Perl êáé C/C++ óõíßóôáíôáé Ýíôïíá óáí åðéëïãÝò ãëþóóáò ãéá IDE.

  ÄùñåÜí åñãáëåßá IDE -

  Äåßôå ôï CDROM ôçò äéáíïìÞò redhat linux.

  ·  Lesstiff Mottif Tool
     <ftp://ftp.redhat.com/pub/contrib/i386/lesstiff*.rpm>

  ·  FreeBuilder  <ftp://ftp.redhat.com/pub/contrib/i386/free*.rpm>

  ·  SpecTCL  <ftp://ftp.redhat.com/pub/contrib/i386/spec*.rpm>

  ·  JccWarrior  <ftp://ftp.redhat.com/pub/contrib/i386/jcc*.rpm>

  ·  Kanchenjunga Java RAD Tool for PostgreSQL
     <http://www.man.ac.uk/~whaley/kj/kanch.html>

  ·  Applixware Tool  <http://www.redhat.com>

  ·  XWPE X Windows Programming Environment
     <http://www.rpi.edu/~payned/xwpe/>
     <ftp://ftp.redhat.com/pub/contrib/i386/xwpe*.rpm>

  ·  XWB X Windows Work Bench
     <ftp://ftp.redhat.com/pub/contrib/i386/xwb*.rpm>

  ·  NEdit  <ftp://ftp.redhat.com/pub/contrib/i386/nedit*.rpm>

  10.  Ïäçãïß Äéáóýíäåóçò ìå ôçí PostgreSQL


  10.1.  ODBC Drivers ãéá ôçí PostgreSQL

  ODBC åßíáé áêñùíýìéï ôïõ 'Open DataBase Connectivity', Ýíá äçìïöéëÝò
  ðñüôõðï ãéá ðñüóâáóç óå ðëçñïöïñßåò áðü äéÜöïñåò âÜóåéò áðü
  äéáöïñåôéêïýò ðùëçôÝò. Ïé åöáñìïãÝò ðïõ Ý÷ïõí ãñáöôåß ÷ñçóéìïðïéþíôáò
  ODBC drivers, åããõïýíôáé üôé èá äïõëÝøïõí ìå äéÜöïñåò âÜóåéò üðùò
  PostgreSQL, Oracle, Sybase, Informix êëð.


  ·  Ôï PostODBC Ý÷åé óõìðåñéëçöèåß Þäç óôç äéáíïìÞ. Äåßôå ôï êåíôñéêü
     web site  <http://www.postgresql.org>. ÓõìðåñéëáìâÜíåôáé óôï CDROM
     ôçò PostgreSQL.


  ·  <http://www.openlinksw.com> Ç Open Link Software Corporation
     ðïõëÜåé ODBC ãéá PostgreSQL êáé Üëëåò âÜóåéò. Ç Open Link äßíåé
     åðßóçò äùñåÜí ODBC (ðåñéïñéóìÝíï áñéèìü ÷ñçóôþí) - ôóåêÜñåôÝ ôï.

  ·  Insight ODBC ãéá ôçí PostgreSQL
     <http://www.insightdist.com/psqlodbc> Áõôü åßíáé ôï åðßóçìï site
     ôïõ PostODBC.

  ÕðÜñ÷åé êÜðïéï Ýñãï ðïõ ïíïìÜæåôáé FreeODBC Pack Package. Äåí õðÜñ÷åé
  ó' áõôü Ýêäïóç ãéá PostgreSQL, ßóùò ìðïñåßôå íá âïçèÞóåôå.

  ·  <http://www.ids.net/~bjepson/freeODBC/> ÁõôÞ åßíáé ç äùñåÜí Ýêäïóç
     ãéá ODBC.

  10.2.  UDBC Drivers ãéá ôçí PostgreSQL

  Ôï UDBC åßíáé ìéá óôáôéêÞ Ýêäïóç ODBC áíåîÜñôçôç áðü äéá÷åéñéóôÝò
  ïäçãþí (driver managers) êáé õðïóôÞñéîç DLL, ÷ñçóéìïðïéåßôáé ãéá íá
  ðñïóèÝôåé õðïóôÞñéîç áðåõèåßáò äéáóýíäåóçò ìå âÜóç ìÝóá óôéò
  åöáñìïãÝò.

  ·  <http://www.openlinksw.com>Ç åôáéñåßá Open Link Software ðïõëÜ UDBC
     ãéá ôçí PostgreSQL êáé Üëëåò âÜóåéò.  Ç Open Link äßíåé åðßóçò
     äùñåÜí UDBC (ðåñéïñéóìÝíï áñéèìü ÷ñçóôþí) - ôóåêÜñåôÝ ôï.

  10.3.  JDBC Drivers ãéá ôçí PostgreSQL

  JDBC åßíáé áêñùíýìéï ôïõ 'Java DataBase Connectivity'. Ç Java åßíáé
  ìéá ãëþóóá ðñïãñáììáôéóìïý áíåîáñôÞôïõ ðëáôöüñìáò ðïõ áíáðôý÷èçêå áðü
  ôçí Sun Microsystems. Ïé ðñïãñáììáôéóôÝò Java  åíèáññýíïíôáé íá
  ãñÜöïõí åöáñìïãÝò âÜóåùí äåäïìÝíùí ÷ñçóéìïðïéþíôáò JDBC ãéá íá
  äéåõêïëýíïõí ôç ìåôáöåñóéìüôçôá ìåôáîý âÜóåùí üðùò ç PostgreSQL,
  Oracle, informix, êëð. Áí ãñÜøåôå åöáñìïãÞ óå Java ìðïñåßôå íá ðÜñåôå
  ôïõò ïäçãïýò JDBC ãéá PostgreSQL áðü ôá ðáñáêÜôù sites:

  Ï ïäçãüò JDBC ðåñéëáìâÜíåôáé Þäç óôç äéáíïìÞ ôçò PostgreSQL.


  ·  <http://www.demon.co.uk/finder/postgres/index.html> Äéáóýíäåóç Java
     (ôçò Sun) ìå PostgreSQL

  ·  <ftp://ftp.ai.mit.edu/people/rst/rst-jdbc.tar.gz>

  ·  <http://www.openlinksw.com> Ç åôáéñåßá Open Link Software ðïõëÜ
     JDBC ãéá PostgreSQL êáé Üëëåò âÜóåéò.  Ç Open Link äßíåé åðßóçò
     äùñåÜí JDBC (ðåñéïñéóìÝíï áñéèìü ÷ñçóôþí) - ôóåêÜñåôÝ ôï.

  ·  JDBC UK site  <http://www.retep.org.uk/postgres>

  ·  JDBC FAQ site  <http://eagle.eku.edu/tools/jdbc/faq.html>

  Ôá JDBC home, guide êáé FAQ âñßóêïíôáé óôá -

  ·  JDBC HOME  <http://splash.javasoft.com/jdbc>

  ·  JDBC guide
     <http://www.javasoft.com/products/jdk/1.1/docs/guide/jdbc>

  ·  JDBC FAQ  <http://javanese.yoyoweb.com/JDBC/FAQ.txt>


  10.4.  Java ãéá PostgreSQL

  Ïé ðñïãñáììáôéóôÝò Java ìðïñåß íá èåùñÞóïõí ôá ðáñáêÜôù sites ðïëý
  ÷ñÞóéìá ãéá ôçí PostgreSQL.

  ·  <ftp://ftp.redhat.com/pub/contrib/i386> êáé äåßôå ôï postgresql-
     jdbc-*.rpm

  ·  <http://www.blackdown.org>

  11.  Perl Database Interface (DBI) Driver ãéá PostgreSQL


  11.1.  Äéáóýíäåóç Perl 5 ìå PostgreSQL

  PERL åßíáé áêñùíýìéï ôïõ 'Practical Extraction êáé Report Language'.
  Ç Perl åßíáé äéáèÝóéìç ó÷åäüí óå êÜèå ëåéôïõñãéêü êáé ðëáôöüñìá
  hardware. Ìðïñåßôå íá ÷ñçóéìïðïéÞóôå Perl óå Windows95/NT, üëá ôá Unix
  (Solaris, HPUX, AIX, Linux, Irix, SCO êëð.), óå mainframe MVS, desktop
  OS/2, OS/400, Amdahl UTS êáé ðïëëÜ Üëëá. Ç Perl ôñÝ÷åé ÁÊÏÌÇ êáé óå
  ðïëëÜ ìç äçìïöéëÞ/ãåíéêÜ Üãíùóôá ëåéôïõñãéêÜ óõóôÞìáôá êáé õëéêÜ!!

  ¸ôóé, ìçí åêðëáãåßôå áí äåßôå ôçí perl íá ôñÝ÷åé óå ðïëëÜ ü÷é óõ÷íÜ
  ÷ñçóéìïðïéïýìåíá ëåéôïõñãéêÜ.

  Ìðïñåßôå íá öáíôáóôåßôå ôçí ôåñÜóôéá âÜóç ÷ñçóôþí êáé ðñïãñáììáôéóôþí
  óå Perl.

  Ç äéáóýíäåóç Perl ìå PostgreSQL ðåñéëáìâÜíåôáé óôç äéáíïìÞ ôçò
  PostgreSQL. ÊïéôÜîôå óôïí êáôÜëïãï src/pgsql_perl5.

  ·  Ôï Email ãéá åðéêïéíùíßá ó÷åôéêÜ ìå ôçí Pgsql_perl5 :
     E.Mergl@bawue.de

  ·  ¶ëëç ðçãÞ åßíáé ôá -
     <ftp://ftp.kciLink.com/pub/PostgresPerl-1.3.tar.gz>

  ·  Perl Home page:  <http://www.perl.com/perl/index.html>

  ·  ÅêìÜèçóç ôçò Perl, øÜîôå ãéá ôßôëï Tutorial óôï :
     <http://reference.perl.com/>

  ·  Ôï Perl FAQ åßíáé óôï :
     <http://www.yahoo.com/Computers_and_Internet/Programming_Languages/Perl/>

  ·  Ãñáöéêü ðåñéâÜëëïí ãéá Perl, Perl-Qt :
     <ftp://ftp.redhat.com/pub/contrib/i386> êáé øÜîôå ãéá ôï
     PerlQt-1.06-1.i386.rpm

  ·  Ãñáöéêü ðåñéâÜëëïí ãéá Perl, Perl-Qt :
     <http://www.accessone.com/~jql/perlqt.html>

  ·  Ãñáöéêü ðåñéâÜëëïí ãéá Perl, Perl-XForms :
     <ftp://ftp.redhat.com/pub/contrib/i386> êáé øÜîôå ãéá ôï áñ÷åßï
     Xforms4Perl-0.8.4-1.i386.rpm

  ·  Ãñáöéêü ðåñéâÜëëïí ãéá Perl, Perl-Tk :
     <ftp://ftp.redhat.com/pub/contrib/i386>

  ·  Perl GUIkits :  <http://reference.perl.com/query.cgi?ui>

  ·  Perl Database Interfaces :
     <http://reference.perl.com/query.cgi?database>

  ·  ÌåôáöñáóôÞò áðü Perl óå "C" :  <http://www.perl.com/CPAN-
     local/modules/by-module/B/> êáé øÜîôå ãéá ôï Compiler-a3.tar.gz

  ·  ÌåôáöñáóôÞò áðü Perl óå êÝëõöïò Bourne :
     <http://www.perl.com/CPAN/authors/id/MERLYN/sh2perl-0.02.tar.gz>


  ·  áðü awk óå perl a2p êáé áðü sed óå perl s2p ðåñéëáìâÜíåôáé ìå ôç
     äéáíïìÞ ôçò PERl.

  ·  Äåßôå åðßóçò ôá newsgroups ãéá PERL óôï comp.lang.perl.*

  11.2.  Perl Database Interface DBI

  11.2.1.  ÔÉ ÅÉÍÁÉ ÔÏ DBI ;

  Ôï ðáñáêÜôù åßíáé áðüóðáóìá áðü ôçí êåíôñéêÞ óåëßäá ôïõ Perl DBI.

  To Perl Database Interface (DBI) åßíáé Ýíá  ðñïãñáììáôéóôéêü interface
  (API) óå Perl ãéá äéáóýíäåóç ìå âÜóåéò äåäïìÝíùí.  Ïé ðñïóäéïñéóìïß
  ôïõ Perl DBI API ïñßæïõí Ýíá óýíïëï áðü ñïõôßíåò, ìåôáâëçôÝò êáé
  óõìâÜóåéò ðïõ ðáñÝ÷ïõí Ýíá óõíåêôéêü interface âÜóçò äåäïìÝíùí
  áíåîÜñôçôï áðü ôçí ðñáãìáôéêÞ âÜóç ðïõ ÷ñçóéìïðïéåßôáé.  Ïé
  ðëçñïöïñßåò ãéá áõôü ôï ôìÞìá DBI ðñïÞëèå áðü ôï êåßìåíï 'DBI FAQ' ôï
  ïðïßï Ý÷åé ãñÜøåé ï Alligator Descartes ôï áíáðáñáãÜãáìå ìå ôçí ÜäåéÜ
  ôïõ.

  ·  Ìðïñåßôå íá åðéêïéíùíÞóåôå ìå ôïí Alligator Descartes Hermetica óôï
     descarte@hermetica.com


  11.2.2.  Ïäçãüò DBI ãéá ôçí PostgreSQL - DBD-Pg-0.89

  ÊáôåâÜóôå ôï DBD-Pg-0.89.tar.gz áðü ôá

  ·  DBD-Pg-0.89 :  <http://www.perl.com/CPAN/modules/by-module/DBD/>

  ·  Comprehensive Perl Archive Network CPAN  <http://www.perl.com/CPAN>

  ·  Ëßóôá ïäçãþí DBI êáé óåëßäåò DBI module
     <http://www.hermetica.com/technologia/perl/DBI>

  ·  Ðëçñïöïñßåò ãéá ôï DBI èá âñåßôå óôï  <http://www.fugue.com/dbi/>

  ·  Êåíôñéêü ftp site  <ftp://ftp.demon.co.uk/pub/perl/db>

  ·  ÄéÜöïñá DBI link  <http://www-ccs.cs.umass.edu/db.html>

  ·  ÄéÜöïñá DBI link  <http://www.odmg.org/odmg93/updates_dbarry.html>

  ·  ÄéÜöïñá DBI link  <http://www.jcc.com/sql_stnd.html>

  ·  Ç âÜóç PostgreSQL  <http://www.postgresql.org>

  ÁÐÁÉÔÇÓÅÉÓ:


  ·  - íá ÷ôßóåôå, íá ôåóôÜñåôå êáé íá åãêáôáóôÞóåôå ôçí Perl 5
     (ôïõëÜ÷éóôïí ôçí 5.002)

  ·  - íá ÷ôßóåôå, íá ôåóôÜñåôå êáé íá åãêáôáóôÞóåôå ôï module DBI
     (ôïõëÜ÷éóôïí ôï 0.89)

  ·  - íá ÷ôßóåôå, íá ôåóôÜñåôå êáé íá åãêáôáóôÞóåôå ôçí PostgreSQL
     (ôïõëÜ÷éóôïí ôçí 6.2)



  11.2.3.  Ôå÷íéêÞ õðïóôÞñéîç ãéá ôï DBI

  Ðáñáêáëþ óôåßëôå ôá ó÷üëéÜ óáò êáé áíáöïñÝò ëáèþí óôï


  ·  E.Mergl@bawue.de

  ÓõìðåñéëÜâåôå ðáñáêáëþ ôçí Ýîïäï ôçò åíôïëÞ perl -v, êáé perl -V, ôçí
  Ýêäïóç ôçò PostgreSQL, ôçí Ýêäïóç ôïõ DBD-Pg, êáé ôçí Ýêäïóç ôïõ DBI
  óôçí áíáöïñÜ ëáèþí.



  11.2.4.  Ôé åßíáé ôá DBI, DBperl, Oraperl êáé *perl;

  ¼ðùò åßðå êáé ï Tim Bunce, ï ó÷åäéáóôÞò êáé óõããñáöÝáò ôïõ DBI:

  ``Ôï DBI åßíáé Ýíá ðñïãñáììáôéóôéêü interface (API) óå Perl ãéá
  äéáóýíäåóç ìå äéáóýíäåóç ìå âÜóåéò äåäïìÝíùí. Ïé ðñïóäéïñéóìïß ôïõ DBI
  API ïñßæïõí Ýíá óýíïëï áðü ñïõôßíåò, ìåôáâëçôÝò êáé óõìâÜóåéò ðïõ
  ðáñÝ÷ïõí Ýíá óõíåêôéêü interface âÜóçò äåäïìÝíùí áíåîÜñôçôï áðü ôçí
  ðñáãìáôéêÞ âÜóç ðïõ ÷ñçóéìïðïéåßôáé.''

  Ìå áðëÜ ëüãéá, ôï DBI interface åðéôñÝðåé óôïõò ÷ñÞóôåò íá Ý÷ïõí
  äéÜöáíç ðñüóâáóç óå ðïëëáðëïýò ôýðïõò âÜóåùí. ¸ôóé, áí óõíäÝåóôå ôçí
  Oracle, Informix, mSQL, Sybase Þ ïðïéáäÞðïôå Üëëç âÜóç, äå ÷ñåéÜæåôáé
  íá ãíùñßæåôå ôïõò õðïêåßìåíïõò ìç÷áíéóìïýò ôïõ åðéðÝäïõ 3GL. Ôï API
  ðïõ ïñßæåôáé áðü ôï DBI èá äïõëÝøåé óå üëïõò ôïõò ôýðïõò âÜóåùí.

  ¸íá ðáñüìïéï ðëåïíÝêôçìá åßíáé ç éêáíüôçôá íá óõíäåèåßôå óå äýï âÜóåéò
  äéáöïñåôéêïý ôýðïõ  ìÝóù ôïõ ßäéïõ perl script, ð÷, èÝëåôå íá
  äéáâÜóåôå äåäïìÝíá áðü ìéá âÜóç Oracle êáé íá ôá åéóÜãåôå óå ìéá âÜóç
  Informix ìÝóá óôï ßäéï ðñüãñáììá. Ôï åðßðåäï DBI óáò åðéôñÝðåé íá ôï
  êÜíåôå áõôü áðëÜ êáé éó÷õñÜ.

  DBperl åßíáé ôï ðáëéü üíïìá ãéá ôéò ðñïäéáãñáöÝò ôïõ interface.
  ×ñçóéìïðïéåßôáé óõíÞèùò ãéá íá õðïäçëþóåé ôá perl4 modules ãéá
  äéáóýíäåóç ìå âÜóåéò, üðùò, oraperl, isqlperl, ingperl êáé ëïéðÜ. ÁõôÜ
  ôá interfaces äåí åß÷áí óôÜíôáñ API êáé ãåíéêÜ äåí õðïóôçñßæïíôáé.

  Íá ìéá ëßóôá áðü DBperl modules, ôï áíôßóôïé÷ï DBI ôáßñé ôïõò êáé
  ðëçñïöïñßåò õðïóôÞñéîçò. ÅñùôÞóåéò ó÷åôéêÜ ìå ôïí ïäçãü DBI èá ðñÝðåé
  íá áðåõèýíïíôáé óôç ëßóôá áëëçëïãñáößáò dbi-users .


           ¼íïìá Module Áðáéôïýìåíç ÂÜóç     ÓõããñáöÝáò          DBI
           ------------ -----------------   ----------          ---
           Sybperl     Sybase              Michael Peppler     DBD::Sybase
                                           <mpeppler@datamig.com>
                                           http://www.mbay.net/~mpeppler
           Oraperl     Oracle 6 & 7        Kevin Stock         DBD::Oracle
                                           <dbi-users@fugue.com>
           Ingperl     Ingres              Tim Bunce &         DBD::Ingres
                                           Ted Lemon
                                           <dbi-users@fugue.com>
           Interperl   Interbase           Buzz Moschetti      DBD::Interbase
                                           <buzz@bear.com>
           Uniperl     Unify 5.0           Rick Wargo          -
                                           <rickers@coe.drexel.edu>
           Pgperl      Postgres            Igor Metz           DBD::Pg
                                           <metz@iam.unibe.ch>
           Btreeperl   NDBM                John Conover        SDBM;
                                           <john@johncon.com>
           Ctreeperl   C-Tree              John Conover        -
                                           <john@johncon.com>
           Cisamperl   Informix C-ISAM     Mathias Koerber     -
                                           <mathias@unicorn.swi.com.sg>
           Duaperl     X.500 Directory     Eric Douglas        -
                       User Agent


  Ðáñüëá áõôÜ, ìåñéêÜ DBI modules Ý÷ïõí åðßðåäá ðñïóïìïßùóçò DBperl.
  ¸ôóé, ç DBD::Oracle Ýñ÷åôáé ìå Ýíá åðßðåäï ðñïóïìïßùóçò Oraperl, ðïõ
  óáò åðéôñÝðåé íá ôñÝîåôå êëçñïíïìéêÜ oraperl scripts ÷ùñßò áëëáãÝò. Ôï
  åðßðåäï ðñïóïìïßùóçò ìåôáöñÜæåé ôéò êëÞóåéò ôïõ oraperl API óå êëÞóåéò
  DBI êáé ôéò åêôåëåß ìÝóù ôïõ DBI switch.

  Íá Ýíáò ðßíáêáò ìå ðëçñïöïñßåò ãéá ôá åðßðåäá ðñïóïìïßùóçò :


           Module          Åðßðåäï ðñïóïìïßùóçò      ÊáôÜóôáóç
           ------          ---------------------     ------
           DBD::Oracle     Oraperl                   ÏëïêëçñùìÝíï
           DBD::Informix   Isqlperl                  Õðü áíÜðôõîç
           DBD::Sybase     Sybperl                   Äïõëåýåé; (÷ñåéÜæåôáé åðáëÞèåõóç )
           DBD::mSQL       Msqlperl                  Åêäüèçêå ðåéñáìáôéêÜ ìå ôçí
                                                     DBD::mSQL-0.61




  Ç ðñïóïìïßùóç Msqlperl åßíáé ìéá åéäéêÞ ðåñßðôùóç. Ôï Msqlperl åßíáé
  Ýíáò ïäçãüò perl5 ãéá mSQL âÜóåéò, áëëÜ äå óõììïñöþíåôáé ìå ôéò
  ðñïäéáãñáöÝò ôïõ DBI.  Ç ÷ñÞóç áðïäïêéìÜæåôáé ñçôÜ ãéá ÷Üñç ôïõ
  DBD::mSQL. Ìðïñåßôå íá êáôåâÜóåôå ôçí Msqlperl áðü ôç CPAN áðü ôï:

  ·  <http://www.perl.com/cgi-bin/cpan_mod?module=Msqlperl>

  11.2.5.  ÐñïäéáãñáöÝò DBI

  ÕðÜñ÷ïõí ëßãåò ðçãÝò ðëçñïöïñßáò ãéá DBI.

  ·  ÐñïäéáãñáöÝò DBI
     <http://www.hermetica.com/technologia/perl/DBI/doc/dbispec>

  ÕðÜñ÷ïõí äýï ðñïäéáãñáöÝò äéáèÝóéìåò óå áõôü ôï link, ïé íÝåò
  Ðñü÷åéñåò (Draft) DBI ðñïäéáãñáöÝò, áõôü ôï êåßìåíï áëëÜæåé êáèçìåñéíÜ
  êáèþò ç ïìÜäá áíÜðôõîçò âáäßæåé ïñïò Ýíá óôáèåñü interface, êáé ïé
  ðáëéÝò éóôïñéêÝò DBperl ðñïäéáãñáöÝò áðü ôéò ïðïßåò áíáðôý÷èçêå ôï
  ôñÝ÷ïí DBI interface.

  Ôï ôåëåõôáßï êåßìåíï ðñÝðåé íá äéáâáóôåß ìüíï êáé ìüíï áðü éóôïñéêü
  åíäéáöÝñïí êáé íá ìç ÷ñçóéìïðïéçèåß ùò åã÷åéñßäéï ðñïãñáììáôéóìïý, Þ
  ùò Ýãêõñï ìå ïðïéáäÞðïôå Ýííïéá. Ðáñüëá áõôÜ, ðáñáìÝíåé ìéá áêüìç
  ÷ñÞóéìç ðçãÞ áíáöïñÜò.

  Ôåêìçñßùóç POD Ôá PODs åßíáé êïììÜôéá ôåêìçñßùóçò ðïõ åíóùìáôþíïíôáé
  óõíÞèùò óå ðñïãñÜììáôá perl ðïõ ôåêìçñéþíïõí ôïí êþäéêá ``in place'',
  ðáñÝ÷ïíôáò Ýíá ÷ñÞóéìï âïÞèçìá ãéá ðñïãñáììáôéóôÝò êáé ÷ñÞóôåò
  modules. Ôï POD ãéá DBI êáé drivers ãßíåôáé üëï êáé ðåñéóóüôåñï
  êïéíüôïðï, êáé ç ôåêìçñßùóç ãéá áõôÜ ôá modules ìðïñåß íá äéáâáóôåß ìå
  ôéò ðáñáêÜôù åíôïëÝò.

  ÐñïäéáãñáöÝò DBI Ôá POD ãéá ðñïäéáãñáöÝò DBI ìðïñåß íá äéáâáóôåß ìå
  ôçí åíôïëÞ:

  perldoc DBI

  Oraperl Ïé ÷ñÞóôåò ôïõ åðéðÝäïõ ðñïóïìïßùóçò Oraperl ðïõ Ýñ÷åôáé ìáæß
  ìå ôçí DBD::Oracle, ìðïñïýí íá óõíå÷ßóïõí íá äéáâÜóïõí ãéá ôï ðùò íá
  ðñïãñáììáôßóïõí ìå ôï Oraperl ðëçêôñïëïãþíôáò:

  perldoc Oraperl

  Áõôü èá ðáñÜãåé Ýíá åíçìåñùìÝíï áíôßãñáöï ôçò áñ÷éêÞò óåëßäáò âïçèåßáò
  oraperl, ðïõ ãñÜöôçêå áðü ôïí Kevin Stock ãéá perl4. Ôï API ôçò
  oraperl åìöáíßæåôáé êáé ðåñéãñÜöåôáé åêåß ðëÞñùò.
  DBD::mSQL Ïé ÷ñÞóôåò ôïõ DBD::mSQL module ìðïñïýí íá äéáâÜóïõí ãéá
  ìåñéêÝò private functions êáé éäéïìïñößåò áõôïý ôïõ ïäçãïý (driver)
  ðëçêôñïëïãþíôáò:

  perldoc DBD::mSQL

  Óõ÷íÜ ÄéáôõðùìÝíåò ÅñùôÞóåéò (FAQ)

  To êåßìåíï, Frequently Asked Questions åßíáé åðßóçò äéáèÝóéìï ùò
  ôåêìçñßùóç óå POD ! Ìðïñåßôå íá ôï äéáâÜóåôå óôï äéêü óáò óýóôçìá,
  ðëçêôñïëïãþíôáò:

  perldoc DBI::FAQ

  Áõôü ìðïñåß íá åßíáé âïëéêüôåñï ãéá áíèñþðïõò ðïõ äåí åßíáé
  óõíäåäåìÝíïé ìüíéìá Þ Üíåôá, óôï Internet.

  Ôï POD ãåíéêÜ Ðëçñïöüñçóç ãéá ôç óõããñáöÞ POD, êáé ãéá ôçí öéëïóïößá
  ôïõ POD ãåíéêüôåñá, ìðïñåß íá äéáâáóôåß ãñÜöïíôáò:

  perldoc perlpod

  ×ñÞóôåò ðïõ Ý÷ïõí åãêáôáóôÞóåé ôï Tk module ßóùò íá åíäéáöÝñïíôáé íá
  ìÜèïõí ðùò õðÜñ÷åé äéáèÝóéìïò Ýíáò POD áíáãíþóôçò âáóéóìÝíïò óå Tk ðïõ
  ëÝãåôáé tkpod, êáé äéáìïñöþíåé POD óå ìéá âïëéêÞ êáé áíáãíþóéìç ìïñöÞ.

  ``ÐåñéðëáíÞóåéò'', ``ÌåæåäÜêéá'' êáé ÐáñáôçñÞóåéò ÕðÜñ÷åé ìéá óåéñÜ
  áðü ðåñéóôáóéáêÝò ``ðåñéðëáíÞóåéò'' áðü äéÜöïñïõò óôéò ëßóôåò
  áëëçëïãñáößáò ãéá DBI.

  ·  <http://www.hermetica.com/technologia/perl/DBI/tidbits>


  ``DBI -- The perl5 Database Interface'' Áõôü åßíáé Ýíá Üñèñï áðü ôïí
  Alligator Descartes êáé ôïí Tim Bunce ãéá ôç äïìÞ ôïõ DBI.
  Äçìïóéåýôçêå óôï ôåý÷ïò 5 ôïõ ``The Perl Journal''. Åßíáé õðåñâïëéêÜ
  êáëü. Ðçãáßíåôå êáé áãïñÜóôå ôï ðåñéïäéêü. Åäþ ðïõ ôá ëÝìå, áãïñÜóôå
  üëá ôá ôåý÷ç!  ``The Perl Journal''s WWW site is:

  ·  <http://www.tpj.com>

  ``DBperl'' Áõôü ôï Üñèñï, ôï ïðïßï äçìïóéåýôçêå óôçí Ýêäïóç Íïåìâñßïõ
  ôïõ 1996 ``Dr.  Dobbs Journal'' áó÷ïëåßôáé ìå DBperl.

  ``The Perl5 Database Interface'' Áõôü åßíáé Ýíá âéâëßï ãñáììÝíï áðü
  ôïí Alligator Descartes êáé åêäüèçêå áðü ôïõò O'Reilly êáé Associates.

  Ëßóôåò Áëëçëïãñáößáò õðÜñ÷ïõí ôñåéò ëßóôåò áëëçëïãñáößáò ãéá DBI ðïõ
  äéá÷åéñßæåôáé ï Ted Lemon. Óå üëåò ìðïñåßôå íá ãñáöôåßôå êáé íá
  îåãñáöôåßôå áðü ôï World Wide Web óôç äéåýèõíóç :

  ·  Ëßóôåò áëëçëïãñáößáò  <http://www.fugue.com/dbi>

  Ïé ëßóôåò óôéò ïðïßåò ìðïñïýí íá óõììåôÝ÷ïõí ïé ÷ñÞóôåò åßíáé:

  dbi-announce ÁõôÞ ç ëßóôá áëëçëïãñáößáò ìüíï ãéá áíáêïéíþóåéò.  Áí äåí
  ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôçí öüñìá ôçò ðáñáðÜíù WWW óåëßäáò,
  åããñáöåßôå óôç ëßóôá ìå ôïí áêüëïõèï ôñüðï:

  ·  Email: dbi-announce-request@fugue.com

     ìå êåßìåíï óôï óþìá (body) ôïõ ìçíýìáôïò 'subscribe'

  dbi-dev Ç ëßóôá áõôÞ óôï÷åýåé óå ÷ñÞóç áðü ôïõò ðñïãñáììáôéóôÝò ðïõ
  êÜíïõí áíÜðôõîç, ðïõ óõæçôÜíå éäÝåò êáé Ýííïéåò ãéá ôá ôùí DBI
  interface, API êáé driver.  Áí äåí ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôçí
  öüñìá ôçò ðáñáðÜíù WWW óåëßäáò,  åããñáöåßôå óôç ëßóôá ìå ôïí áêüëïõèï
  ôñüðï:

  ·  Email: dbi-dev-request@fugue.com

     ìå êåßìåíï óôï óþìá (body) ôïõ ìçíýìáôïò 'subscribe'

  dbi-users ÁõôÞ ç ëßóôá áëëçëïãñáößáò åßíáé ìéá ëßóôá ãåíéêþí
  óõæçôÞóåùí ðïõ ÷ñçóéìïðïéåßôáé ãéá áíáöïñÝò óöáëìÜôùí, óõæÞôçóç
  ðñïâëçìÜôùí êáé ãåíéêÝò áíáæçôÞóåéò.  Áí äåí ìðïñåßôå íá
  ÷ñçóéìïðïéÞóåôå ôçí öüñìá ôçò ðáñáðÜíù WWW óåëßäáò,  åããñáöåßôå óôç
  ëßóôá ìå ôïí áêüëïõèï ôñüðï:

  ·  Email: dbi-users-request@fugue.com

     ìå êåßìåíï óôï óþìá (body) ôïõ ìçíýìáôïò 'subscribe'

  ×ñïíéêÜ/Áñ÷åßá ôùí Ëéóôþí Áëëçëïãñáößáò


  ·  ÁìåñéêÜíéêá Áñ÷åßá Ëéóôþí Áëëçëïãñáößáò
     <http://outside.organic.com/mail-archives/dbi-users/>

  ·  ÅõñùðáúêÜ Áñ÷åßá Ëéóôþí Áëëçëïãñáößáò    <http://www.rosat.mpe-
     garching.mpg.de/mailing-lists/PerlDB-Interest>



  11.2.6.  ÐñïâëÞìáôá Ìåôáãëþôôéóçò Þ áëëéþò "Êüðçêå óôéò ÅîåôÜóåéò!"

  Áí Ý÷åôå core dump, äïêéìÜóôå ôï module Devel::CoreStack ãéá íá
  äçìéïõñãÞóåôå Ýíá stack trace áðü ôï core dump.  Ôï Devel::CoreStack
  âñßóêåôáé óôï CPAN óôï:

  ·  <http://www.perl.com/cgi-bin/cpan_mod?module=Devel::CoreStack>

  Óôåßëôå Email óôç ëßóôá dbi-users ôï stack trace, ôçí Ýêäïóç ôùí
  modules, ôçò perl, ôá ôåóô ðïõ êÜíáôå, ôçí Ýêäïóç ôïõ ëåéôïõñãéêïý
  óõóôÞìáôïò êáé üðïéåò Üëëåò ó÷åôéêÝò ðëçñïöïñßåò. ¼óåò ðåñéóóüôåñåò
  ðëçñïöïñßåò óôåßëåôå, ôüóï ãñçãïñüôåñá èá áíé÷íåýóïõí ïé
  ðñïãñáììáôéóôÝò ôá ðñïâëÞìáôá. Áí äå ìáò óôåßëôå ôßðïôá, ôüôå ìçí
  ðåñéìÝíåôå ôßðïôá êáé áðü åìÜò.


  -->

  11.2.7.  Õðïóôçñßæåôáé ôï DBI êÜôù áðü ðëáôöüñìåò Windows 95 / NT ;

  Ç ìåôáöïñÜ ôùí DBI êáé DBD::Oracle Win32 åßíáé ôþñá Ýíá óôÜíôáñ ôìÞìá
  ôïõ DBI, Ýôóé, áí êáôåâÜóåôå Ýêäïóç ôïõ DBI ìåãáëýôåñç ôïõ 0.81 èá
  ðñÝðåé íá äïõëåýåé ìéá ÷áñÜ. Ìðïñåßôå íá Ý÷åôå ðñüóâáóç óôéò âÜóåéò
  Microsoft Access êáé SQL-Server áðü ôï DBI ìÝóù ODBC. Ìáæß ìå ôï
  DBI-0.79 (êáé ìåôÝðåéôá) äßíåôáé Ýíá ðåéñáìáôéêü DBI 'åðßðåäï
  ðñïóïìïßùóçò' ãéá ôï module Win32::ODBC. ÏíïìÜæåôáé DBI::W32ODBC.  Èá
  ÷ñåéáóôåßôå ôï module Win32::ODBC.

  ·  Win32 DBI    <http://www.hermetica.com/technologia/perl/DBI/win32>

  ·  Win32 ODBC    <http://www.roth.net>







  11.2.8.  ôïõ; Ôé åßíáé ôï DBM; Êáé ãéáôß èá ðñÝðåé íá ÷ñçóéìïðïéþ ôï
  DBI óôç èÝóç

  Ôï UNIX åõëïãÞèçêå áðü ôçí áñ÷Þ ìå áðëÝò ``âÜóåéò'' âáóéóìÝíåò óå
  åðßðåäá áñ÷åßá, ãíùóôÝò óáí óýóôçìá dbm. Ôï dbm óáò åðéôñÝðåé íá
  áðïèçêåýåôå äåäïìÝíá óå áñ÷åßá, êáé íá áíáêôÜôå ôá äåäïìÝíá ãñÞãïñá
  ÐáñüëáõôÜ, áõôü Ý÷åé êáé óïâáñÜ ìåéïíåêôÞìáôá.

  Êëåßäùìá Áñ÷åßùí (File Locking)

  Ôá óõóôÞìáôá dbm äåí ðáñåß÷áí éäéáßôåñá éó÷õñÝò äõíáôüôçôåò ãéá
  êëåßäùìá áñ÷åßùí, ïýôå êáìßá éêáíüôçôá ãéá ôç äéüñèùóç ðñïâëçìÜôùí ðïõ
  ðñïÝêõðôáí áðü ôáõôü÷ñïíåò åããñáöÝò [óôç âÜóç].

  Áõèáßñåôåò ÄïìÝò ÄåäïìÝíùí (Arbitrary Data Structures)

  Ôá óõóôÞìáôá dbm åðéôñÝðïõí ìüíï ìéá óôáèåñÞ äïìÞ äåäïìÝíùí: æåõãÜñéá
  êëåéäéþí-ôéìþí (key-value pairs). ÁõôÞ ç ôéìÞ ìðïñåß íá åßíáé Ýíá
  óýíèåôï áíôéêåßìåíï, üðùò Ýíá [ C ] struct, áëëÜ ôï êëåéäß ðñÝðåé íá
  åßíáé ìïíáäéêü. Áõôü Þôáí ìåãÜëïò ðåñéïñéóìüò óôç ÷ñçóéìüôçôá ôùí
  óõóôçìÜôùí dbm.

  ÐáñüëáõôÜ, ôá óõóôÞìáôá dbm áêüìá åßíáé ÷ñÞóéìá ãéá ÷ñÞóôåò ìå áðëÜ
  óýíïëá äåäïìÝíùí êáé ðåñéïñéóìÝíïõò ðüñïõò, ìéá êáé åßíáé ãñÞãïñá,
  äõíáôÜ êáé åîáéñåôéêÜ êáëÜ åëåãìÝíá. Ôá modules ôçò Perl ãéá ôçí
  ðñüóâáóç óå óõóôÞìáôá dbm Ý÷ïõí åíóùìáôùèåß ôþñá óôçí äéáíïìÞ ôçò,
  ìÝóù ôïõ module AnyDBM_File.

  ÐåñéëçðôéêÜ, ôï DBM åßíáé ìéá éêáíïðïéçôéêüôáôç ëýóç ãéá (êáôÜ êáíüíá)
  read-only âÜóåéò, Þ ìéêñÜ êáé áðëÜ óýíïëá äåäïìÝíùí. ÐáñüëáõôÜ, ãéá
  ðåñéóóüôåñï éó÷õñÜ êáé åðåêôÜóéìá óýíïëá äåäïìÝíùí, ÷ùñßò ïýôå êáí íá
  áíáöåñèïýìå êáé óå áîéüðéóôï transactional locking, óõíéóôïýìå óôïõò
  ÷ñÞóôåò íá ÷ñçóéìïðïéÞóïõí DBI.

  11.2.9.  Õðïóôçñßæåôáé  < ôï ôÜäå ÷áñáêôçñéóôéêü > óôï DBI;

  Èåùñþíôáò üôé ôï ÷áñáêôçñéóôéêü ðïõ æçôÞóáôå åßíáé Ýíá ìç-óôÜíôáñ,
  åîáñôþìåíï áðü êÜðïéá óõãêåêñéìÝíç âÜóç, ÷áñáêôçñéóôéêü, ôüôå ç
  áðÜíôçóç åßíáé ü÷é.

  Ôï DBI áíôáíáêëÜ Ýíá ãåíéêü API ðïõ èá äïõëÝøåé ãéá ôéò ðåñéóóüôåñåò
  âÜóåéò, êáé äåí ðáñÝ÷åé êáìßá åðéðëÝïí ëåéôïõñãéêüôçôá ãéá êÜðïéá
  óõãêåêñéìÝíç âÜóç äåäïìÝíùí (database-specific functionality).

  ÐáñüëáõôÜ, ïé óõããñáöåßò ôùí ïäçãþí ìðïñïýí, áí ôï åðéèõìïýí, íá
  óõìðåñéëÜâïõí hooks ðñïò åîåéäéêåõìÝíåò ëåéôïõñãßåò/÷áñáêôçñéóôéêÜ
  êÜðïéáò âÜóçò äåäïìÝíùí ìÝóù ôçò ìåèüäïõ func ðïõ ïñßæåôáé óôï DBI
  API. ¼óïé áíáðôýóóïõí scripts èá ðñÝðåé íá óçìåéþóïõí ðùò ç
  ëåéôïõñãéêüôçôá ðïõ ðáñÝ÷åôáé ìÝóù ôùí ìåèüäùí func åßíáé áðßèáíï íá
  ìåôáöåñèåß óå Üëëåò âÜóåéò.


  11.2.10.  ×ñçóéìåýåé êáèüëïõ ôï DBI ãéá ðñïãñáììáôéóìü óå CGI;

  Ìå ìéá ëÝîç, íáé! Ôï DBI åßíáé åîáéñåôéêÜ ÷ñÞóéìï ãéá ðñïãñáììáôéóìü
  óå CGI!  Óôçí ðñáãìáôéêüôçôá, èá ôïëìïýóá íá ðù üôé ï ðñïãñáììáôéóìüò
  óå CGI åßíáé ìßá áðü ôéò êýñéåò ÷ñÞóåéò ôïõ DBI.

  To DBI äßíåé ôçí éêáíüôçôá óôïõò ðñïãñáììáôéóôÝò CGI íá åíéó÷ýóïõí ôéò
  âÜóåéò ðïõ Ý÷ïõí WWW-fronted, ðñÜãìá ðïõ ðáñÝ÷åé óôïõò ÷ñÞóôåò ôç
  äõíáôüôçôá íá ðáßîïõí ìå ôåñÜóôéåò ðïóüôçôåò äïìçìÝíùí äåäïìÝíùí.
  Åðßóçò, óôçí ðåñßðôùóç ðïõ Ýíá site Ý÷åé ðåñéóóüôåñç êßíçóç áðü üôé ï
  server ôçò âÜóçò äåäïìÝíùí ìðïñåß íá áíôéìåôùðßóåé, ôï DBI äßíåé ôç
  äõíáôüôçôá áíáâÜèìéóçò ôïõ server ôçò âÜóçò äåäïìÝíùí óôï ðáñáóêÞíéï,
  ÷ùñßò áëëáãÝò óôá cgi scripts.

  11.2.11.  Ðþò ðåôõ÷áßíù ôá÷ýôåñïõò ÷ñüíïõò óýíäåóçò ìå DBD Oracle êáé
  CGI;


  Ï Apache httpd äéáôçñåß ìéá äåîáìåíÞ (pool) áðü ðáéäéÜ ôïõ (httpd
  children) ãéá íá åîõðçñåôïýí ôéò áéôÞóåéò ôùí clients.

  ×ñçóéìïðïéþíôáò ôï module ôïõ Apache mod_perl ôïõ Doug MacEachern, ï
  ìåôáöñáóôÞò ôçò perl (perl interpreter) åíóùìáôþíåôáé óôá ðáéäéÜ ôïõ
  httpd.  Ôá CGI, DBI, êáé ôá õðüëïéðá áãáðçìÝíá óáò modules ìðïñïýí íá
  öïñôùèïýí êáôÜ ôçí åêêßíçóç êÜèå ðáéäéïý (child). ÁõôÜ ôá modules äå
  èá îáíáöïñôùèïýí åÜí äåí áëëÜîïõí óôï äßóêï.

  Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò ó÷åôéêÜ ìå ôïí Apache, äåßôå ôï Apache
  Project's WWW site:

  ·  Apache Project WWW site  <http://www.apache.org>

  ·  Mod_perl module  <http://www.perl.com/cgi-
     bin/cpan_mod?module=mod_perl>


  11.2.12.  Ðþò åðéôõã÷Üíù ìüíéìåò (persistent) óõíäÝóåéò ìåôáîý DBI êáé
  CGI

  ×ñçóéìïðïéþíôáò ôï module Apache::DBI module ôïõ Edmund Mergl, ôá
  logins óôç âÜóç äåäïìÝíùí áðïèçêåýïíôáé êáé áíôéóôïé÷ßæïíôáé óå Ýíá
  httpd child.  Áí ç åöáñìïãÞ óáò âáóßæåôáé óå Ýíáí ìüíï ÷ñÞóôç ôçò
  âÜóçò äåäïìÝíùí, ç óýíäåóç ìðïñåß íá ãßíåôáé ìå êÜèå child. ÌÝ÷ñé
  óÞìåñá, ïé óõíäÝóåéò óôéò âÜóåéò äåäïìÝíùí äåí ìðïñïýí íá ìïéñÜæïíôáé
  ìåôáîý äéáöïñåôéêþí ðáéäéþí ôïõ httpd.

  Ìðïñåßôå íá êáôåâÜóåôå ôï Apache::DBI áðü ôç CPAN ìÝóù:

  ·  <http://www.perl.com/cgi-bin/cpan_mod?module=Apache::DBI>

  11.2.13.  ôï ôñÝ÷ù áðü ôïí httpd, áðïôõã÷Üíåé!'' Ãéáôß; ``¼ôáí ôñÝ÷ù
  Ýíá perl script áðü ôçí ãñáììÞ åíôïëÞò, äïõëåýåé, áëëÜ üôáí


  ÂáóéêÜ, Ýíáò ëüãïò ãéá ôïí ïðïßï ìðïñåß íá óõìâáßíåé áõôü åßíáé üôé ï
  ÷ñÞóôçò áðü ôïí ïðïßï ôñÝîáôå ôï script óôç ãñáììÞ åíôïëþí Ý÷åé óùóôÜ
  ñõèìéóìÝíá  ôéò ìåôáâëçôÝò ôïõ ðåñéâÜëëïíôïò, óôçí ðåñßðôùóç ôïõ
  DBD::Oracle, ìåôáâëçôÝò üðùò $ORACLE_HOME, $ORACLE_SID Þ TWO_TASK.

  Ç äéåñãáóßá httpd ôñÝ÷åé óõíÞèùò êÜôù áðü ôï ÷ñÞóôç nobody, ðñÜãìá ðïõ
  óçìáßíåé üôé äåí Ý÷åé ñõèìéóìÝíï ôï ðåñéâÜëëïí ôïõ. ÏðïéïäÞðïôå script
  åðé÷åéñÞóåé íá ôñÝîåé êÜôù áðü áõôÞí ôçí êáôÜóôáóç èá áðïôý÷åé
  óßãïõñá.

  Ãéá íá ëýóåôå áõôü ôï ðñüâëçìá, èÝóôå ôï ðåñéâÜëëïí ãéá ôç âÜóç óáò óå
  Ýíá ìðëïê BEGIN ( ) óôçí áñ÷Þ ôïõ script óáò. ¸ôóé èá äéïñèùèåß ôï
  ðñüâëçìá.

  Ðáñüìïéá, èá ðñÝðåé íá åëÝãîåôå ôï logfile ìå ôá httpd ëÜèç ãéá ôõ÷üí
  åíäåßîåéò, üðùò êáé ôá ``Idiot's Guide To Solving Perl / CGI
  Problems'' êáé ``Perl CGI Programming FAQ'' ãéá ðåñéóóüôåñåò
  ðëçñïöïñßåò. Åßíáé áðßèáíï ôï ðñüâëçìá íá Ý÷åé ó÷Ýóç ìå ôï DBI.
  ÄéáâÜóôå êáé ôá äýï áõôÜ êåßìåíá ðñïóåêôéêÜ!


  ·  Ôï ``Idiot's Guide To Solving Perl / CGI Problems'' èá ôï âñåßôå
     óôï: <http://www.perl.com/perl/faq/index.html>



  11.2.14.  Ìðïñþ íá êÜíù multi-threading ìå ôï DBI;

  ÌÝ÷ñé ôçí çìåñïìçíßá áõôïý ôïõ FAQ, ü÷é.  Ç perl äåí õðïóôçñßæåé
  multi-threading. ÐáñüëáõôÜ, ôï multi-threading áíáìÝíåôáé íá ãßíåé
  ìÝñïò ôïõ ðõñÞíá ôçò äéáíïìÞò ôçò perl óôçí Ýêäïóç 5.005, ðïõ óçìáßíåé
  üôé ôï DBI èá ìðïñåß íá õðïóôçñßæåé multi-threading áñêåôÜ óýíôïìá
  ìåôÜ áð' áõôü.

  Ãéá íá äåßôå ðáñáäåßãìáôá êþäéêá OCI ãéá ôçí Oracle ðïõ Ý÷åé multi-
  threaded åíôïëÝò SELECT, ðçãáßíåôå óôï:

  ·  <http://www.hermetica.com/technologia/oracle/oci/orathreads.tar.gz>

  11.2.15.  Ðþò ìðïñþ íá êáëÝóù stored procedures ìå ôï DBI;

  Áí õðïèÝóïõìå üôé Ý÷åôå äçìéïõñãÞóåé ìéá stored procedure ìÝóá óå
  êÜðïéá âÜóç, ð÷, óôçí Oracle, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôï $dbh->do
  ãéá íá åêôåëÝóåôå Üìåóá ôç äéáäéêáóßá (procedure). Ãéá ðáñÜäåéãìá,

  $dbh->do( "BEGIN someProcedure END" );

  11.2.16.  Ðþò ìðïñþ íá ðÜñù ôéò ôéìÝò ðïõ åðéóôñÝöïíôáé áðü ôéò stored
  procedures ìå ôï DBI;

  Èõìçèåßôå, üìùò, íá êÜíåôå Ýëåã÷ï ãéá ëÜèç!


           $sth = $dbh->prepare( "BEGIN foo(:1, :2, :3); END;" );
           $sth->bind_param(1, $a);
           $sth->bind_param_inout(2, \$path, 2000);
           $sth->bind_param_inout(3, \$success, 2000);
           $sth->execute;




  11.2.17.  Ðþò ìðïñþ íá äçìéïõñãÞóù Þ íá êáôáóôñÝøù ìéá âÜóç äåäïìÝíùí
  ìå ôï DBI;


  Ç äçìéïõñãßá êáé äéáãñáöÞ ìéáò âÜóçò åßíáé Ýííïéåò ðïëý áöçñçìÝíåò ãéá
  íá õðïóôçñßæïíôáé éêáíïðïéçôéêÜ áðü ôï DBI. Ãéá ðáñÜäåéãìá, ç Oracle
  äåí õðïóôçñßæåé êáí ôçí Ýííïéá ôçò äéáãñáöÞò ôçò âÜóçò! Óôçí Oracle
  åðßóçò, ï äéáêïìéóôÞò ôçò âÜóçò äåäïìÝíùí (database server) åßíáé
  ïõóéáóôéêÜ ç âÜóç, åíþ óôçí mSQL, ç äéåñãáóßá ôïõ äéáêïìéóôÞ (server
  process) ôñÝ÷åé ìéá ÷áñÜ ÷ùñßò íá Ý÷åé äçìéïõñãçèåß êáìßá âÜóç óå
  áõôüí. Ôï ðñüâëçìá åßíáé ôüóï áíüìïéï ãéá íá ôï èßîïõìå.

  Ãé' áõôü ôï ëüãï, ìåñéêïß ïäçãïß õðïóôçñßæïõí äçìéïõñãßá êáé äéáãñáöÞ
  âÜóåùí ìÝóù ôùí private func methods. Äåßôå ôçí ôåêìçñßùóç ôùí ïäçãþí
  ðïõ ÷ñçóéìïðïéåßôå ãéá íá äåßôå áí õðïóôçñßæïõí áõôü ôï ìç÷áíéóìü.

  11.2.18.  Ðþò äéá÷åéñßæåôáé ôï DBI ôéò ôéìÝò NULL ;

  Ïé ôéìÝò NULL óôï DBI áíôéìåôùðßæïíôáé üðùò ç ôéìÞ undef. Ïé ôéìÝò
  NULL ìðïñïýí êáôá÷ùñçèïýí óôéò âÜóåéò ùò NULL, ãéá ðáñÜäåéãìá:


           $rv =
               $dbh->do( "INSERT INTO table VALUES( NULL )" );




  áëëÜ üôáí åñùôçèïýí, ïé ôéìÝò NULL èá ðñÝðåé íá óõãêñéèïýí ìå ôçí
  undef. Áõôü åßíáé óôÜíôáñ ãéá üëïõò ôïõò ïäçãïýò.
  11.2.19.  Ôé åßíáé áõôÝò ïé ìÝèïäïé func (func methods);

  Ç ìÝèïäïò func ïñßæåôáé óôï DBI óáí ôï óçìåßï åéóüäïõ ãéá
  ëåéôïõñãéêüôçôá åîáñôþìåíç áðü ôç âÜóç, ð÷, ç éêáíüôçôá íá
  äçìéïõñãÞóåôå Þ íá äéáãñÜøåôå âÜóåéò. Ôï íá êáëÝóåôå áõôÝò ôéò
  ìåèüäïõò ðïõ åîáñôþíôáé áðü ôïõò ïäçãïýò åßíáé áðëü, ãéá ðáñÜäåéãìá,
  ãéá íá êáëÝóåôå ôç ìÝèïäï createDatabase ðïõ ðáßñíåé ìéá ðáñÜìåôñï, èá
  ãñÜöáìå:


           $rv =
               $dbh->func( 'argument', 'createDatabase' );




  ¼óïé áíáðôýóóïõí ëïãéóìéêü èá ðñÝðåé óçìåéþóïõí üôé ïé ìÝèïäïé func
  äåí åßíáé ìåôáöÝñóéìåò ìåôáîý äéáöïñåôéêþí âÜóåùí.

  11.2.20.  ÅìðïñéêÞ ÕðïóôÞñéîç êáé Åêðáßäåõóç

  Ôï Interface ôçò Perl5 ãéá âÜóåéò åßíáé Ýíá ÄÙÑÅÁÍ ëïãéóìéêü. ÅÑ×ÅÔÁÉ
  ×ÙÑÉÓ ÊÁÌÉÁ ÅÃÃÕÇÓÇ ÏÐÏÉÏÕÄÇÐÏÔÅ ÅÉÄÏÕÓ.

  ÐáñüëáõôÜ, ìåñéêïß ïñãáíéóìïß ðáñÝ÷ïõí åßôå ôå÷íéêÞ õðïóôÞñéîç åßôå
  ðñïãñÜììáôá åêìÜèçóçò ôïõ DBI.

   Perl Clinic : Ç Perl Clinic ìðïñåß íá êëåßóåé óõìâüëáéá ãéá åìðïñéêÞ
  õðïóôÞñéîç óå Perl, DBI, DBD::Oracle êáé Oraperl. ÕðïóôÞñéîç ðáñÝ÷åôáé
  áðü ôçí åôáéñåßá óôçí ïðïßá äïõëåýåé ï Tim Bunce, ï óõããñáöÝáò ôïõ
  DBI. Ãéá ðåñéóóüôåñåò õðçñåóßåò ó÷åôéêÜ ìå ôéò õðçñåóßåò ôïõò, äåßôå
  ôï :

  ·  <http://www.perl.co.uk/tpc>


  12.  Åñãáëåßá Äéá÷åßñéóçò ôçò PostgreSQL


  12.1.  PGACCESS - ¸íá ãñáöéêü åñãáëåßï ãéá ôç äéá÷åßñéóç ôçò Post-
  greSQL

  Ôï PgAccess åßíáé Ýíá Tcl/Tk interface ãéá ôçí PostgreSQL.
  ÓõìðåñéëáìâÜíåôáé Þäç óôç äéáíïìÞ ôçò PostgreSQL.  Ñßîôå ìéá ìáôéÜ óå
  áõôü ôï web site ãéá íåüôåñç Ýêäïóç

  ·  <http://www.flex.ro/pgaccess>

  ·  Áí Ý÷åôå ïðïéïäÞðïôå ó÷üëéï, ðñüôáóç ãéá âåëôßùóç, ìç äéóôÜóåôå íá
     óôåßëåôå e-mail óôï : teo@flex.ro

  ×áñáêôçñéóôéêÜ ôïõ PgAccess

  ÐáñÜèõñá ôïõ PgAccess : Êåíôñéêü ðáñÜèõñï , äçìéïõñãßá ðéíÜêùí (table
  builder) , ÅìöÜíéóç ðéíÜêùí (åñùôÞóåùí) (table(query) view),
  äçìéïõñãßá åñùôÞóåùí ïðôéêÜ (visual query builder).

  Ðßíáêåò


  ·  - åìöÜíéóç ðéíÜêùí, ìÝãéóôï 200 åããñáöÝò (áëëÜæåé áðü ôï ìåíïý
     preferences)

  ·  - áëëáãÞ ìåãÝèïõò óôÞëçò, óÝñíïíôáò ôçí êÜèåôç ãñáììÞ (êáëýôåñá óôï
     ÷þñï ôïõ ðßíáêá áðü üôé óôçí åðéêåöáëßäá ôïõ ðßíáêá)

  ·  - text wrap óôá êåëéÜ - áðïèÞêåõóç ôçò åìöÜíéóçò êÜèå ðßíáêá

  ·  - import/export óå åîùôåñéêÜ áñ÷åßá (SDF,CSV)

  ·  - äõíáôüôçôåò öéëôñáñßóìáôïò (äþóôå Ýíá ößëôñï óáí price>3.14)

  ·  - äõíáôüôçôåò ôáîéíüìçóçò (äþóôå ÷åéñïêßíçôá ôï(ôá) ðåäßá ðñïò
     ôáîéíüìçóç)

  ·  - editing in place

  ·  - âåëôéùìÝíï âïÞèçìá ãéá ðáñáãùãÞ ðéíÜêùí (table generator
     assistant)

  ·  - âåëôéùìÝíåò äõíáôüôçôåò äéüñèùóçò ðåäßùí

     ÅñùôÞóåéò (Queries)

  ·  - äçìéïõñãåß, äéïñèþíåé êáé áðïèçêåýåé "åñùôÞóåéò ðïõ êáèïñßæåé ï
     ÷ñÞóôçò"

  ·  - áðïèçêåýåé åñùôÞóåéò óáí views

  ·  - åêôåëåß åñùôÞóåéò

  ·  - åìöÜíéóç áðïôåëåóìÜôùí åñùôÞóåùí ôýðïõ select

  ·  - äéáãñáöÞ êáé áëëáãÞ ïíüìáôïò åñþôçóçò

  ·  - Ãñáöéêü ÷ôßóéìï åñþôçóçò ìå äõíáôüôçôåò drag & drop. Ãéá üóïõò
     áðü åóÜò åß÷áôå óôÞóåé ôï Tcl/Tk plugin ãéá ôï Netscape Navigator,
     ìðïñåßôå íá ôï äåßôå íá äïõëåýåé ðáôþíôáò åäþ

     Sequences

  ·  - äçìéïõñãßá sequences, äéáãñáöÞ êáé Ýëåã÷üò ôïõò ÓõíáñôÞóåéò

  ·  - äçìéïõñãßá, Ýëåã÷ïò êáé äéáãñáöÞ óõíáñôÞóåùí óå ãëþóóá SQL

  ÌåëëïíôéêÝò õëïðïéÞóåéò

  ·  - ó÷åäéáóìüò ðéíÜêùí (ðñïóèÞêç íÝùí ðåäßùí, áëëáãÞ ïíüìáôïò, êëð.)

  ·  - êáèïñéóìüò óõíÜñôçóçò

  ·  - äçìéïõñãßá report

  ·  - âáóéêü scripting

  Áí Ý÷åôå ïðïéïäÞðïôå ó÷üëéï, ðñüôáóç ãéá âåëôßùóç, ìç äéóôÜóåôå íá
  óôåßëåôå e-mail óôï :


  ·  teo@flex.ro

  Ðåñéóóüôåñåò ðëçñïöïñßåò ãéá ôç âéâëéïèÞêç libgtcl

  Èá ÷ñåéáóôåßôå åðßóçò íá äçëþóåôå ðñïò ÷ñÞóç ôç âéâëéïèÞêç äéáóýíäåóçò
  PostgreSQL óå Tcl óáí Ýíá Tcl/Tk 'load'-able module. ÏíïìÜæåôáé
  libpgtcl êáé ï ðçãáßïò êþäéêÜò ôçò âñßóêåôáé óôïí êáôÜëïãï ôçò
  PostgreSQL /src/interfaces/libpgtcl. Èá ÷ñåéáóôåßôå éäéáßôåñá, ìéá
  âéâëéïèÞêç libpgtcl ðïõ íá ìðïñåß íá öïñôùèåß áðü  Tcl/Tk. Áõôü åßíáé
  äéáöïñåôéêü ôå÷íéêÜ áðü Ýíá ôõðéêü PostgreSQL loadable object áñ÷åßï,
  åðåéäÞ ç libpgtcl åßíáé ìéá óõëëïãÞ áðü object áñ÷åßá. ÊÜôù áðü Linux,
  ïíïìÜæåôáé libpgtcl.so.  Ìðïñåßôå íá êáôåâÜóåôå áðü åäþ ìéá Ýêäïóç Þäç
  ìåôáãëùôôéóìÝíç ãéá óõóôÞìáôá Linux i386. ÁðëÜ áíôéãñÜøôå ôï
  libpgtcl.so óôïí êáôÜëïãï âéâëéïèçêþí ôïõ óõóôÞìáôïò (/usr/lib)êáé
  îåêéíÞóôå. Ìßá ëýóç åßíáé íá áöáéñÝóåôå áðü ôïí ðçãáßï êþäéêá ôç
  ãñáììÞ ðïõ ðåñéÝ÷åé ôï öüñôùìá ôçò libpgtcl.so êáé íá öïñôþóåôå ôç
  pgaccess.tcl ü÷é ìå wish, áëëÜ ìå pgwish (Þ wishpg) áõôü ôï wish ìå ôï
  ïðïßï åß÷å ãßíåé link ìå ôç âéâëéïèÞêç libpgtcl.


  12.2.  Windows Interactive Query Tool ãéá PostgreSQL (WISQL Þ MPSQL)

  Ç MPSQL ðáñÝ÷åé óôïõò ÷ñÞóôåò Ýíá ãñáöéêü SQL interface ãéá ôçí
  PostgresSQL.  Ç MPSQL åßíáé ðáñüìïéá ìå ôï SQL Worksheet ôçò Oracle
  êáé ôï åñãáëåßï åñùôÞóåùí ôïõ Microsoft SQL Server WISQL.  ¸÷åé ùñáßï
  ãñáöéêü interface êáé éóôïñéêü åíôïëþí. Åðßóçò ìðïñåßôå íá êÜíåôå cut
  êáé paste êáé Ý÷åé êáé Üëëá ùñáßá ÷áñáêôçñéóôéêÜ ðïõ âåëôéþíïõí ôçí
  ðáñáãùãéêüôçôá.

  ·  <http://www.troubador.com/~keidav/index.html>

  ·  Email: keidav@whidbey.com

  ·  <http://www.ucolick.org/~de/> óôï áñ÷åßï tcl_syb/wisql.html

  ·  <http://www.troubador.com/~keidav/index.html>

  ·  Email: de@ucolick.org

  12.3.  Interactive Query Tool(ISQL) ãéá ôçí PostgreSQL - ÏíïìÜæåôáé
  PSQL

  Ôï ISQL åßíáé ãéá ôåñìáôéêÜ ìå Character command line.  ÐåñéëáìâÜíåôáé
  óôç äéáíïìÞ, êáé ëÝãåôáé PSQL. ÌïéÜæåé ðïëý ìå ôï ISQL ôçò Sybase, êáé
  ôï SQLplus ôçò Oracle. Óôï unix prompt äþóôå ôçí åíôïëÞ 'psql' ç ïðïßá
  èá óáò âãÜëåé óå psql> prompt.


       ÐáôÞóôå \h ãéá íá äåßôå ôç âïÞèåéá ôùí åíôïëþí.




  Ðïëý öéëéêü óôï ÷ñÞóôç êáé åýêïëï óôç ÷ñÞóç.  Ìðïñåßôå íá Ý÷åôå
  ðñüóâáóç óå áõôü êáé áðü scripts ôïõ êÝëõöïõò.

  12.4.  MPMGR - Åñãáëåßï Äéá÷åßñéóçò ÂÜóåùí ãéá PostgresSQL

  Ôï MPMGR ðáñÝ÷åé Ýíá ãñáöéêü interface äéá÷åßñéóçò ôçò PostgresSQL. Èá
  ôï âñåßôå óôï

  ·  <www.mutinybaysoftware.com/>

  ·  Email: keidav@mutinybaysoftware.com

  ·  <http://www.troubador.com/~keidav/index.html>

  ·  Email: keidav@whidbey.com

  ·  <http://www.ucolick.org/~de> in file tcl_syb/wisql.html

  ·  WISQL ãéá ôçí PostgreSQL  <http://www.ucolick.org/~de/Tcl/pictures>

  ·  Email: de@ucolick.org

  13.  Ñõèìßæïíôáò ðïëëáðëÜ êïõôéÜ PostgreSQL óå ìéá ïèüíç

  Ìðïñåßôå íá óôïéâÜîåôå ôá êïõôéÜ-cpu êáé íá óõíäåèåßôå óå ìéá ïèüíç
  êáé íá ÷ñçóéìïðïéÞóåôå ôï äéáêüðôç ãéá íá äéáëÝîåôå ôï host.  Áõôü
  åîïéêïíïìåß ÷þñï êáé äå ÷ñåéÜæåóôå ðïëëÝò ïèüíåò, ðëçêôñïëüãéá êáé
  ðïíôßêéá (åîïéêïíïìåßôå ðåñßðïõ 100 ìå 500 US äïëÜñéá áíÜ óåô) êáé
  ãëéôþíåôå åðßóçò áðü ôçí áêáôáóôáóßá.

  ×ñçóéìïðïéþíôáò áõôÞ ôçí ôå÷íéêÞ, ìðïñåßôå íá  óôïéâÜîåôå ðïëëïýò
  PostgreSQL servers (ãéá áíÜðôõîç, Ýëåã÷ï, ðáñáãùãÞ), Web servers, ftp
  servers, Intranet servers, Mail servers, News servers óå Ýíá ðïëý øçëü
  ñÜöé. Ï äéáêüðôçò ìðïñåß íá ÷ñçóéìïðïéçèåß åðßóçò ãéá êïõôéÜ ìå
  Windows 95/NT Þ OS/2.

  Ñßîôå ìéá ìáôéÜ óôá ðáñáêÜôù sites:

  ·  ÔçëåöùíéêÝò ðáñáããåëßåò áðü ôçí  DataComm Warehouse Inc, óå 24ùñç
     âÜóç, üëç ôçí åâäïìÜäá, óôï 1-800-328-2261. ÐáñÝ÷ïõí êÜèå ôýðï
     õëéêïý Ç/Õ  <http://www.warehouse.com>. Ôï  4-èõñï KVM switch
     (PS/2) êïóôßæåé ãýñù óôá $89.99. Part No. DDS1354

  ·  Network Technologies Inc
     <http://www.networktechinc.com/servswt.html> (120 äïëÜñéá/PC 8
     ports) ôï ïðïßï Ý÷åé ëßóôåò ãéá 'Server Switches' êáé 'switches
     ìüíï ãéá Video '

  ·  Scene Double Inc, Áããëßá
     <http://www.scene.demon.co.uk/qswitch.htm>

  ·  Cybex corporation  <http://www.cybex.com>

  ·  Raritan Inc  <http://www.raritan.com>

  ·  RealStar Solutions Inc  <http://www.real-star.com/kvm.htm>

  ·  Belkin Inc  <http://www.belkin.com>

  ·  Better Box Communications Ltd.
     <http://www.betterbox.com/info.html>

  ·  Ðçãáßíåôå óôï ðëçóéÝóôåñï ìáãáæß hardware êáé æçôÞóôå ôï "Server
     Switch" ãíùóôü êáé óáí "KVM Auto Switches".

  ØÜîôå óôç ìç÷áíÞ áíáæÞôçóçò yahoo ãéá íá âñåßôå ðåñéóóüôåñåò åôáéñåßåò
  ìå "Server Switches" Þ "KVM Switches".

  Óõíßóôáôáé éäéáßôåñá íá Ý÷åôå Ýíá unix box åéäéêÜ áöéåñùìÝíï ãéá êÜèå
  PostgreSQL data-server ãéá êáëýôåñç áðüäïóç. Êáìßá Üëëç
  åöáñìïãÞ/äéåñãáóßá äåí ðñÝðåé íá ôñÝ÷åé óå áõôü ôï ìç÷Üíçìá. Äåßôå ôï
  ôìÞìá "ÅðáããåëìáôéêÜ" óôéò ôïðéêÝò åöçìåñßäåò ãéá ôïðéêïýò ðùëçôÝò ðïõ
  ðùëïýí ìüíï êïõôéÜ intel, 13" ìïíü÷ñùìåò ïèüíåò (ïèüíç ðïëý ÷áìçëïý
  êüóôïõò). Ïé ôïðéêïß ðùëçôÝò ðùëïýí ìüíï ôï hardware ÷ùñßò Microsoft
  Windows/DOS (Ýôóé åîïéêïíïìåßôå $ 150).  Äå ÷ñåéÜæåóôå Ýã÷ñùìç ïèüíç
  ãéá ôï äéáêïìéóôÞ ôçò âÜóçò äåäïìÝíùí, êáèþò ìðïñåßôå íá êÜíåôå
  áðïìáêñõóìÝíç äéá÷åßñéóç (remote administration) áðü Ýã÷ñùìï óôáèìü
  åñãáóßáò.  ÐÜñôå ôï RedHat (Þ êÜðïéá Üëëç äéáíïìÞ) Linux cdrom áðü ôï
  -

  ·  Linux System Labs Web site:   <http://www.lsl.com/>  7 (U.S.
     äïëÜñéá)

  ·  Cheap Bytes Inc Web site:   <http://www.cheapbytes.com/> 7 (U.S.
     äïëÜñéá)

     Óéãïõñåõôåßôå üôé ôï õëéêü ðïõ áãïñÜóáôå õðïóôçñßæåôáé áðü ôï
     Redhat Linux. Äåßôå ôï ftp site çò Redhat ðñéí áãïñÜóåôå õëéêü, ãéá
     ðñïôåéíüìåíïõò SCSI adapters, êÜñôåò âßíôåï êëð.  Ìå $ 600 ìüíï
     ìðïñåßôå íá ðÜñåôå Ýíá éó÷õñü êïõôß intel ìå Redhat Linux ðïõ
     ôñÝ÷åé PostgreSQL.  ×ñçóéìïðïéÞóôå odbc/jdbc/perl/tcl ãéá íá
     óõíäåèåßôå ìå ôçí PostgreSQL áðü Windows95, OS/2, Unix Motif Þ
     êÜðïéï web browser (ð.÷. Redbaron, Opera, Netscape, 20 Üëëïé).  (ïé
     Web browsers Ý÷ïõí ãßíåé ðéá standard client).

  Ìå áõôÞ ôçí éäÝá ìðïñåßôå íá åëÝã÷åôå ðïëëÜ êïõôéÜ cpu ìå ìéá ïèüíç
  êáé Ýíá ðëçêôñïëüãéï!

  ÐáñáêÜôù èá âñåßôå Ýíá áðüóðáóìá áðü ôçí networktechnic Inc ãéá
  "Server Switches"

  Ðáñáããåßëåôå ôþñá óôï 800-742-8324 (÷ùñßò äáóìïýò ãéá ÁìåñéêÞ)

  Ãéá íá ëÜâåôå ôïí êáôÜëïãü ìáò ðáñáêáëþ óôåßëôå Email óôç äéåýèõíóç:
  sales@networktechinc.com

  ×ÅÉÑÉÓÔÅÉÔÅ ÐÅÑÉÓÓÏÔÅÑÁ ÁÐÏ ÅÍÁ PC ìå Ýíá ðëçêôñïëüãéï, ïèüíç êáé
  ðïíôßêé Ïé çëåêôñïíéêïß äéáêüðôåò åðéôñÝðïõí ìå Ýíá ðëçêôñïëüãéï,
  ïèüíç êáé ðïíôßêé íá ÷åéñéóèåßôå 64 PC. ÅíóùìáôùìÝíïé ìéêñïûðïëïãéóôÝò
  ðñïóïìïéþíïõí ôçí ðáñïõóßá ðëçêôñïëïãßïõ, ïèüíçò êáé ðïíôéêéïý ìå üëá
  ôá ðñïóáñôçìÝíá PC 100% ôïõ ÷ñüíïõ.

  ×áñáêôçñéóôéêÜ êáé ÅöáñìïãÝò


  ·  Ðëçêôñïëüãéï, ÷åéñéóôÞñéï ðÜíù óôç óõóêåõÞ Þ ôçëå÷åéñéóôÞñéï

  ·  9 pin D Serial Þ 6 pin miniDIN õðïóôÞñéîç ãéá ðïíôßêé

  ·  5 pin DIN Þ 6 pin miniDIN õðïóôÞñéîç ðëçêôñïëïãßïõ

  ·  1600x1200 áíÜëõóç ïèüíçò

  ·  ×ñçóéìïðïéåß êïéíÜ êáëþäéá

  ·  Óå Desktop êüøéìï Þ êáé ãéá rack

  ÐñïäéáãñáöÝò - Ðëçêôñïëüãéï


  ·  ¼ëá ôá âýóìáôá åßíáé èçëõêÜ

  ·  5 pin DIN Þ 6 pin miniDIN

  ·  Ìðïñåß íá åêêéíåß ïðïéáäÞðïôå óôéãìÞ ïðïéïíäÞðïôå Ç/Õ

  ×åéñéóôÞñéï - ÌðñïóôéíÜ ÊïõìðéÜ


  ·  Óõíäåèåßôå óå Ýíáí Ç/Õ ìå ôï ðÜôçìá åíüò êïõìðéïý

  ·  ÊñáôÞóôå ðáôçìÝíï ïðïéïäÞðïôå êïõìðß ãéá ðåñéóóüôåñï áðü ìéóü
     äåõôåñüëåðôï êáé ìðåßôå óå ôñüðï ëåéôïõñãßáò SCAN, BROADCAST Þ
     COMMAND

  ·  Ôá LEDs õðïäåéêíýïõí ôïí ôñüðï ëåéôïõñãßáò ôïõ ðëçêôñïëïãßïõ

  ·  ÐáôÞóôå CTRL+* êáé ìðåßôå óå ôñüðï ëåéôïõñãßáò COMMAND

  ·  Åßíáé äéáèÝóéìïé ïé SCAN, BROADCAST êáé COMMAND ôñüðïé ëåéôïõñãßáò

  Ðïíôßêé

  * 9 pin D serial

  ·  o äéáêüðôçò NTI ðïõ ðñïóïìïéþíåé ôï óåéñéáêü ðïíôßêé ôçò Microsoft


  ·  o 9 pin D áñóåíéêü ãéá ðïíôßêé

  ·  o 9 pin D èçëõêü ãéá ôïõò Ç/Õ

  * 6 pin miniDIN

  ·  o äéáêüðôçò NTI ðïõ ðñïóïìïéþíåé ôï ðïíôßêé IBM PS/2

  ·  o ¼ëá ôá âýóìáôá åßíáé èçëõêÜ

  Êáëùäéáêü ÷åéñéóôÞñéï/ôçëåêïíôñüë


  ·  Ðñïáéñåôéêü --èá ðñÝðåé íá áãïñáóôåß îå÷ùñéóôÜ

  ·  ÊÜíåé ôéò äïõëåßåò ôïõ "×åéñéóôçñßïõ - Ìðñïóôéíþí Êïõìðéþí"

  Ïèüíç-VGA


  ·  Åýñïò 150 MHz

  ·  1600X1200 áíÜëõóç ÷ùñßò ðáñáìüñöùóç

  ·  1/4ëá ôá âýóìáôá åßíáé èçëõêÜ


  14.  ÅöáñìïãÝò êáé Åñãáëåßá ãéá ôçí PostgreSQL

  14.1.  Ãëþóóá 4çò ãåíéÜò (4GL) PostgreSQL ãéá åöáñìïãÝò ìå web êáé
  âÜóç äåäïìÝíùí - Ðëáôöüñìá áíÜðôõîçò AppGEN

  Ôï AppGEN ìðïñåßôå íá ôï êáôåâÜóåôå áðü ôï

  ·  <http://www.man.ac.uk/~whaley/ag/appgen.html>

  ·  <ftp://ftp.mcc.ac.uk/pub/linux/ALPHA/AppGEN>.

  Ôï AppGEN åßíáé ìéá õøçëïý åðéðÝäïõ, ôÝôáñôçò ãåíéÜò ãëþóóá êáé
  ðëáôöüñìá áíÜðôõîçò åöáñìïãþí ãéá ôçí ðáñáãùãÞ åöáñìïãþí âáóéóìÝíùí
  óôï World Wide Web (WWW). ÁõôÝò ïé åöáñìïãÝò ôõðéêÜ ÷ñçóéìïðïéïýíôáé
  óôï internet Þ óôï intranet åíüò ïñãáíéóìïý. Ïé åöáñìïãÝò ôïõ AppGEN
  õëïðïéïýíôáé ùò C scripts ðïõ áêïëïõèïýí ôá ðñüôõðá ôïõ Common Gateway
  Interface (CGI), ôá ïðïßá õðïóôçñßæïíôáé áðü ôïõò ðåñéóóüôåñïõò Web
  Servers.

  Ãéá íá ÷ñçóéìïðïéÞóåôå ôï AppGEN èá ÷ñåéáóôåßôå ôá áêüëïõèá :-

  Ôçí PostgresSQL, óýóôçìá äéá÷åßñéóçò ó÷åóéáêþí âÜóåùí äåäïìÝíùí

  ¸íáí web server ðïõ íá õðïóôçñßæåé CGI üðùò ï HTTPD ôïõ NSCA

  ¸íáí ìåôáãëùôôéóôÞ ansi C üðùò ï GCC

  Ôï AppGEN áðïôåëåßôáé áðü ôá áêüëïõèá åêôåëÝóéìá ãéá Unix (Linux) :-


  ·  defgen, ôï ïðïßï ðáñÜãåé ìéá âáóéêÞ ðñüôõðç åöáñìïãÞ (template
     application) áðü êÜðïéåò ëïãéêÝò äïìÝò äåäïìÝíùí. Ïé åöáñìïãÝò
     ìðïñïýí íá åéóÜãïõí, åíçìåñþíïõí, äéáãñÜöïõí êáé øÜ÷íïõí åããñáöÝò
     óôçí âÜóç äåäïìÝíùí åíþ ðáñÜëëçëá äéáôçñïýí áõôüìáôá êáé ôçí
     áêåñáéüôçôá ôùí äåäïìÝíùí (referential integrity).


  ·  appgen, ï ìåôáãëùôôéóôÞò AppGEN ðïõ ìåôáãëùôôßæåé êþäéêá appgen óå
     åêôåëÝóéìï CGI C êþäéêá êáé êåßìåíá HTML Ýôïéìá ãéá ÷ñÞóç óå Ýíáí
     web server.


  ·  dbf2sql, ìéá åöáñìïãÞ ãéá ìåôáôñïðÞ áñ÷åßùí óõìâáôþí ìå dBase III
     .dbf óå åêôåëÝóéìá SQL scripts. Áõôü åðéôñÝðåé óå äåäïìÝíá ðïõ
     öõëÜóóïíôáé óôá ðåñéóóüôåñá ðáêÝôá âÜóåùí äåäïìÝíùí ãéá DOS/Windows
     íá ìåôáöåñèïýí óå Ýíáí SQL server üðùò ç PostgresSQL.

  ·  ÅðéðëÝïí, ôï AppGEN ðáñÝ÷åé ìéá óõëëïãÞ áðü êåßìåíá HTML , áñ÷åßá
     GIF êáé Java applets ðïõ ÷ñçóéìïðïéïýíôáé áðü ôï óýóôçìá, êáé
     öõóéêÜ, üðùò êÜèå êáëü ëïãéóìéêü, óõìðåñéëáìâÜíåé êáé ôïí ðëÞñç
     ðçãáßï êþäéêá.

  Ìðïñåßôå íá åðéêïéíùíÞóåôå ìå ôïí óõããñáöÝá, Andrew Whaley, óôï

  ·  andrew@arthur.smuht.nwest.nhs.uk


  14.2.  WWW Web interface ãéá PostgresSQL - DBENGINE

  Ôï dbengine åßíáé Ýíá plug 'n play Web interface ãéá ôçí PostgreSQL
  ðïõ äçìéïõñãÞèçêå áðü ôïí Ingo Ciechowski.  Âñßóêåôáé óôï :

  ·  <http://www.cis-computer.com/dbengine/ >

  Ó÷åôéêÜ ìå ôï DBENGINE : Ôï dbengine åßíáé Ýíá interface äéáóýíäåóçò
  WWW êáé Postgres95 ðïõ ðáñÝ÷åé áðëÞ ðñüóâáóç óå ïðïéáäÞðïôå âÜóç ìÝóá
  óå ëßãá ëåðôÜ.

  Ôï PHP 3 äßíåé ìéá ãëþóóá ðïõ ìïéÜæåé ìå ôçí Perl óôá êåßìåíÜ óáò,
  áëëÜ ü÷é ðñáãìáôéêÞ Perl åíþ ôï AppGen êáé ôï wdb-p95 áðáéôïýí íá
  äçìéïõñãÞóåôå ìåñéêÜ áñ÷åßá ñõèìßóåùí ãéá êÜèå ìßá áðü ôéò âÜóåéò óáò
  -- ìïéÜæåé óáí íá ðñÝðåé ðñþôá áð' üëá íá ìÜèåôå êÜðïéï åßäïò íÝáò
  ãëþóóáò ðñéí íá îåêéíÞóåôå.

  Áíôßèåôá ìå ôá Üëëá åñãáëåßá, äåí áðáéôåßôáé íá ìÜèåôå åéäéêü
  ðñïãñáììáôéóìü Þ êÜðïéá scripting language ãéá íá îåêéíÞóåôå íá
  äïõëåýåôå ìå ôï dbengine. Äåí õðÜñ÷åé åðßóçò êÜðïéï áñ÷åßï ñõèìßóåùí
  ãéá êÜèå âÜóç, Ýôóé äå ÷ñåéÜæåôáé íá åîïéêåéùèåßôå ìå ìéá íÝá äïìÞ.
  ÐáñüëáõôÜ - óå ðåñßðôùóç ðïõ èÝëåôå íá Ý÷åôå ðñüóâáóç óå üëá ôá
  ÷áñáêôçñéóôéêÜ ôïõ dbengine èá Þôáí êáëÞ éäÝá íá ìÜèåôå ôç ãëþóóá
  Perl.

  Ïëï ôï óýóôçìá ìðïñåß íá ñõèìéóôåß ìÝóù áðëþí ÷åéñéóìþí óå ìéá
  ðñüóèåôç âÜóç äåäïìÝíùí ðïõ ðåñéÝ÷åé ðëçñïöïñßåò ó÷åôéêÜ ìå ôï ðþò íá
  ïðôéêïðïéÞóåôå ôá äåäïìÝíá óáò.  Ìðïñåßôå åðßóçò íá ïñßóåôå virtual
  Fields ôá ïðïßá õðïëïãßæïíôáé áìÝóùò ðñéí íá åìöáíéóôïýí óôçí ïèüíç.

  ¶äåéá Ôï dbengine åßíáé äùñåÜí ëïãéóìéêü êÜôù áðü ôïõò ßäéïõò üñïõò
  üðùò êáé ç Perl.  ÄéáâÜóôå ôçí ÜäåéÜ ôçò áí äåí åßóôå óßãïõñïé ãéá ôé
  ìðïñåßôå Þ äåí ìðïñåßôå íá êÜíåôå. Óå ôåëéêÞ áíÜëõóç, áõôÞ åßíáé ìéá
  åëáóôéêüôåñç êáé ðéï Þðéá Ýêäïóç áðü ôçí GNU Üäåéá -- äåí åðçñåÜæåé ôç
  äïõëåéÜ óáò áí èÝëåôå íá "äáíåéóôåßôå" êÜôé áðü ôï dbengine Þ íá
  óõãêåíôñþóåôå êïììÜôéá áðü áõôü óáí ìÝñïò åíüò åìðïñéêïý ðñïúüíôïò!



  14.3.  Apache Webserver Module ãéá PostgreSQL - NeoSoft NeoWebScript

  Ï Apache åßíáé Ýíáò ðïëý ãíùóôüò Web Server. ¸íá module äéáóýíäåóçò
  PostgreSQL ìå ôïí Apache Webserver âñßóêåôáé óôï -

  ·  <http://www.neosoft.com/neowebscript/>

  Ôï NeoWebScript åßíáé ìéá ãëþóóá ðñïãñáììáôéóìïý ðïõ åðéôñÝðåé êáé
  áðëÜ êáé óýíèåôá ðñïãñÜììáôá íá åíóùìáôùèïýí óå áñ÷åßá HTML.
  ¼ôáí æçôåßôáé ìéá óåëßäá HTML ðïõ ðåñéÝ÷åé åíóùìáôùìÝíï êþäéêá
  NeoWebScript, ï webserver ðïõ õðïóôçñßæåé NeoWebScript åêôåëåß ôï(á)
  åíóùìáôùìÝíá script(s), êáé ðáñÜãåé ìéá web óåëßäá ìå ðåñéå÷üìåíï
  êïììÝíï êáé ñáììÝíï óôéò ðñïôéìÞóåéò ôïõ ðñïãñáììáôéóôÞ, ç ïðïßá
  äçìéïõñãÞèçêå ìå áõôü ôï ðñüãñáììá.

  Ôï NeoWebScript åßíáé Ýíáò ãñÞãïñïò, áóöáëÞò, åýêïëïò ôñüðïò ãéá íá
  ìÜèåôå éó÷õñü, server-based ðñïãñáììáôéóìü  óôïí êþäéêá HTML ôùí web
  óåëßäùí.  Ìå ôï NeoWebScript, åßíáé åýêïëï íá öôéÜîåôå ìåôñçôÝò
  (counters), öüñìåò ãéá email, ãêñÜöéôé óôéò óåëßäåò, guest books êáé
  íá êñáôÜôå óôïé÷åßá ãéá ôïõò åðéóêÝðôåò, áêüìç êáé ãéá Ýíáí áñ÷Üñéï
  ðñïãñáììáôéóôÞ.  Äåßôå ðüóï êáëÜ ôï NeoWebScript êñáôÜ ôá äéêÜ ôïõ óå
  óýãêñéóç ìå ôçí PERL êáé ôï JavaScript.

  Áí èÝëåôå íá åãêáôáóôÞóåôå ôï NeoWebScript óôïí webserver óáò, ï
  Webmaster óáò ðñÝðåé íá äéáâÜóåé ôï Sysop FAQ ãéá íá îåêéíÞóåé.  Ç
  "Èåùñßá ôùí Ëåéôïõñãéþí" (Theory of Operations) èá åîçãÞóåé ðþò
  äïõëåýåé ôï NeoWebScript, åíþ ç åãêáôÜóôáóç èá óáò êáèïäçãÞóåé óôá
  äéÜöïñá óôÜäéÜ ôçò.  Ç äéá÷åßñéóç áó÷ïëåßôáé ìå èÝìáôá ñýèìéóçò êáé
  åêôÝëåóçò ôïõ server, äéÜöïñïé Ýëåã÷ïé åðáëçèåýïõí ôç óùóôÞ ëåéôïõñãßá
  ôùí NeoWebScript óáò êáé ç áðïóöáëìÜôùóç áó÷ïëåßôáé ìå ôá ðñïâëÞìáôá
  ôïõ server.

  Äåí õðÜñ÷åé êáíÝíá êüóôïò ãéá ôç ÷ñÞóç ôïõ NeoWebScript-2.2 ãéá ôïí
  ISP óáò, ôï intranet óáò Þ ôï extranet óáò.  Èá äåßôå ôçí ðëÞñç Üäåéá
  ÷ñÞóçò, üôáí åããñáöåßôå ãéá íá ôï êáôåâÜóåôå, áëëÜ ç ïõóßá åßíáé ðùò
  èá èÝëáìå 99 óðáñôáñéóôÜ äïëÜñéá áí èÝëåôå íá ôï åíóùìáôþóåôå óôá äéêÜ
  óáò ðñïúüíôá Þ íá ôï ÷ñçóéìïðïéÞóåôå óå Ýíáí server åìðïñéêþí
  óõíäéáëëáãþí (ð.÷. SSL).


  Ôï NeoWebScript åßíáé Ýíá module ãéá ôïí Apache webserver ðïõ óáò
  åðéôñÝðåé ôçí åíóùìÜôùóç ôçò ãëþóóáò ðñïãñáììáôéóìïý Tcl/Tk  óôéò
  éóôïóåëßäåò óáò óáí Ýíá åñãáëåßï scripting. ÅðéíïÞèçêå áðü ôïí Karl
  Lehenbauer, ôïí Ôå÷íéêü ÄéåõèõíôÞ ôçò NeoSoft, êáé ôåêìçñéþèçêå,
  åìðëïõôßóôçêå êáé åðåêôÜèçêå áðü ôïõò ðñïãñáììáôéóôÝò êáé ôå÷íéêïýò
  óõããñáöåßò ôçò NeoSoft.

  Ï Apache webserver åßíáé ï ðëÝïí äçìïöéëÞò webserver óôïí êüóìï,
  ÷ñçóéìïðïéïýìåíïò óôï 68 % ôùí sites ðïõ åîåôÜóôçêáí.

  Ç Tcl/Tk åßíáé ç ðáíßó÷õñç, äùñåÜí, áíåîÜñôçôç ðëáôöüñìáò ãëþóóá
  scripting, ðïõ áíáðôý÷èçêå áðü ôïí Äñ. John Ousterhout. ÐáñáèÝôïõìå ôá
  ëüãéá ôïõ

  "Ç Tcl/Tk åðéôñÝðåé óôïõò ðñïãñáììáôéóôÝò ëïãéóìéêïý íá êÜíïõí ôçí
  äïõëåéÜ äÝêá öïñÝò ôá÷ýôåñá áðü üôé ÷ñçóéìïðïéþíôáò åñãáëåéïèÞêåò
  (toolkits) âáóéóìÝíåò óå C Þ C++. Åßíáé åðßóçò ìéá ôÝëåéá ãëþóóá
  åíóùìÜôùóçò Þäç õðáñ÷üíôùí åöáñìïãþí ðïõ ôéò êÜíåé ðéï ãñáöéêÝò êáé
  ôéò åîïðëßæåé ìå Internet-éêÝò äõíáôüôçôåò".

  Ï Karl Lehenbauer, ÉäñõôÞò êáé ÐñïúóôÜìåíïò ôïõ Ôå÷íéêïý ÔìÞìáôïò ôçò
  NeoSoft, áðïôåëåß ìÝñïò ôçò áíÜðôõîçò ôçò Tcl/Tk áðü ôá ðñþôá ôçò
  óôÜäéá.  Ìáæß ìå ôïí Mark Diehkans, äçìéïýñãçóáí ôçí Extended Tcl,
  ãíùóôÞ åðßóçò êáé ùò TclX Þ NeoSoft Tcl, Ýíá éó÷õñü óýíïëï åðåêôÜóåùí
  óôç ãëþóóá.  ÐïëëÝò áðü ôéò âáóéêÝò åíôïëÝò ôçò Tcl ðñïÝêõøáí áðü ôçí
  Extended Tcl, êáé ìåôÜ åéóÞ÷èçóáí  áðü ôïí Dr. Ousterhout óôï âáóéêü
  ðõñÞíá ôçò ãëþóóáò.

  NeoSoft Inc., 1770 St. James Place, Suite 500, Houston, TX 77056 USA


  14.4.  ãéá ôçí PostgreSQL Ïé HEITML åðåêôÜóåéò ôçò HTML óôïí server
  êáé ìéá ãëþóóá 4çò ãåíéÜò


  Ôï åñãáëåßï heitml åßíáé Ýíáò Üëëïò ôñüðïò ãéá íá åðéêïéíùíåß ç
  postgres ìå ôï world wide web.  Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò
  åðéêïéíùíÞóôå ìå ôïí


                 Helmut Emmelmann H.E.I. Informationssyteme GmbH
                 Wimpfenerstrasse 23 Ôçë. 49-621-795141
                 68259 Mannheim Germany Öáî. 49-621-795161





  ·  Óôåßëôå email óôïí Ê. Helmut Emmelmann óôï emmel@h-e-i.de

  ·  Ç êýñéá óåëßäá ôïõ Heitml  <http://www.heitml.com>

  ·  Ç äåõôåñåýïõóá óåëßäá ôïõ Heitml  <http://www.h-e-i.deom>

  Ôï heitml åßíáé åðåêôÜóåéò ôçò HTML óôçí ðëåõñÜ ôïõ server êáé
  ôáõôü÷ñïíá ãëþóóá 4çò ãåíéÜò. Ìðïñåßôå íá ãñÜøåôå åöáñìïãÝò ãéá ôï web
  óå óôõë HTML ÷ñçóéìïðïéþíôáò HTML-ïåéäÞ tags.

  Ôï heitml (ðñïöÝñåôå "×áú"-ÔéÅìÅë) åßíáé åðÝêôáóç ôïõ HTML êáé ìéá
  ðëÞñùò åîïðëéóìÝíç ãëþóóá 4çò ãåíéÜò ðïõ åðéôñÝðåé óå åöáñìïãÝò Web íá
  áëëçëåðéäñïýí ìå äåäïìÝíá ðïõ öõëÜóóïíôáé óå SQL âÜóåéò, ÷ùñßò íá
  êáôáöåýãïõí óå ðåñßðëïêá CGI scripts.

  Ôï heitml åðåêôåßíåé ôï HTML óôçí ðëåõñÜ ôïõ server, ìåôáôñÝðïíôáò
  äõíáìéêÜ áñ÷åßá ".hei" óå HTML êáé åßíáé ëïéðüí óõìâáôü ìå êÜèå web
  browser. ×ñçóéìïðïéåß ôçí ãíþñéìç, åý÷ñçóôç óýíôáîç HTML êáé ðáñÝ÷åé
  ðëïýôï ðñïêáôáóêåõáóìÝíùí Tags êáé Âéâëéïèçêþí ãéá íá ëýóïõí èÝìáôá
  ðïõ ìÝ÷ñé ôþñá ÷ñåéÜæïíôáí CGI. ¼ðùò êáé ôï XML, ôï heitml ðáñÝ÷åé
  tags ïñéóìÝíá áðü ôïí ÷ñÞóôç. Ìå ôï heitml ôá ïñéóìÝíá áðü ôïí ÷ñÞóôç
  tags ìåôáôñÝðïíôáé óå HTML êáé óôÝëíïíôáé óôïí browser.

  Ôï heitml óôï÷åýåé êáé óôïõò ó÷åäéáóôÝò HTML êáé óôïõò åðáããåëìáôßåò
  ðñïãñáììáôéóôÝò. Ïé ó÷åäéáóôÝò HTML ìðïñïýí íá ÷ñçóéìïðïéïýí heitml
  Tags ãéá íá ÷ôéóôïýí äõíáìéêÝò óåëßäåò web, íá ðñïóðåëáýíïõí SQL
  âÜóåéò, Þ íá äçìéïõñãïýí óýíèåôåò åöáñìïãÝò web. ÌåôñçôÝò, âÜóåéò ìå
  óôïé÷åßá êáôá÷þñçóçò, öüñìåò áíáæÞôçóçò, öüñìåò email , éåñáñ÷éêÜ
  ìåíïý, üëá ìðïñïýí íá êáôáóêåõáóôïýí áðëÜ ÷ñçóéìïðïéþíôáò
  ðñïêáèïñéóìÝíá HTML-ïåéäÞ Tags ðïõ âñßóêïíôáé óôéò äéÜöïñåò
  ÂéâëéïèÞêåò.

  Ãéá ôïõò ðñïãñáììáôéóôÝò, ôï heitml åíóùìáôþíåé ìéá ðëÞñç ãëþóóá 4çò
  ãåíéÜò óå HTML


                 (ð.÷. <if>, <while>, êáé <let> Tags),




  óõí éó÷õñÝò äõíáôüôçôåò õðïëïãéóìïý åêöñÜóåùí ìå áêåñáßïõò,
  ðñáãìáôéêïýò, äõáäéêïýò, áëöáñéèìçôéêïýò, tuples ôåëåóôÝò. Ôá Tuples
  áíôéìåôùðßæïíôáé üðùò óôéò ìïíôÝñíåò áíôéêåéìåíïóôñáöåßò ãëþóóåò êáé
  öõëÜóóïíôáé óå ìåôáâëçôÝò óùñþí (heap variable). Ïé ìåôáâëçôÝò ôçò
  heitml, óõìðåñéëáìâáíïìÝíùí êáé üëùí ôùí óýíèåôùí äïìþí äåäïìÝíùí,
  öõëÜóóïíôáé óôï óùñü äéáôçñþíôáò ôéò áñ÷éêÝò ôïõò ôéìÝò ìåôáîý ôùí
  óåëßäùí ÷ñçóéìïðïéþíôáò ôï Session Mode.  Åßíáé äõíáôüí íá ïñßóåôå ôá
  äéêÜ óáò tags Þ tags ôïõ ðåñéâÜëëïíôïò êáé áêüìá êáé íá åðáíïñßóåôå ôá
  HTML-tags.

  Ôï heitml êÜíåé äõíáôü ôï íá

  - - - áíáðôõ÷èïýí Web Sites ìå Ýíá äïìçìÝíï êáé óðïíäõëùôü ôñüðï, þóôå
  íá ìåéùèåß äñáóôéêÜ ç êáèõóôÝñçóç ëüãù óõíôÞñçóçò.

  - - - áíáðôõ÷èïýí Ýîõðíá êáé áëëçëåðéäñáóôéêÜ Web Sites, ìå
  ðåñéå÷üìåíï ðïõ ðñïóáñìüæåôáé äõíáìéêÜ óôéò áíÜãêåò ôïõ ÷ñÞóôç.

  - - - åìöáíßóåôå ôï ðåñéå÷üìåíï SQL âÜóåùí ÷ùñßò íá ÷ñåéáóôåß êáèüëïõ
  ðñïãñáììáôéóìüò åêôüò áðü ôï íá ÷ñçóéìïðïéÞóåôå ôç âéâëéïèÞêç ìáò ôùí
  ðñïêáèïñéóìÝíùí "dba" Tags.

  - - - áíáðôõ÷èïýí åöáñìïãÝò óýíèåôùí âÜóåùí äåäïìÝíùí êáé êáôáëüãùí
  áãïñþí ÷ñçóéìïðïéþíôáò ôéò Session Variables

  Ôï heitml ôñÝ÷åé óå Linux ìå ïðïéïíäÞðïôå Web Server ðïõ ÷ñçóéìïðïéåß
  CGI interface, êáé åßíáé éäéáßôåñá ãñÞãïñï (áðïöåýãïíôáò ôçí
  êáèõóôÝñçóç ëüãù CGI) ìå ôïí APACHE Web Server ÷ñçóéìïðïéþíôáò ôï
  Apache API. ÌÝ÷ñé ôþñá õðïóôçñßæïíôáé ïé âÜóåéò MSQL (Ýêäïóç 1 êáé 2),
  PostgreSQL (Ýêäïóç 6), mysql, êáé ç yard. Ôï heitml äïõëåýåé åðßóçò óå
  Linux, BSDi, Solaris êáé SunOS, êáèþò êáé óå Windows NT ìå CGI êáé
  ISAPI êáé ODBC êáé Windows 95.

  Ôï heitml (óå linux) åßíáé äùñåÜí ãéá åñåõíçôéêÞ, ìç-åìðïñéêÞ êáé
  éäéùôéêÞ ÷ñÞóç. Ôá åìðïñéêÜ Web Sites ðñÝðåé íá ðëçñþóïõí ôÝëç ãéá ôçí
  Üäåéá ÷ñÞóçò. Ç ðëÞñçò ëåéôïõñãéêÞ Ýêäïóç ôïõ heitml åßíáé äéáèÝóéìç
  íá ôçí êáôåâÜóåôå ãéá ìéá ðåñßïäï äïêéìÞò äùñåÜí. (Óçìåéþóôå,
  ðáñüëáõôÜ, üôé êÜèå Web óåëßäá ".hei" ðïõ áíáðôýóóåôå èá åìöáíßæåé Ýíá
  ìÞíõìá ðïõ èá ôï ÷áñáêôçñßæåé óáí Ýêäïóç ãéá ìç åìðïñéêÞ ÷ñÞóç.  ÌåôÜ
  ôçí åããñáöÞ, èá ëÜâåôå Ýíá êëåéäß ãéá íá åîáöáíßóåôå áõôü ôï ìÞíõìá
  ÷ùñßò íá ÷ñåéáóôåß íá åðáíåãêáôáóôÞóåôå ôï ðñüãñáììá.)


  Ôï heitml (ðñïöÝñåôáé "×áú"-ÔéÅìÅë) åðåêôåßíåé êáé åìðëïõôßæåé
  óçìáíôéêÜ ôç ëåéôïõñãéêüôçôá ôçò HTML ìå ôïí ïñéóìü tags êáé
  ÷áñáêôçñéóôéêÜ ðëÞñåò ðñïãñáììáôéóìïý. Áõôü êÜíåé äõíáôÞ ôçí ýðáñîç
  åöáñìïãþí äõíáìéêïý ðåñéå÷ïìÝíïõ êáé âÜóåùí äåäïìÝíùí ìÝóá óôïí êüóìï
  ôçò HTML, ÷ùñßò CGI êáé åîùôåñéêü scripting Þ Üëëåò ãëþóóåò
  ðñïãñáììáôéóìïý.  Áõôü óçìáßíåé üôé åóåßò, óáí óõããñáöÝáò HTML,
  ìðïñåßôå íá ðñïóèÝóåôå åöáñìïãÝò óôéò web óåëßäåò óáò, ÷ñçóéìïðïéþíôáò
  áðëÜ ìåñéêÜ íÝá tags ÷ùñßò CGI êáé êáèüëïõ ðñïãñáììáôéóìü.  Áðü ôçí
  Üëëç, óáí ðñï÷ùñçìÝíïò ÷ñÞóôçò Þ ðñïãñáììáôéóôÞò ìðïñåßôå íá
  äçìéïõñãÞóåôå éó÷õñÝò ðñïãñáììáôéóôéêÝò âéâëéïèÞêåò ìå tag. ÁõôÞ ç
  ðñïóÝããéóç êÜíåé ôï heitml êáôÜëëçëï ôüóï ãéá ôïõò íåüöåñôïõò óôçí
  HTML üóï êáé ãéá ôïõò åðáããåëìáôßåò ðñïãñáììáôéóôÝò.  Ôï heitml ôñÝ÷åé
  óôï web server êáé äçìéïõñãåß äõíáìéêÜ HTML, Ýôóé þóôå ôï heitml íá
  åßíáé óõìâáôü ìå ôá óôÜíôáñ ôïõ internet êáé ìå ïðïéïäÞðïôå web
  browser.  ÅðéôñÝðåé ðëÞñç ðñüóâáóç óå âÜóåéò åíþ ðñïóôáôåýåé ôï ÷ñÞóôç
  áðü ôçí ðåñéôôÞ ðïëõðëïêüôçôá ôïõ CGI. Ôï heitml Ý÷åé áíáðôõ÷èåß
  óýìöùíá ìå ðñüóöáôåò Ýñåõíåò êáé óå óõóôÞìáôá êáôáóêåõÞò
  ìåôáãëùôôéóôþí êáé äïóïëçøéþí (transaction).

  Ïé óåëßäåò heitml áíáðôýóóïíôáé üðùò êáé ïé óåëßäåò HTML, ìå Ýíáí text
  editor Þ Ýíáí HTML editor, êáé ôïðïèåôïýíôáé óôï web server ìå ôï
  ãíùóôü ôñüðï. ÐáñüëáõôÜ, ïé óåëßäåò ìðïñïýí íá ðåñéÝ÷ïõí ôþñá äõíáìéêÜ
  heitml tags êáé âéâëéïèÞêåò tag ãéá ðñüóâáóç óå âÜóåéò.  Ìðïñåßôå íá
  ÷ñçóéìïðïéÞóåôå áõôÜ ôá tags ãéá íá Ý÷åôå ðñüóâáóç óå âÜóåéò, íá
  äçìéïõñãÞóåôå äõíáìéêü ðåñéå÷üìåíï, íá óôåßëåôå emails, êáé íá
  äçìéïõñãÞóåôå áêüìç éó÷õñÝò åöáñìïãÝò üðùò åããñáöÞ óå âÜóåéò êáé
  óõóôÞìáôá áãïñþí.

  Ïé íåüöåñôïé óôçí ãëþóóá HTML êáé ïé åðáããåëìáôßåò ðñïãñáììáôéóôÝò èá
  ìåßíïõí Ýêðëçêôïé ìå ôï ðüóï ãñÞãïñá êáé åýêïëá ìðïñïýí íá ó÷åäéÜóïõí
  åíäéáöÝñïõóåò åöáñìïãÝò üðùò ôï Interactive Guestbook ÷ùñßò íá
  ÷ñåéÜæåôáé íá ìÜèïõí íá ãñÜöïõí óýíèåôá êáé ðïëýðëïêá CGI scripts,
  áðëÜ êáé ìüíï ÷ñçóéìïðïéþíôáò ôá åñãáëåßá ðïõ ðáñÝ÷ïíôáé ìå ôç dba
  âéâëéïèÞêç ìáò.

  Ôï heitml óõíïäåýåôáé áðü Ýíá ìåãÜëï ðëÞèïò tag âéâëéïèçêþí, ãéá íá
  äçìéïõñãÞóåôå guestbooks, åöáñìïãÝò óõíôÞñçóçò ôçò âÜóçò, åðåêôÜóéìåò
  öüñìåò åñùôÞóåùí, éó÷õñÝò öüñìåò email Þ íá äïìÞóôå ôï web site óáò
  ÷ñçóéìïðïéþíôáò Ýíá éåñáñ÷éêü ìåíïý.  ÁõôÜ ôá åñãáëåßá åßíáé Ýôïéìá,
  áðëÜ ðñïóèÝóôå ôá áíôßóôïé÷á tags óôï web site óáò.

  Óáí Ýìðåéñïò ðñïãñáììáôéóôÞò, ìðïñåßôå íá êÜíåôå ðëÞñç ÷ñÞóç ôçò
  heitml áñ÷éôåêôïíéêÞò äõíáìéêþí åããñáöþí: Ôï heitml äåí åßíáé áðëÜ ìéá
  scripting ãëþóóá ìå äõíáìéêïýò ôýðïõò, éó÷õñÞ óôïí õðïëïãéóìü
  åêöñÜóåùí, áíáäñïìéêÝò ñïõôßíåò êáé ðÝñáóìá åêôåôáìÝíùí ðáñáìÝôñùí,
  áëëÜ ÷áñáêôçñßæåôáé åðßóçò áðü äõíáìéêÝò åããñáöÝò ãéá ôçí áõôüìáôç
  äéá÷åßñéóç ôùí äåäïìÝíùí åíüò session áíåîáñôÞôïõ ìåãÝèïõò.



  14.5.  America On-line AOL Web server ãéá PostgreSQL

  Ï äùñåÜí åìðïñéêüò webserver, AOLserver Ýêäïóçò 2.3 õðïóôçñßæåé
  óõíäÝóåéò óôç âÜóç PostgreSQL Ýêäïóç 6.2.1 êáé ìåãáëýôåñç.  Ãéá
  ðåñéóóüôåñåò ðëçñïöïñßåò åðéóêåöôåßôå ôï

  ·  AOL Web Server  <http://www.aolserver.com>



  14.6.  Problem/Project Tracking System Application Tool ãéá PostgreSQL

  Âñßóêåôáé óôï :

  ·  <http://www.homeport.org/~shevett/pts/>


  14.7.  ÌåôáôñïðÞ áñ÷åßùí dbase dbf óå PostgreSQL

  Ôï ðñüãñáììá dbf2msql äïõëåýåé Üøïãá ìå mSQL êáé PostgreSQL. Ìðïñåßôå
  íá ôï âñåßôå óôï

  ·  <ftp://ftp.nerosworld.com/pub/SQL/dbf2sql/>

  ·  <ftp://ftp.postgresql.org/pub/incoming/dbf2pg-3.0.tar.gz>

  Ôï ðñüãñáììá áõôü ãñÜöôçêå áðü ôïí Maarten Boekhold, Faculty of
  Electrical Engineering TU Delft, NL Computer Architecture and Digital
  Technique section

  ·  M.Boekhold@et.tudelft.nl

  Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå åðßóçò python ãéá íá äéáâÜóåôå áñ÷åßá dbf
  êáé íá ôá öïñôþóåôå óå ìéá âÜóç äåäïìÝíùí postgres.

  ·  Äåßôå ôï  <http://www.python.org>


  15.  Åñãáëåßï ãéá Ó÷åäéáóìü/Õëïðïßçóç Web ÂÜóåùí ÄåäïìÝíùí ãéá ôçí
  PostgreSQL - EARP


  ·  <http://www.oswego.edu/Earp>

  ·  <ftp://ftp.oswego.edu> óôïí êáôÜëïãï 'pub/unix/earp'.


  15.1.  Ôé åßíáé ôï EARP ;

  Ôï EARP åßíáé Ýíá åñãáëåßï ãéá ó÷åäéáóìü/õëïðïßçóç Web âÜóåùí, ðïõ
  êÜèåôáé ðÜíù áðü ôï óýóôçìá âÜóçò äåäïìÝíùí PostgreSQL. Óôç
  ëåéôïõñãéêüôçôÜ ôïõ ðåñéëáìâÜíïíôáé:


  ·  ¸íá óýóôçìá ãñáöéêïý ó÷åäéáóìïý.

  ·  ¸íá interface ãéá sendmail. (ìðïñåß íá ÷åéñéóôåß ôá åéóåñ÷üìåíá êáé
     åîåñ÷üìåíá mail)

  ·  ¸íá áõîçìÝíï ìç÷áíéóìü áóöáëåßáò.

  ·  ¸íáí ïäçãü cgi.

  15.2.  Õëïðïßçóç

  Ç êýñéá õëïðïßçóç ôïõ EARP åßíáé Ýíá åêôåëÝóéìï CGI ðïõ ôñÝ÷åé êÜôù
  áðü ôï äáßìïíá http êáé ðáñÝ÷åé ðñüóâáóç óôï äéáêïìéóôÞ ôçò âÜóçò
  äåäïìÝíùí. ¼ëá ôá åñãáëåßá ó÷åäéáóìïý åßíáé ÷ôéóìÝíá ìÝóá óôïí ïäçãü,
  ï ó÷åäéáóìüò äåí ãßíåôáé ðáñÜ ìüíï óå web. Ôá ßäéá ôá åñãáëåßá
  áðáéôïýí Ýíá ãñáöéêü browser, ç óõìâáôüôçôá ôùí áíôéêåéìÝíùí ðïõ
  ó÷åäéÜæïíôáé ìå ôá åñãáëåßá åßíáé áíåîÜñôçôá ôïõ ôñüðïõ õëïðïßçóçò,
  âáóéóìÝíá óôï ó÷åäéáóìü áôïìéêþí ðñïôéìÞóåùí.

  15.3.  Ôé ÷ñåéÜæåóôå ãéá íá ôñÝîåôå ôï EARP

  Ôï EARP ðñÝðåé íá ôñÝ÷åé ðéèáíÜ óå ðïëëÝò ðëáôöüñìåò ìå ëßãï Þ êáèüëïõ
  ìåôáöïñÜ. Ïé ãíùóôÝò ðëáôöüñìåò ðïõ ôñÝ÷åé åßíáé ïé åîÞò:

  ·  Solaris 2.5

  ·  Linux 1.2.13+

  ·  GNU C++

  ·  PostgreSQL (Ýêäïóç 1.01 / 1.02 )

  ·  netsite server

  ·  NCSA httpd


  ·  GNU C++

  ·  PostgreSQL (Ýêäïóç 1.01 / 1.02 )

  ·  NCSA httpd

  ·  Apache httpd

     Ç ôñÝ÷ïõóá Ýêäïóç (1.3) ôïõ Earp ó÷åäéÜóôçêå ðÜíù óôçí Ýêäïóç ôïõ
     libpq ðïõ Ýñ÷åôáé ìå ôçí PostgreSQL v1.01/1.02.  Áí ÷ñçóéìïðïéåßôå
     ìéá ðéï ðñüóöáôç Ýêäïóç ôçò Postgres, íá ðåñéìÝíåôå ðùò ôï
     ðñüãñáììá èá ÷ñåéáóôåß ìåñéêÝò áëëáãÝò ãéá íá äïõëÝøåé óùóôÜ. Óôçí
     áíáðôõóóüìåíç Ýêäïóç (Earp 2.0), ç õðïóôÞñéîç libpq åíóùìáôþíåôáé
     óáí module.



  15.4.  Ðþò äïõëåýåé ;

  ¸íá áðü ôá êõñéüôåñá ÷áñáêôçñéóôéêÜ ôïõ EARP åßíáé üôé ÷ñçóéìïðïéåß
  ÁíôéêåéìåíïóôñáöÞ ìÝèïäï ãéá íá ðáñÜãåé html óåëßäåò ðïõ åðéêïéíùíïýí
  ìå ôç âÜóç. Ïé ðåñéóóüôåñåò óåëßäåò áðïôåëïýíôáé áðü äéÜöïñá
  áíôéêåßìåíá (objects). ÊÜèå áíôéêåßìåíï ðáñÜãåôáé áðü êÜðïéïõ ôýðïõ
  åñãáëåßï êáé áöïý ôïõ äïèåß Ýíá üíïìá, ôá áíôéêåßìåíá óõíäÝïíôáé
  ìåôáîý ôïõò óå ìßá áëëçëïõ÷ßá ðïõ ìðïñåß íá êáëåóôåß áðü ôï åñãáëåßï
  ôçò óåëßäáò (page tool). Ôá áíôéêåßìåíá åßíáé ìðïñïýí íá
  ÷ñçóéìïðïéçèïýí áðü ðïëëáðëÝò óåëßäåò.  ÕðÜñ÷ïõí âáóéêÜ åñãáëåßá ãéá
  HTML, ÅñùôÞóåéò (Querys), íá ðáßñíåôå ôéìÝò áðü ôéò öüñìåò, íá
  öïñìÜñåôå åñùôÞóåéò êáé áíôéêåßìåíá åéóüäïõ, êáé íá óõíäÝåôå ìåôáîý
  ôïõò ôá áíôéêåßìåíá óå Üëëá áíôéêåßìåíá. Ðåñéóóüôåñá åîåëéãìÝíá
  åñãáëåßá ðåñéëáìâÜíïõí ôï åñãáëåßï ãéá mail êáé ôï multithreaded
  åñãáëåßï åñùôÞóåùí.

  Áëëï ÷áñáêôçñéóôéêü ôïõ EARP åßíáé ç Ýîôñá áóöÜëåéá. Ç ðñüóâáóç óå
  äéÜöïñåò ðåñéï÷Ýò ôïõ óõóôÞìáôïò EARP ìðïñåß íá ðåñéïñéóôåß ìå
  äéÜöïñïõò ôñüðïõò. Ãéá íá åõêïëýíåé ôçí Ýîôñá áóöÜëåéá, ôï EARP
  åëÝã÷åé ãéá êÜèå óýíäåóç óôï óýóôçìá, êáé ðñïóäéïñßæåé óå ðïéá ids êáé
  ãêñïõð áíÞêåé ï óõíäåäåìÝíïò agent. Ç ðñüóâáóç óå ðåñéï÷Ýò êáèïñßæåôáé
  îå÷ùñéóôÜ, êáé ï óõíäõáóìüò áðïöáóßæåé áí åðéôñÝðåôáé ç ðñüóâáóç óå
  ìéá óõãêåêñéìÝíç ðåñéï÷Þ ôïõ Earp. ÅðéðëÝïí, ü,ôé áðáéôåßôáé ãéá íá
  õëïðïéÞóåôå ôá ÷áñáêôçñéóôéêÜ áóöáëåßáò åßíáé Ýíáò http server ðïõ
  õðïóôçñßæåé âáóéêü (Þ êáëýôåñá) user authentication.

  15.5.  Ðïý èá ôï âñù ;

  Ìðïñåßôå íá êáôåâÜóåôå ôï EARP ìå anonymous ftp áðü ôï

  ·  <ftp://ftp.oswego.edu> óôïí êáôÜëïãï 'pub/unix/earp'.


  16.  PHP Hypertext Preprocessor, ìéá scripting ãëþóóá ãéá ôçí Post-
  greSQL ç ïðïßá åíóùìáôþíåôáé óå html êáé åêôåëåßôáé óôï Server

  Åñãáëåßï äéáóýíäåóçò ìå ôï WWW

  ·  <http://www.php.net>

  ·  <http://www.vex.net/php>

     Ôï ðáëéü üíïìá åßíáé Professional Home Pages (PHP 3) êáé ôï íÝï
     üíïìá åßíáé PHP Hypertext Pre-Processor

  ·  ÕðÜñ÷ïõí Mirror sites óå ðïëëÝò ÷þñåò üðùò ôï
     www.COUNTRYCODE.php.net

  ·  <http://www.fe.de.php.net>

  ·  <http://www.sk.php.net>

  ·  <http://php.iquest.net/>

  Ãéá åñùôÞóåéò, óôåßëôå e-mail óôï :

  ·  rasmus@lerdorf.on.ca

  Ôï PHP 3 åßíáé ìéá scripting ãëþóóá ãéá ôçí PostgreSQL ç ïðïßá
  åíóùìáôþíåôáé óå html êáé åêôåëåßôáé óôï Server.  Óáò åðéôñÝðåé íá
  ãñÜöåôå áðëÜ scripts óôá áñ÷åßá .HTML ðáñüìïéá ìå ôçí JavaScript, ìüíï
  ðïõ áíôßèåôá ìå ôçí JavaScript, ôï PHP 3 äåí åîáñôÜôáé áðü ôï browser.
  Ôï JavaScript åßíáé ìéá ãëþóóá ç ïðïßá åíóùìáôþíåôáé óå html êáé
  ôñÝ÷åé óôï client-ìÝñïò åíþ ôï PHP 3 åêôåëåßôáé óôï Server. Ôï PHP 3
  åßíáé ðáñüìïéï óôçí óýëëçøç ìå ôï ðñïúüí ôçò Netscape LiveWire Pro. Áí
  Ý÷åôå ôá áðáéôïýìåíá ÷ñÞìáôá, êáé ôñÝ÷åôå ôïí åìðïñéêü Server ôçò
  Netscape êáé Ý÷åôå Ýíá áðü ôá õðïóôçñéæüìåíá ëåéôïõñãéêÜ óõóôÞìáôá,
  ßóùò èá ðñÝðåé íá ñßîåôå ìéá ìáôéÜ óôï LiveWire Pro.  Áí óáò áñÝóåé ôï
  äùñåÜí, ôá÷ýôáôá áíáðôõóóüìåíï ëïãéóìéêü ðïõ Ýñ÷åôáé ìå üëï ôïí ðçãáßï
  êþäéêá ðéèáíÜ íá óáò áñÝóåé ôï PHP 3.

  16.1.  Êýñéá ÷áñáêôçñéóôéêÜ

  ÕðïóôÞñéîç óôÜíôáñ CGI, FastCGI êáé Apache module.  Óáí Ýíá óôÜíôáñ
  ðñüãñáììá CGI, ôï PHP 3 ìðïñåß íá åãêáôáóôáèåß óå ïðïéáäÞðïôå ìç÷áíÞ
  Unix êáé íá ôñÝîåé óå ïðïéïäÞðïôå Unix web server.  Ìå ôçí õðïóôÞñéîç
  ôïõ íÝïõ óôÜíôáñ FastCGI, ôï PHP 3 Ý÷åé ôï ðëåïíÝêôçìá ôùí âåëôéþóåùí
  óôçí ôá÷ýôçôá ðïõ ïöåßëïíôáé óå áõôü ôï ìç÷áíéóìü.  Óáí Apache module,
  ôï PHP 3 ãßíåôáé åîáéñåôéêÜ éó÷õñü êáé ôñïìáêôéêÜ ãñÞãïñç åíáëëáêôéêÞ
  ôïõ ðñïãñáììáôéóìïý óå CGI.


  ·  ÊáôáãñáöÞ ôùí ðñïóâÜóåùí (Access Logging) Ìå ôç äõíáôüôçôá
     êáôáãñáöÞò ôùí ðñïóâÜóåùí ôïõ PHP 3, ïé ÷ñÞóôåò ìðïñïýí íá
     óõíôçñÞóïõí ôï äéêü ôïõò ìåôñçôÞ êáé êáôáãñáöÝá ðñïóâÜóåùí (hit
     counting and logging). Äå ÷ñçóéìïðïéåß ìå êáíÝíá ôñüðï ôá êåíôñéêÜ
     áñ÷åßá ðñüóâáóçò óôï óýóôçìá, êáé ðáñÝ÷åé ðáñáêïëïýèçóç ðñïóâÜóåùí
     óå ðñáãìáôéêü ÷ñüíï.  Ôï Log Viewer Script ðáñÝ÷åé ìéá óýíôïìç
     ðåñßëçøç ôùí ðñïóâÜóåùí óå Ýíá óýíïëï óåëßäùí ãéá êÜèå îå÷ùñéóôü
     ÷ñÞóôç. ÅðéðëÝïí, ôï ðáêÝôï ìðïñåß íá ñõèìéóôåß þóôå íá ðáñÜãåé Ýíá
     footer óå êÜèå óåëßäá ôï ïðïßï äåß÷íåé ðëçñïöïñßåò ó÷åôéêÜ ìå ôçí
     ðñüóâáóç. Äåßôå ôï ôÝëïò áõôÞò ôçò óåëßäáò ãéá Ýíá ðáñÜäåéãìá óå
     áõôÜ.

  ·  ¸ëåã÷ïò ðñïóâÜóåùí Ìéá åíóùìáôùìÝíç ïèüíç, âáóéóìÝíç óôï web,
     ÷åéñßæåôáé ôéò ñõèìßóåéò ãéá ôïí Ýëåã÷ï ôùí ðñïóâÜóåùí. Åßíáé
     äõíáôü íá äçìéïõñãÞóåôå êáíüíåò ãéá üëåò Þ êÜðïéåò áðü ôéò web
     óåëßäåò ðïõ Ý÷åé êÜðïéï óõãêåêñéìÝíï Üôïìï, ôï ïðïßï èÝôåé
     äéÜöïñïõò ðåñéïñéóìïýò ãéá ôï ðïéïò ìðïñåß íá âëÝðåé áõôÝò ôéò
     óåëßäåò êáé ðþò èá ôéò âëÝðåé. Ïé óåëßäåò ìðïñåß íá ðñïóôáôåýïíôáé
     ìå êùäéêü, íá åßíáé ðëÞñùò áðáãïñåõìÝíåò, íá åßíáé áðåíåñãïðïéçìÝíç
     ç êáôáãñáöÞ (logging disabled) êáé áêüìç ðåñéóóüôåñá âáóéóìÝíá óôï
     domain ôïõ client, browser,ôç äéåýèõíóç e-mail Þ áêüìç êáé ôï
     ó÷åôéêü êåßìåíï.

  ·  ÕðïóôÞñéîç ãéá Postgres Ç Postgres åßíáé Ýíá åîåëéãìÝíï äùñåÜí
     RDBMS. Ôï PHP 3 õðïóôçñßæåé ôçí åíóùìÜôùóç Postgres95 êáé
     PostgresSQL SQL åñùôÞóåùí êáôåõèåßáí ìÝóá óå áñ÷åßá .html.


  ·  ÕðïóôÞñéîç RFC-1867 ÁðïóôïëÞ/ÁíÝâáóìá Áñ÷åßùí (File Upload) Ôï
     Upload áñ÷åßùí åßíáé Ýíá íÝï ÷áñáêôçñéóôéêü óôï Netscape 2.0.
     ÅðéôñÝðåé óôïõò ÷ñÞóôåò íá óôåßëïõí (upload) ôá áñ÷åßá ôïõò óôï web
     server. Ôï PHP 3 ðáñÝ÷åé ôï ðñáãìáôéêü Mime decoding ãéá íá ôï
     êÜíåé áõôü íá äïõëÝøåé êáé åðßóçò ðáñÝ÷åé ôï ðëáßóéï ãéá íá êÜíåôå
     êÜôé ÷ñÞóéìï ìå ôï áñ÷åßï ðïõ óôåßëáôå, ìüëïò ôï ëÜâåé ï server.

  ·  HTTP-based authentication control Ôï PHP 3 ìðïñåß íá ÷ñçóéìïðïéçèåß
     ãéá íá äçìéïõñãÞóåé ìç÷áíéóìïýò authentication åðß ðáñáããåëßá,
     âáóéóìÝíïõò óå HTTP, ãéá ôïí Apache web server.

  ·  ÌåôáâëçôÝò, Ðßíáêåò (arrays), Óõó÷åôéóôéêïß ðßíáêåò (Associative
     Arrays) Ôï PHP 3 õðïóôçñßæåé ìåôáâëçôÝò ôýðùí (typed variables),
     ðßíáêåò êáé áêüìç êáé Perl-ïåéäåßò óõó÷åôéóôéêïýò ðßíáêåò
     (associative arrays). ¼ëá áõôÜ ìðïñïýí íá ðåñíïýí áðü ôç ìßá web
     óåëßäá óôçí Üëëç ÷ñçóéìïðïéþíôáò ôéò ìåèüäïõò ôùí öïñìþí, GET Þ
     POST.

  ·  Conditionals, While Loops Ôï PHP 3 õðïóôçñßæåé ìéá ãëþóóá scripting
     ìå üëá ôá ÷áñáêôçñéóôéêÜ ôçò C.  Ìðïñåßôå íá Ý÷åôå óõíèÞêåò
     if/then/elseif/else/endif üðùò êáé while loops êáé äçëþóåéò
     switch/case ãéá íá ðåñéãñÜøåé ôç ëïãéêÞ ñïÞ ôïõ ðþò èá åìöáíßæåôáé
     ç html óåëßäá.

  ·  Extended Regular Expressions Ôá Regular expressions
     ÷ñçóéìïðïéïýíôáé ðïëý ãéá ôáõôïðïßçóç (pattern matching),
     áíôéêáôáóôÞóåéò ôùí pattern êáé ãåíéêü ÷åéñéóìü áëöáñéèìçôéêþí. Ôï
     PHP 3 õðïóôçñßæåé üëïõò ôïõò êïéíïýò ôåëåóôÝò êáíïíéêþí åêöñÜóåùí.

  ·  Raw HTTP Header Control Ç äõíáôüôçôá íá êÜíïõìå ôéò web óåëßäåò íá
     óôÝëíïõí åéäéêÜ ôñïðïðïéçìÝíåò åðéêåöáëßäåò HTTP áíÜëïãá ìå êÜðïéåò
     óõíèÞêåò åßíáé áðáñáßôçôï ãéá ó÷åäéáóìü web sites õøçëïý åðéðÝäïõ.
     Óõ÷íÞ ÷ñÞóç áõôïý, åßíáé ç áðïóôïëÞ ìéáò ôïðïèåóßáò: URL header ãéá
     áíáêáôåýèõíóç ôïõ ðåëÜôç ðïõ Ýêáíå ôçí êëÞóç ðñïò Üëëï URL. Ìðïñåß
     íá ÷ñçóéìïðïéçèåß åðßóçò ãéá íá áðåíåñãïðïéÞóïõìå ôï caching Þ íá
     åðåîåñãáóôïýìå ôçí ôåëåõôáßá åðéêåöáëßäá åíçìÝñùóçò.

  ·  Äçìéïõñãßá GIF åéêüíáò åðß ôüðïõ/óôïí áÝñá (On-the-fly) Ôï PHP 3
     õðïóôçñßæåé ôç GD âéâëéïèÞêç åéêüíùí ôïõ Thomas Boutell ç ïðïßá óáò
     äßíåé ôç äõíáôüôçôá íá äçìéïõñãÞóåôå GIF åéêüíåò åðß ôüðïõ.

  ·  ÕðïóôÞñéîç ISP "Safe Mode" Ôï PHP 3 õðïóôçñßæåé ôï ìïíáäéêü "Safe
     Mode" ôï ïðïßï êÜíåé áóöáëÝò ôï íá Ý÷åôå ðïëëïýò ÷ñÞóôåò íá ôñÝ÷ïõí
     PHP scripts óôïí ßäéï server.

  ·  Åßíáé äùñåÜí!  Êáé ôï ôåëéêü ïõóéáóôéêü ÷áñáêôçñéóôéêü. Ôï ðáêÝôï
     åßíáé åíôåëþò äùñåÜí.  Âñßóêåôáé êÜôù áðü ôçí Üäåéá GPL ç ïðïßá óáò
     åðéôñÝðåé íá ÷ñçóéìïðïéÞóåôå ôï ëïãéóìéêü ãéá ïðïéïäÞðïôå óêïðü,
     åìðïñéêü Þ ïðïéïíäÞðïôå Üëëï. Äåßôå ôï êåßìåíï ôçò äçìüóéáò Üäåéáò
     GNU ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò.

  16.2.  Áíáãíþñéóç/Åõ÷áñéóôßåò

  * ÌåãÜëá êïììÜôéá áõôïý ôïõ êþäéêá áíáðôý÷èçêáí óôï êáé ãéá ôï
  ÐáíåðéóôÞìéï ôïõ Ôïñüíôï. ÐïëëÝò åõ÷áñéóôßåò óôïí Lee Oattes ôïõ
  ÔìÞìáôïò ÁíÜðôõîçò Äéêôýùí ôïõ ðáíåðéóôçìßïõ ãéá ôéò óõíå÷åßò
  åðïéêïäïìçôéêÝò êñéôéêÝò ôïõ.

  * Ï êþäéêáò õðïóôÞñéîçò ôçò PostgreSQL ãñÜöôçêå áðü ôïí Adam Sussman

  ·  asussman@vidya.com

  * Áíáñßèìçôïé Üëëïé, âïÞèçóáí óôï íá åëåã÷èåß êáé íá áðïóöáëìáôùèåß ôï
  ðáêÝôï.

  16.3.  PHP 3 - Óýíôïìï Éóôïñéêü

  Ôï PHP îåêßíçóå ôçí æùÞ ôïõ ùò cgi êþäéêáò åðéêÜëõøçò (cgi wrapper)
  ãñáììÝíïò óå Perl.  Äåí ðñïïñéæüôáí ãéá ôßðïôá ðÝñá áðü ðñïóùðéêÞ
  ÷ñÞóç.  Ôï üíïìá ôïõ ðñþôïõ áõôïý ðáêÝôïõ Þôáí Personal Home Page
  Tools, êáé áñãüôåñá Ýãéíå Personal Home Page Construction Kit.

  ÃñÜöôçêå Ýíá åñãáëåßï ãéá íá åíóùìáôþíåé åýêïëá åñùôÞóåéò SQL óå web
  óåëßäåò. ¹ôáí âáóéêÜ Ýíá áêüìá CGI wrapper ðïõ ìåôÝöñáæå åñùôÞóåéò SQL
  êáé Ýêáíå ôçí äçìéïõñãßá öïñìþí êáé ðéíÜêùí áðü ôéò åñùôÞóåéò ìéá
  åýêïëç õðüèåóç. Ôï åñãáëåßï áõôü ïíïìÜóôçêå FI (Form Interpreter).

  Ôï PHP/FI Ýêäïóç 2.0 åßíáé Ýíá åíéáßï ðñüãñáììá, åî'ïëïêëÞñïõ
  îáíáãñáììÝíï, ðïõ áðïôåëåß ôïí óõíäõáóìü ôùí äýï ðáñáðÜíù ðáêÝôùí.
  ¸÷åé ôþñá ðéá åîåëé÷èåß óå óçìåßï ðïõ åßíáé ìéá áðëÞ ðñïãñáììáôéóôéêÞ
  ãëþóóá åíóùìáôùìÝíç óå áñ÷åßá HTML. Ôï áñ÷éêü áêñùíýìéï, PHP, Ýìåéíå.
  Äåí åßíáé êáí áíôéðñïóùðåõôéêü ðéá. Ôï PHP/FI ÷ñçóéìïðïéåßôáé
  ðåñéóóüôåñï áðü ïëüêëçñá web sites óÞìåñá, ðáñÜ ãéá ìéêñÝò
  åãêáôáóôÜóåéò Ðñïóùðéêþí Óåëßäùí (Personal Home Page). Ìå üðïéï üíïìá,
  åîáëåßöåé ôçí áíÜãêç ãéá ôá ðïëõÜñéèìá ìéêñÜ Perl cgi ðñïãñÜììáôá,
  åðéôñÝðïíôáò óáò íá âÜëåôå ìéêñÜ scripts áðåõèåßáò óôá HTML áñ÷åßá
  óáò. Áõôü åðéôá÷ýíåé ôçí ïëéêÞ ôá÷ýôçôá ôùí web pages óáò, ìéá ðïõ ç
  êáèõóôÝñçóç ôïõ êëùíéóìïý (forking) ôçò Perl óå ðïëëáðëÜ áíôßôõðá Ý÷åé
  åîáëåéöèåß. ÊÜíåé åðßóçò åõêïëüôåñç ôçí äéá÷åßñéóç ìåãÜëùí web sites
  ôïðïèåôþíôáò üëá ôá óõóôáôéêÜ ìéáò web page óå Ýíá ìüíï html áñ÷åßï.
  Åíóùìáôþíïíôáò õðïóôÞñéîç ãéá äéÜöïñåò âÜóåéò, êÜíåé ôçí áíÜðôõîç
  óåëßäùí-ìå-äõíáôüôçôåò-÷ñÞóçò-âÜóçò ôåôñéììÝíç. Ðïëëïß âñßóêïõí ôçí
  åíóùìáôùìÝíç öýóç ôïõ ðñïãñÜììáôïò ðïëý åõêïëüôåñç ðáñÜ ôï íá
  ðñïóðáèïýí íá äçìéïõñãïýí îå÷ùñéóôÜ áñ÷åßá HTML êáé CGI.

  ÊáôÜ ôç äéÜñêåéá áõôÞò ôçò ôåêìçñßùóçò, êÜèå áíáöïñÜ óôï PHP, FI Þ óôï
  PHP/FI ìéëÜåé ãéá ôï ßäéï ðñÜãìá. Ïé äéáöïñÜ ìåôáîý ôïõ PHP êáé ôïõ FI
  åßíáé ìüíï èÝìá áíôßëçøçò.  Êáé ôá äýï ÷ôßæïíôáé áðü ôïí êþäéêá ôçò
  ßäéáò äéáíïìÞò. Ôþñá ôï PHP/FI ìåôïíïìÜóôçêå óå PHP 3.

  16.4.  Ôé ìðïñþ íá êÜíù, ëïéðüí, ìå ôï PHP/FI ;

  Ôï ðñþôï ðñÜãìá ðïõ èá ðáñáôçñÞóåôå áí ôñÝîåôå ìéá óåëßäá ìÝóù ôïõ
  PHP/FI åßíáé üôé ðñïóèÝôåé Ýíá footer ìå ðëçñïöïñßåò ó÷åôéêÜ ìå ôïí
  áñéèìü ðñïóâÜóåùí óôç óåëßäá óáò (áí Ý÷åôå ìåôáãëùôôßóåé ôçí êáôáãñáöÞ
  ðñïóâÜóåùí óôï åêôåëÝóéìï).  Áõôü åßíáé Ýíá ðïëý ìéêñü äåßãìá ôïõ ôé
  ìðïñåß íá êÜíåé ãéá óáò ôï PHP/FI.  Ðáßæåé ôïí åîßóïõ óçìáíôéêü ñüëï
  ôïõ ìåôáöñáóôÞ cgi óå öüñìåò, áðü åêåß âãáßíåé êáé to FI ìÝñïò ôïõ
  ïíüìáôïò. Ãéá ðáñÜäåéãìá, áí äçìéïõñãÞóåôå ìéá öüñìá óå ìßá áðü ôéò
  web óåëßäåò óáò, ÷ñåéÜæåóôå êÜôé ãéá íá åðåîåñãáóôåß ôçí ðëçñïöïñßá óå
  áõôÞ ôç öüñìá.  Áêüìç êáé áí áðëÜ èÝëåôå íá ðåñÜóåôå ðëçñïöïñßá óå ìéá
  Üëëç óåëßäá, èá ðñÝðåé íá ÷ñçóéìïðïéÞóåôå Ýíá ðñüãñáììá cgi ãéá íá ôï
  êÜíåôå áõôü. To PHP/FI êÜíåé åîáéñåôéêÜ åýêïëï ôï íá ðÜñåôå äåäïìÝíá
  áðü ìéá öüñìá êáé íá êÜíåôå êÜôé ìå áõôÜ.

  16.5.  ¸íá áðëü ðáñÜäåéãìá

  Áò õðïèÝóïõìå üôé Ý÷åôå ìéá öüñìá:


       <FORM ACTION="/cgi-bin/php.cgi/~userid/display.html" METHOD=POST>
       <INPUT TYPE="text" name="name">
       <INPUT TYPE="text" name="age">
       <INPUT TYPE="submit">
       <FORM>




  Ôï áñ÷åßï display.html èá ìðïñïýóå íá ðåñéÝ÷åé êÜôé óáí ôï ðáñáêÜôù:


       < ?echo "Hi $ name, you are $ age years old!<p>" >




  Åßíáé ôüóï áðëü! Ôï PHP/FI äçìéïõñãåß áõôüìáôá ìéá ìåôáâëçôÞ ãéá êÜèå
  input field óôç öüñìá óáò. Ìðïñåßôå ôüôå íá ÷ñçóéìïðïéÞóåôå áõôÝò ôéò
  ìåôáâëçôÝò óôï áñ÷åßï ACTION URL.

  Ôï åðüìåíï âÞìá áöïý Ý÷åôå êáôáëÜâåé ðþò íá ÷ñçóéìïðïéåßôå ôéò
  ìåôáâëçôÝò åßíáé íá îåêéíÞóåôå íá ðáßæåôå ìå ìåñéêÜ tags ëïãéêÞò ñïÞò
  óôéò óåëßäåò óáò.  Ãéá ðáñÜäåéãìá, áí èÝëáôå íá åìöáíßóåôå äéáöïñåôéêÜ
  ìçíýìáôá âáóéóìÝíá óå êÜôé ðïõ åéóÜãåé ï ÷ñÞóôçò, èá ÷ñçóéìïðïéïýóáôå
  ôç ëïãéêÞ if/else.  Óôï ðáñáðÜíù ðáñÜäåéãìá, ìðïñïýìå íá åìöáíßóïõìå
  äéáöïñåôéêÜ ðñÜãìáôá ìå âÜóç ôçí çëéêßá ðïõ Ýäùóå ï ÷ñÞóôçò áëëÜæïíôáò
  ôï áñ÷åßï display.html ùò åîÞò:


       <?
           if($age>50);
               echo "Hi $name, you are ancient!<p>";
           elseif($age>30);
               echo "Hi $name, you are very old!<p>";
           else;
               echo "Hi $name.";
           endif;
       >




  Ôï PHP/FI ðáñÝ÷åé ìßá ðïëý éó÷õñÞ scripting ãëþóóá ðïõ èá êÜíåé ðïëý
  ðåñéóóüôåñá áð' üôé êÜíïõí ôá ðáñáðÜíù áðëÜ ðáñáäåßãìáôá. Äåßôå ôï
  ôìÞìá óôï "PHP/FI Script Language" ãéá ðåñéóóüôåñåò ðëçñïöïñßåò.

  Ìðïñåßôå íá êáèïñßóåôå åðßóçò óôï PHP/FI ðïéïò åðéôñÝðåôáé íá Ý÷åé
  ðñüóâáóç óôéò óåëßäåò óáò.  Áõôü åðéôõã÷Üíåôáé ìå ìéá åíóùìáôùìÝíç
  ïèüíç ñýèìéóçò. Ìå áõôÞ èá ìðïñïýóáôå ãéá ðáñÜäåéãìá íá êáèïñßóåôå üôé
  ìüíï ôá Üôïìá áðü óõãêåêñéìÝíá domains èá ìðïñïýí íá äïõí ôéò óåëßäåò
  óáò, Þ èá ìðïñïýóáôå íá äçìéïõñãÞóåôå Ýíá êáíüíá ðïõ èá ðñïóôÜôåõå
  ìåñéêÝò óåëßäåò óáò ìå êùäéêü. Äåßôå ôï ôìÞìá "¸ëåã÷ïò ðñïóâÜóåùí" ãéá
  ðåñéóóüôåñåò ðëçñïöïñßåò.

  Ôï PHP/FI åßíáé åðßóçò éêáíü íá äÝ÷åôáé uploads áñ÷åßùí áðü
  ïðïéïäÞðïôå web browser óõìâáôü ìå RFC-1867. Áõôü ôï ÷áñáêôçñéóôéêü
  åðéôñÝðåé óå áíèñþðïõò íá áíåâÜóïõí êáé text êáé binary áñ÷åßá. Ìå ôïí
  Ýëåã÷ï ðñïóâÜóåùí ôïõ PHP/FI êáé ôéò ëïãéêÝò óõíáñôÞóåéò, Ý÷åôå ðëÞñç
  Ýëåã÷ï ðÜíù óôï ðïéïò åðéôñÝðåôáé íá áíåâÜæåé (upload) áñ÷åßá êáé ôé
  ìðïñåß íá êÜíåé ìå ôï áñ÷åßï áöïý ôï áíåâÜóåé. Äåßôå ôï ôìÞìá "File
  Upload" ãéá ðåñéóóüôåñåò ðëçñïöïñßåò.

  Ôï PHP/FI õðïóôçñßæåé ôï ðáêÝôï âÜóçò äåäïìÝíùí PostgreSQL.
  Õðïóôçñßæåé åíóùìáôùìÝíåò SQL åñùôÞóåéò óôá .HTML áñ÷åßá óáò. Äåßôå ôï
  áíôßóôïé÷ï ôìÞìá óôçí "ÕðïóôÞñéîç ôçò PostgreSQL" ãéá ðåñéóóüôåñåò
  ðëçñïöïñßåò.

  Ôï PHP/FI õðïóôçñßæåé åðßóçò êáé ôï  ðáêÝôï âÜóçò äåäïìÝíùí  mysql.
  Õðïóôçñßæåé åíóùìáôùìÝíåò SQL åñùôÞóåéò óôá .HTML áñ÷åßá óáò. Äåßôå ôï
  áíôßóôïé÷ï ôìÞìá óôçí "ÕðïóôÞñéîç ôçò mysql" ãéá ðåñéóóüôåñåò
  ðëçñïöïñßåò.

  16.6.  CGI Redirection


  16.6.1.  Óçìåéþóåéò ãéá ôïí Apache 1.0.x

  Åíáò êáëüò ôñüðïò íá ôñÝîåôå ôï PHP/FI åßíáé ÷ñçóéìïðïéþíôáò Ýíá cgi
  redirection module ìå ôïí Apache server. Ðáñáêáëþ óçìåéþóôå üôé äå
  ÷ñåéÜæåôáé íá áíçóõ÷åßôå ãéá modules áíáêáôåýèõíóçò áí ÷ñçóéìïðïéåßôå
  ôçí Ýêäïóç ôïõ Apache module ôïõ PHP/FI.  ÕðÜñ÷ïõí äýï áðü áõôÜ ôá
  modules áíáêáôåýèõíóçò äéáèÝóéìá. ¸íá áðü áõôÜ áíáðôý÷èçêå áðü ôïí
  Dave Andersen

  ·  angio@aros.net

     êáé åßíáé äéáèÝóéìï óôï

  ·  <ftp://ftp.aros.net/pub/util/apache/mod_cgi_redirect.c>

     êáé ôï Üëëï Ýñ÷åôáé ðáêÝôï ìå ôïí Apache êáé ëÝãåôáé mod_actions.c.
     ÁõôÜ ôá modules åßíáé åîáéñåôéêÜ ðáñüìïéá. ÄéáöÝñïõí åëáöñÜ óôç
     ÷ñÞóç ôïõò. Êáé ôá äýï Ý÷ïõí ôåóôáñéóôåß          êáé äïõëåýïõí ìå
     ôï PHP/FI.

  Äåßôå ôçí ôåêìçñßùóç ôïõ Apache ãéá ôï ðþò ìðïñåßôå íá ðñïóèÝóåôå Ýíá
  module.  ÃåíéêÜ, ðñïóèÝôåôå ôï üíïìá ôïõ module óå Ýíá áñ÷åßï ðïõ
  ïíïìÜæåôáé Configuration.  Ç ãñáììÞ ðïõ ðñÝðåé íá ðñïóèÝóåôå áí èÝëåôå
  íá ÷ñçóéìïðïéÞóåôå ôï module mod_actions åßíáé:

  Module action_module mod_actions.o

  Áí ÷ñçóéìïðïéåßôå ôï module mod_cgi_redirect.c ðñïóèÝóôå áõôÞ ôç
  ãñáììÞ:

  Module cgi_redirect_module mod_cgi_redirect.o


  Óôç óõíÝ÷åéá, ìåôáãëùôôßóôå ôï httpd êáé åãêáôáóôÞóôå ôï. Ãéá íá
  ñõèìßóåôå ôï cgi redirection ÷ñåéÜæåôáé åßôå íá äçìéïõñãÞóåôå Ýíá íÝï
  ôýðï mime óôï áñ÷åßï óáò mime.types åßôå íá ÷ñçóéìïðïéÞóåôå ôçí åíôïëÞ
  AddType óôï áñ÷åßï óáò srm.conf ãéá íá ðñïóèÝóåôå ôïí  mime ôýðï. Ãéá
  íá ðñïóèÝóåôå ôïí ôýðï mime èá ðñÝðåé íá Ý÷åôå êÜôé óáí ôï ðáñáêÜôù:


            application/x-httpd-php phtml




  Áí ÷ñçóéìïðïéåßôå ôï module mod_actions.c, ÷ñåéÜæåôáé íá ðñïóèÝóåôå
  ôçí ðáñáêÜôù ãñáììÞ óôï áñ÷åßï óáò srm.conf :


            Action application/x-httpd-php /cgi-bin/php.cgi




  Áí ÷ñçóéìïðïéåßôå ôï mod_cgi_redirect.c èá ðñÝðåé íá ðñïóèÝóåôå ôçí
  ðáñáêÜôù ãñáììÞ óôï áñ÷åßï srm.conf :


            CgiRedirect application/x-httpd-php /cgi-bin/php.cgi




  Ìçí ÷ñçóéìïðïéÞóåôå ôáõôü÷ñïíá êáé ôá äýï mod_actions.c êáé
  mod_cgi_redirect.c.

  Áöïý Ý÷åôå åãêáôáóôÞóåé Ýíá áðü ôá cgi redirection modules êáé ôá
  ñõèìßóåôå óùóôÜ, èá ìðïñåßôå íá ðñïóäéïñßóåôå üôé èÝëåôå Ýíá áñ÷åßï íá
  ãßíåé parsed áðü ôï php/fi áðëÜ áëëÜæïíôáò ôï extension ôïõ áñ÷åßïõ óå
  .phtml.  ÅðéðëÝïí, áí ðñïóèÝóåôå Ýíá index.phtml óôç ãñáììÞ
  DirectoryIndex ôïõ áñ÷åßïõ óáò srm.conf, ôüôå ç top-level óåëßäá óôïí
  êáôÜëïãï èá ãßíåé áõôüìáôá parsed áðü ôï php áí ôï index áñ÷åßï
  ïíïìÜæåôáé index.phtml.

  16.6.2.  Netscape HTTPD

  Ìðïñåßôå íá áíáêáôåõèýíåôå áõôüìáôá ôéò áéôÞóåéò ãéá áñ÷åßá ìå
  óõãêåêñéìÝíç êáôÜëçîç áñ÷åßïõ  þóôå íá ôá ÷åéñéóôåß ôï PHP/FI ìå ôç
  ÷ñÞóç ôïõ Netscape Server CGI Redirection module. Áõôü ôï module åßíáé
  äéáèÝóéìï óôï "File Archives" óôç óåëßäá ôïõ PHP/FI. Ôï áñ÷åßï README
  ðïõ õðÜñ÷åé ìÝóá óôï ðáêÝôï åîçãåß êáèáñÜ ðþò íá ôï ñõèìßóåôå ãéá
  ÷ñÞóç ìå ôï PHP/FI.

  16.6.3.  NCSA HTTPD

  Ï NCSA äåí õðïóôçñßæåé ðñïò ôï ðáñþí modules, êáé Ýôóé ãéá íá êÜíïõìå
  áíáêáôåýèõíóç cgi ìå ôïí server áõôüí, èá ÷ñåéáóôåßôå íá ôñïðïðïéÞóåôå
  ôïí êþäéêá ôïõ server óáò.  Ìéá äéüñèùóç/ìðÜëùìá (patch) ðïõ ôï êÜíåé
  ãéá ôïí NCSA 1.5 äéáôßèåôáé óôá áñ÷åßá ôïõ site ôïõ PHP/FI.

  16.7.  ÔñÝ÷ïíôáò ôï PHP/FI áðü ôç ãñáììÞ åíôïëþí

  Áí ÷ôßóåôå ôç CGI Ýêäïóç ôïõ PHP/FI, ìðïñåßôå íá ôï ÷ñçóéìïðïéÞóåôå
  áðü ôç ãñáììÞ åíôïëþí áðëÜ ãñÜöïíôáò: php.cgi filename üðïõ ôï
  filename åßíáé ôï áñ÷åßï ðïõ èÝëåôå íá êÜíåôå parse. Ìðïñåßôå íá
  äçìéïõñãÞóåôå åðßóçò standalone PHP/FI scripts ãñÜöïíôáò óôçí ðñþôç
  ãñáììÞ ôïõ script óáò ôï åîÞò:


      #!/usr/local/bin/php.cgi -q




  Ôï "-q" áðáãïñåýåé ôçí åêôýðùóç ôùí HTTP headers. Ìðïñåßôå íá áöÞóåôå
  Ýîù áõôÞ ôçí åðéëïãÞ áí èÝëåôå.

  17.  Äéáóýíäåóç ìå PostgreSQL ìÝóù Python

  Ï Python åßíáé ìßá scripting ãëþóóá, áíôéêåéìåíïóôñáöÞò, óå ìïñöÞ
  ìåôáöñáóôÞ (interpreted).  Åíáò áðëüò óôç ÷ñÞóç (åýêïëç óýíôáîç, áðëÝò
  êáé ðñïöáíåßò äçëþóåéò) êáé Ý÷åé ðïëëÝò åðåêôÜóåéò ãéá ôçí äçìéïõñãßá
  ãñáöéêþí äéáóõíäÝóåùí (GUIs), åðéêïéíùíßá ìå ôï WWW, êëð. Åíáò Ýîõðíïò
  web browser (ôýðïõ HotJava) âñßóêåôáé óå áíÜðôõîç (ÍïÝìâñéïò. 1995)
  êáé áõôü èá áíïßîåé óôïõò ðñïãñáììáôéóôÝò ðïëëÝò ðüñôåò. Ï python
  åßíáé ðíåõìáôéêÞò éäéïêôçóßáò ôïõ Stichting S Mathematisch Centrum,
  Amsterdam. The Neverlands êáé åßíáé åëåýèåñçò áíáäéáíïìÞò.

  Õðïóôçñßæåé äõíáìéêü öüñôùìá áíôéêåéìÝíùí, êëÜóåùí, modules, êáé
  åîáéñÝóåùí (exceptions).  ÐñïöáíÞò åßíáé ç ðñïóèÞêç äéáóõíäÝóåùí ìå
  íÝåò âéâëéïèÞêåò ìÝóù êþäéêá C, ðñÜãìá ðïõ êÜíåé ôïí Python åýêïëá
  êáôÜëëçëï ãéá éäéüìïñöåò ñõèìßóåéò.

  Ï Python åßíáé ìéá  scripting ãëþóóá õøçëïý åðéðÝäïõ ìå X interface.
  Ï Python äéáíÝìåôáé ìå ôá Linux cdroms ðïõ ðåñéëáìâÜíïõí ôá
  ðåñéóóüôåñï óôÜíôáñ Python modules, ìáæß ìå modules ãéá äéáóýíäåóç ìå
  ôï óýíïëï Tix widget ãéá ôçí Tk.

  To PyGreSQL åßíáé Ýíá python interface ãéá ôçí PostgreSQL. Åíóùìáôþíåé
  ôçí âéâëéïèÞêç åñùôÞóåùí PostgreSQL ãéá íá åðéôñÝðåé ôçí åýêïëç ÷ñÞóç
  ôùí ðáíßó÷õñùí äõíáôïôÞôùí ôçò PostgresSQL ìÝóá áðü Python scripts.
  To PyGreSQL ãñÜöôçêå áðü ôïí D'Arcy J.M. Cain êáé ôïí Pascal Andre.


  ·  Íåï site ôçò PyGreSQL  <http://www.druid.net/pygresql/>

  ·  Óõíôçñåßôáé áðü ôïí D'Arcy at  <http://www.druid.net/~darcy/>

  ·  Ôï ðáëéü site åßíáé óôï
     <ftp://ftp.via.ecp.fr/pub/python/contrib/Database/PyGres95.README >

  ·  D'Arcy J.M. Cain darcy@druid.net

  ·  Pascal Andre andre@chimay.via.ecp.fr

  ·  Pascal Andre andre@via.ecp.fr




  17.1.  Ðïý ìðïñþ íá âñù ôï PyGres ;

  Ôá home sites ôùí äéáöïñåôéêþí ðáêÝôùí åßíáé:

  ·  Python
     <ftp://ftp.python.org:/pub/www.python.org/1.5/python1.5b2.tar.gz>

  ·  PyGreSQL  <ftp://ftp.druid.net/pub/distrib/PyGreSQL-2.1.tgz>

  ·  Old site
     <ftp://ftp.via.ecp.fr/pub/python/contrib/Database/PyGres95-1.0b.tar.gz
     >

     Èá ðñÝðåé íá øÜîåôå íá âñåßôå êÜðïéï mirror site êïíôÜ óôçí ðåñéï÷Þ
     óáò. Áíáöåñèåßôå óôá ðëçñïöïñéáêÜ áñ÷åßá  ãéá ôï ðïý èá âñåßôå áõôÜ
     ôá sites. Ôï PyGres95 èá ðñÝðåé íá âñßóêåôáé óôïõò êáôáëüãïõò
     contrib ôùí sites ôùí Python êáé PostgreSQL.

  17.2.  Ðëçñïöïñßåò êáé õðïóôÞñéîç

  Áí ÷ñåéÜæåóôå ðåñéóóüôåñåò ðëçñïöïñßåò ãéá áõôÜ ôá ðáêÝôá,
  åðéóêåöôåßôå ðáñáêáëþ ôá web sites ôïõò:


  ·  Python :      <http://www.python.org/>

  ·  PostgreSQL :
     <http://epoch.cs.berkeley.edu:8000/postgres95/index.html>

  ·  PyGreSQL  <ftp://ftp.druid.net/pub/distrib/PyGreSQL-2.1.tgz>

  ·  Old site PyGreSQL :
     <http://www.via.ecp.fr/via/products/pygres.html>

  Ãéá õðïóôÞñéîç :


  ·  Ëßóôá áëëçëïãñáößáò ãéá PyGreSQL. Ìðïñåßôå íá åããñáöåßôå óôÝëíïíôáò
     ìÞíõìá óôï majordomo@vex.net ìå ôçí ãñáììÞ "subscribe pygresql
     name@domain" óôï óþìá ôïõ ìçíýìáôïò áíôéêáèéóôþíôáò ôï
     "name@domain" ìå ôçí äéêÞ óáò çëåêôñïíéêÞ äéåýèõíóç áëëçëïãñáößáò.

  ·  Newsgroup for Python :     newsgroup comp.lang.python

  ·  PyGreSQL :   åðéêïéíùíÞóôå ìå ôïí Andre óôï andre@via.ecp.fr ãéá
     áíáöïñÝò óöáëìÜôùí, éäåþí, ó÷ïëåßùí

  18.  Åðéêïéíùíßá ìåôáîý PostgreSQL êáé WWW - WDB-P95


  18.1.  Ó÷åôéêÜ ìå ôï wdb-p95

  WDB-P95 - ¸íá Web interface ãéá âÜóåéò PostgreSQL áðü ôïí J. Douglas
  Dunlop Âñßóêåôáé óôï

  ·  ÍÝï WDB áðü ôïí J Rowe âñßóêåôáé óôï
     <http://www.lava.net/beowulf/programming/wdb>

  ·  ÍÝåò åêäüóåéò ôïõ WWW-WDB óôï  <http://www.eol.ists.ca/~dunlop/wdb-
     p95/>

  ·  Ãéá åñùôÞóåéò Þ ãéá åããñáöÞ óôéò Ëßóôåò Áëëçëïãñáößáò,
     åðéêïéíùíÞóôå ìå ôïí dunlop@eol.ists.ca

  Åßíáé ìéá ôñïðïðïéçìÝíç Ýêäïóç ôïõ wdb-1.3a2 ðïõ ðáñÝ÷åé ìéá óýíäåóç
  óôï WWW ãéá ôçí PostgreSQL. ÁõôÞ ç Ýêäïóç áðáéôåß åðßóçò Ýíá Browser
  éêáíü íá ÷åéñßæåôáé ðßíáêåò HTML ãéá ôçí Ýîïäï óå ðßíáêåò (tabular
  output). Áõôü äåí áðáéôåßôáé áðü ôï áñ÷éêü wdb êáé ìðïñåß íá
  åðáíáöåñèåß óôçí ðáëéÜ ìïñöÞ ôïõ ó÷åôéêÜ åýêïëá.

  Ìðïñåßôå íá äïêéìÜóåôå ôá CASI Tape êáé Image Query. Ìðïñåßôå íá
  ñßîåôå ìéá ãñÞãïñç ìáôéÜ óôï Form Definition File (FDF) ðïõ
  ÷ñçóéìïðïßçóá ãéá íá öôéÜîù ôá CASI Tape êáé Image Query åðßóçò, ðïõ
  ðåñéëáìâÜíåé Ýíá JOIN 2 ðéíÜêùí.

  ÁõôÞ ç Ýêäïóç ðåñéÝ÷åé üëá ôá áðáñáßôçôá áñ÷åßá ãéá ôçí åãêáôÜóôáóç
  êáé åêôÝëåóç ôïõ WDB-P95 óáí äéáóýíäåóç ìå ôéò PostgreSQL âÜóåéò óáò.
  Ç ìåôáöïñÜ ôïõ óõóôÞìáôïò óå Üëëç âÜóç èá ðñÝðåé íá åßíáé ó÷åôéêÜ
  åýêïëç - õðü ôçí ðñïûðüèåóç ðùò õðïóôçñßæåé óôÜíôáñ SQL êáé Ý÷åé
  interface óå Perl.

  18.2.  Åßíáé áðáñáßôçôï ï äéáêïìéóôÞò ôçò PostgreSQL, ôï pgperl, êáé
  ôï httpd íá åßíáé óôïí ßäéï host;

  Ï÷é - ï äéáêïìéóôÞò ôçò PostgreSQL äéáêïìéóôÞò äå ÷ñåéÜæåôáé íá åßíáé
  óôï ßäéï host. Ôï WDB-P95 åðåéäÞ êáëåßôáé áðü ôïí http äáßìïíá, ðñÝðåé
  íá åßíáé óôï ßäéï host - êáé êáèþò ôï WDB-P95 ãñÜöôçêå ãéá íá
  ÷ñçóéìïðïéåß ôï Pg.pm - ôï pgperl ðñÝðåé íá åßíáé óôï ßäéï host
  åðßóçò.  Ôï Pgperl ãñÜöôçêå ÷ñçóéìïðïéþíôáò ôç âéâëéïèÞêç libpq, Ýôóé
  ìðïñåß íá Ý÷åé ðñüóâáóç óå ïðïéïäÞðïôå äéáêïìéóôÞ PostgreSQL
  ïðïõäÞðïôå óôï äßêôõï, üðùò ïðïéïóäÞðïôå Üëëïò ðåëÜôçò PostgreSQL.
  ¼ðùò öáßíåôáé ðáñáêÜôù

  (WWW Client (Netscape)) => (HTTP Server (NCSA's http) + WDB-P95 +
  pgperl + libpq)=> (PostgreSQL server)

  Ïé ðáñåíèÝóåéò () áíáðáñéóôïýí ìç÷áíÞìáôá.


  ÊÜèå ìç÷Üíçìá ìðïñåß íá åßíáé äéáöïñåôéêïý ôýðïõ : NT, SUN, HP, ...
  áëëÜ ÷ñåéÜæåóôå ôç âéâëéïèÞêç äéáóýíäåóçò libpq ãéá ôïí ôýðï
  ìç÷áíÞìáôïò ðïõ óêïðåýåôå íá ÷ñçóéìïðïéÞóåôå ôï WDB-P95, ãéá íá
  ìåôáãëùôôßóåôå ôï pgperl. (Ôï óýóôçìá ó÷åäéÜóôçêå ãéá íá ÷ñçóéìïðïéåß
  HTML ðßíáêåò ãé' áõôü åßíáé ðñïôéìüôåñïò Ýíáò ðñüóöáôïò WWW client).


  19.  ÐñïãñáììáôéóôéêÝò äéáóõíäÝóåéò  ãéá "C", "C++", ESQL/C êáé
  Äõáäéêïß ÔåëåóôÝò  ãéá ôçí PostgreSQL


  19.1.  Äéáóýíäåóç ãëþóóáò "C" ìå ôçí PostgreSQL

  ÓõìðåñéëáìâÜíåôáé óôç äéáíïìÞ êáé ïíïìÜæåôáé 'libpq'. Åßíáé ðáñüìïéï
  ìå ôá Oracle OCI, Sybase DB-lib êáé ôéò âéâëéïèÞêåò Informix CLI .


  19.2.  Interface ãëþóóáò "C++" ãéá ôçí  PostgreSQL

  ÓõìðåñéëáìâÜíåôáé óôç äéáíïìÞ êáé ïíïìÜæåôáé 'libpq++'.


  19.3.  ESQL/C ãéá PostgreSQL

  O 'ÅíóùìáôùìÝíïò ðñïìåôáãëùôôéóôÞò C' ãéá ôçí PostgreSQL, ESQL/C åßíáé
  üðùò ôï Oracle Pro*C, êáé ôï Informix ESQL/C. To PostgreSQL ESQL/C
  åßíáé Ýíá ðñïãñáììáôéóôéêü ðåñéâÜëëïí äéáóýíäåóçò (API) ìåSQL, ðïõ
  åðéôñÝðåé óôïí ðñïãñáììáôéóôÞ C íá äçìéïõñãåß åéäéêÝò åöáñìïãÝò ìå
  äõíáôüôçôåò äéá÷åßñéóçò ôçò âÜóçò äåäïìÝíùí. Óáò åðéôñÝðåé íá
  ÷ñçóéìïðïéåßôå ìéá ãëþóóá ôñßôçò ãåíåÜò ìå ôçí ïðïßá åßóáóôå
  åîïéêåéùìÝíïò êáé íá åêìåôáëëåýåóôå ðáñÜëëçëá êáé ôá ðëåïíåêôÞìáôá ôçò
  ÄïìçìÝíçò Ãëþóóáò ÅñùôÞóåùí (SQL).

  To ESQL/C áðïôåëåßôáé áðü ôá ðáñáêÜôù êïììÜôéá ëïãéóìéêïý:

  ·  Ôéò âéâëéïèÞêåò ESQL/C ìå óõíáñôÞóåéò C ðïõ äßíïõí ðñüóâáóç ðñïò
     ôïí äéáêïìéóôÞ ôçò âÜóçò äåäïìÝíùí (database server).

  ·  Ôá áñ÷åßá åðéêåöáëßäùí ôïõ ESQL/C  ðïõ äßíïõí ôïõò ïñéóìïýò ãéá ôéò
     äïìÝò äåäïìÝíùí, ôéò óôáèåñÝò, êáé ìáêñïåíôïëÝò ÷ñÞóéìåò ãéá ôï
     ðñüãñáììá ESQL/C.

  ·  Ï ðñïåðåîåñãáóôÞò ESQL/C, åßíáé Ýíáò ðñïåðåîåñãáóôÞò ðçãáßïõ êþäéêá
     ðïõ ìåôáôñÝðåé Ýíá C áñ÷åßï ðïõ ðåñéÝ÷åé åíôïëÝò SQL óå Ýíá
     åêôåëÝóéìï áñ÷åßï.

     Âñßóêåôáé óôï

  ·  Ç ESQL/C ãéá ôçí PostgreSQL ðåñéëáìâÜíåôáé óôéò äéÜöïñåò äéáíïìÝò.

  ·  Ôï êýñéï site åßíáé  <ftp://ftp.lysator.liu.se/pub/linus>

  ·  Email : linus@epact.se



  19.4.  Äõáäéêïß ÔåëåóôÝò ãéá ôçí PostgreSQL

  Ïé äõáäéêïß ôåëåóôÝò ãñÜöôçêáí áðü ôïí Nicolas Moldavsky

  ·  nico@overnet.com.ar

  Ïé "C" óõíáñôÞóåéò ðïõ õëïðïéïýí ôïõò äõáäéêïýò ôåëåóôÝò (AND, OR,
  XOR, óõìðëÞñùìá ùò ðñïò 2) óå pgsql. Ìðïñåßôå íá ôá êáôåâÜóåôå ìå
  anonymous FTP áðü ôï


  ·  <ftp://ftp.overnet.com.ar/pub/utils/linux/bitpgsql.tgz>

  ÐåñéëáìâÜíåôáé Makefile ãéá Linux.

  20.  Japanese Kanji Êþäéêáò ãéá ôçí PostgreSQL

  Âñßóêåôáé óôï ðáñáêÜôù site

  ·  <ftp://ftp.sra.co.jp/pub/cmd/postgres/>

  21.  ÌåôáöïñÜ ôçò PostgreSQL óå Windows 95/Windows NT

  Ç ìåôáöïñÜ óôá Windows 95/Windows NT åßíáé óå åîÝëéîç.  Ç ìåôáöïñÜ
  ãßíåôáé ÷ñçóéìïðïéþíôáò ôï gcc êáé ôï gmake ãéá Win NT/95. Ãéá íá
  ìåôáãëùôôßóïõìå ôïí ðçãáßï êþäéêá óå win32 ÷ñçóéìïðïéïýìå ôï ðñüãñáììá
  gnu-win32.  Ôï GNU gcc åßíáé äéáèÝóéìï ãéá win32. Ðçãáßíåôå óôï site -

  ·  <http://www.cygnus.com/misc/gnu-win32>

     êáé êáôåâÜóôå ôï áñ÷åßï cdk.exe (áõôï-áðïóõìðéåæüìåíï áñ÷åßï ãéá
     gnu-win32)

  Ç ìåôáöïñÜ ìðïñåß åðßóçò íá ãßíåé ÷ñçóéìïðïéþíôáò ôï áêüëïõèï åñãáëåßï
  "Unix-Emulator on NT" áðü ôï

  ·  <http://www.softway.com>

  22.  Ëßóôåò áëëçëïãñáößáò


  22.1.  ÁðïêôÞóôå Ýíá äùñåÜí ëïãáñéáóìü e-mail

  ÅëÝãîôå ôéò äùñåÜí ðñïóöïñÝò - áðïêôÞóôå äùñåÜí ëïãáñéáóìïýò e-mail
  áðü ôá

  ·  Yahoo  <http://www.yahoo.com> êëéêÜñåôå óôï e-mail

  ·  Lycos  <http://www.lycos.com> êëéêÜñåôå óôïõò íÝïõò ëïãáñéáóìïýò e-
     mail (new email accounts)

  ·  hotmail  <http://www.hotmail.com> êëéêÜñåôå óôïõò íÝïõò
     ëïãáñéáóìïýò e-mail (new email accounts)

     Ãñáöôåßôå óôç ëßóôá áëëçëïãñáößáò ôçò PostgreSQL êáé ôï Yahoo óáò
     äßíåé ôçí åðéðëÝïí äõíáôüôçôá íá äçìéïõñãÞóåôå Ýíá îå÷ùñéóôü öÜêåëï
     ãéá ôá e-mails ôçò PostgreSQL, Ýôóé þóôå ôá íá ìçí áíáêáôþíïíôáé ìå
     ôá Üëëá ðñïóùðéêÜ óáò e-mail. ÅðéëÝîôå ôï ìåíïý Email- > Options- >
     Filters êáé äéáëÝîôå îå÷ùñéóôü öÜêåëï ãéá email.  Ìå áõôü ôï
     ëïãáñéáóìü e-mail ìðïñåßôå íá ðáßñíåôå Þ íá óôÝëíåôå mail áðü
     ïðïõäÞðïôå óôïí êüóìï åöüóïí Ý÷åôå ðñüóâáóç óå web óåëßäá.

  Áí Ý÷åôå êÜðïéï Üëëï e-mail, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôçí åðéëïãÞ
  "Mail Filters" ãéá íá ëáìâÜíåôå áõôüìáôá ôá mails ôçò PostgreSQL óå
  îå÷ùñéóôü öÜêåëï. Ìå áõôü ôïí ôñüðï ôá mails óáò åßíáé êáëýôåñá
  ïñãáíùìÝíá êáé áðïöåýãåôå êáé ôï áíáêÜôåìá ôoõò.

  22.2.  ÁããëéêÞ Ëßóôá Áëëçëïãñáößáò

  Äåßôå ôéò Ëßóôåò Áëëçëïãñáößáò óôçí êåíôñéêÞ óåëßäá óôï web óôï :

  ·  <http://www.postgresql.org/>

  ·  ÅñùôÞóåéò ìÝóù Email óôï: pgsql-questions@postgresql.org

  ·  Developers pgsql-hackers@postgresql.org

  ·  Port specific questions pgsql-ports@postgresql.org

  ·  Documentation questions pgsql-docs@postgresql.org

     Èá ëÜâåôå áðáíôÞóåéò ìÝóù e-mail óå ëéãüôåñï áðü ìßá ìÝñá!!

  Ìðïñåßôå íá ãñáöôåßôå åðßóçò óå ëßóôåò áëëçëïãñáößáò.  Äåßôå åðßóçò ôï
  ðáñáðÜíù ôìÞìá 'ÁðïêôÞóôå Ýíá äùñåÜí ëïãáñéáóìü e-mail'.  Ãéá íá
  ãñáöôåßôå Þ íá îåãñáöôåßôå áðü ìéá ëßóôá, óôåßëôå mail óôá

  ·  pgsql-questions-request@postgresql.org

  ·  pgsql-hackers-request@postgresql.org

  ·  pgsql-ports-request@postgresql.org

  ·  pgsql-docs-request@postgresql.org

     Ôï êõñßùò ôìÞìá (body) ôïõ ìçíýìáôïò èá ðåñéÝ÷åé ìüíï ôçí áêüëïõèç
     ãñáììÞ

  subscribe

  (Þ)

  unsubscribe

  22.3.  Áñ÷åßï ôçò Ëßóôáò Áëëçëïãñáößáò

  Êñáôåßôáé áñ÷åßï ôùí ëéóôþí áëëçëïãñáößáò óå html ìïñöÞ óôéò ðáñáêÜôù
  äéåõèýíóåéò -

  ·  ÄéáèÝóéìç ëßóôá ìå âÜóç ôéò äéåõèýíóåéò ìÝóù MHonarc êáé WWW óôï
     <http://www.postgresql.org/mhonarc/pgsql-questions>

  ·  <ftp://ftp.postgresql.org> óôïí êáôÜëïãï /pub/majordomo

  22.4.  ÉóðáíéêÞ Ëßóôá Áëëçëïãñáößáò

  ÕðÜñ÷åé ôþñá êáé ìéá "áíåðßóçìç" ëßóôá ãéá ôçí postgreSQL óôá
  éóðáíéêÜ.  Äåßôå åðßóçò ôï ðáñáðÜíù ôìÞìá 'ÄùñåÜí Ëïãáñéáóìüò ãéá íá
  ïñãáíþóåôå ôá e-mails ôçò PostgreSQL' .  Ãéá íá åããñáöåßôå, ðñÝðåé íá
  óôåßëåôå Ýíá ìÞíõìá óôï:

  ·  majordomo@tlali.iztacala.unam.mx

     Ôï êõñßùò ôìÞìá (body) ôïõ ìçíýìáôïò èá ðåñéÝ÷åé ìüíï ôçí áêüëïõèç
     ãñáììÞ:

  inscripcion pgsql-ayuda

  23.  Ôåêìçñßùóç êáé Âéâëéïãñáößá


  23.1.  Ïäçãïß åêìÜèçóçò êáé Åã÷åéñßäéá

  Ôá ðáñáêÜôù óõìðåñéëáìâÜíïíôáé óôç äéáíïìÞ ôçò PostgreSQL óå ìïñöÞ
  postscript êáé óå unix óåëßäåò âïçèåßáò (man-pages).  Áí Ý÷åôå
  ðñüóâáóç óôï internet, ìðïñåßôå íá âñåßôå ôá êåßìåíá ðïõ áíáöÝñïíôáé
  ðáñáêÜôù óôï  <http://www.postgresql.org/docs>


  ·  "Ïäçãüò ÅãêáôÜóôáóçò"

  ·  "Ïäçãüò ÷ñÞóçò" ãéá ôçí PostgreSQL

  ·  "Ïäçãüò áíÜðôõîçò-õëïðïßçóçò" ìå ëåðôïìÝñåéåò ãéá ôéò åóùôåñéêÝò
     ëåéôïõñãßåò ôçò PostgreSQL.

  ·  Online åã÷åéñßäéá.

  ·  Online åã÷åéñßäéá óå HTML ìïñöÞ.

  ·  Åðßóçò, åã÷åéñßäéá óå ìïñöÞ Postscript ãéá åêôýðùóç.

  23.2.  Online Ôåêìçñßùóç


  ·  Ëßóôá êáé ðåñéãñáöÞ ôùí ðñïêáèïñéóìÝíùí ôýðùí äåäïìÝíùí êáé
     ôåëåóôþí


       Åßíáé ôìÞìá ôùí åíôïëþí PSQL óôçí Ýêäïóç 6.4.




  ·  Ëßóôá ôùí õðïóôçñéæüìåíùí SQL ëÝîåùí êëåéäéÜ (keywords)


       ÕðÜñ÷åé Ýíá script óôïí êáôÜëïãï /tools ãéá íá ôï êÜíåôå áõôü




  ·  Ëßóôåò ôùí õðïóôçñéæüìåíùí åíôïëþí -


       ×ñçóéìïðïéÞóôå ôçí åíôïëÞ psql \h




  ·  ÂáóéêÝò Ýííïéåò ó÷åóéáêÞò âÜóçò äåäïìÝíùí ãéá PostgreSQL
     (õëïðïßçóç) êáé áñêåôÜ online ðáñáäåßãìáôá (åñùôÞóåéò) -


       ÊïéôÜîôå óôá regression tests óôï src/test. Åêåß èá âñåßôå ôïõò êáôáëüãïõò
       regress/sql êáé suite/*.sql.




  ·  Ïäçãüò åêìÜèçóçò ãéá ôçí PostgreSQL.


       Èá âñåßôå SQL scripts ãéá åêìÜèçóç ôçò SQL óôïí êáôÜëïãï src/tutorial




  Äåßôå åðßóçò ôï "Ïäçãüò åêìÜèçóçò SQL ãéá áñ÷Üñéïõò" óôï Appendix B
  áõôïý ôïõ êåéìÝíïõ ``''

  23.3.  ×ñÞóéìç Âéâëéïãñáößá ÁíáöïñÜò


  ·  "Understanding the New SQL: A Complete Guide" - áðü ôïõò Jim Melton
     êáé Alan R.Simon


       Ôï Morgan Kaufman Publisher åßíáé Ýíá áðü ôá êáëýôåñá âéâëßá ãéá SQL. Áó÷ïëåßôáé ìå ôçí SQL92.




  ·  "A Guide to THE SQL STANDARD" - áðü ôïí C.J.Date


       Ç åôáéñåßá Addison-Wesley Publishing Ý÷åé åðßóçò ðïëý êáëÜ âéâëßá. Ðïëý äçìïöéëÞ âéâëßá ãéá SQL.




  ·  SQL - The Standard Handbook,  ÍïÝìâñéïò 1992


       Stephen Cannan êáé Gerard Otten
       McGraw-Hill Book Company Europe , Berkshire, SL6 2QL, England




  ·  SQL Instant Reference, 1993


       Martin Gruber, Technical Editor: Joe Celko
       SYBEX Inc.  2021 Challenger Drive Alameda, CA 94501




  ·  C.J.Date, "An introduction to Database Systems" (6th Edition),
     Addison-Wesley, 1995, ISBN 0-201-82458-2


       Áõôü ôï âéâëßï åßíáé ç Âßâëïò ôçò Äéá÷åßñéóçò ÓõóôçìÜôùí âÜóåùí ÄåäïìÝíùí.
       ÐåñéÝ÷åé ðëçñïöïñßåò ãéá êáíïíéêïðïßçóç, SQL, recovery, concurrency, áóöÜëåéá,
       integrity, êáé extensions óôï áñ÷éêü ó÷åóéáêü ìïíôÝëï, ôñÝ÷ïíôá èÝìáôá
       üðùò client/server óõóôÞìáôá êáé ÁíôéêåéìåíïóôñáöÞ ìïíôÝëá. ÐïëëÝò
       áíáöïñÝò óõìðåñéëáìâÜíïíôáé ãéá üóïõò èÝëïõí íá ìÜèïõí ðåñéóóüôåñá. Ôï óõíéóôïýìå óôïõò ðåñéóóüôåñïõò ÷ñÞóôåò.




  ·  Stefan Stanczyk, "Theory êáé Practice of Relational Databases", UCL
     Press Ltd, 1990, ISBN 1-857-28232-9


  ÐåñéÝ÷åé ëåðôïìÝñåéåò ìå èåùñßá ó÷åóéáêþí âÜóåùí, ó÷åóéáêÞ Üëãåâñá, calculus
  êáé êáíïíéêïðïßçóç. ÁëëÜ äåí êáëýðôåé èÝìáôá ôïõ ðñáãìáôéêïý êüóìïõ êáé ðáñáäåßãìáôá ðéï óýíèåôá. Ôï óõíéóôïýìå óôïõò ðåñéóóüôåñïõò ÷ñÞóôåò.




  ·  "The Practical SQL Handbook" Ôñßôç ¸êäïóç, Addison Wesley
     Developers Press ISBN 0-201-44787-8


       Ôï óõíéóôïýìå óôïõò ðåñéóóüôåñïõò ÷ñÞóôåò.




  ·  Michael Stonebraker, "Readings in Database Systems", Morgan
     Kaufmann, 1988, ISBN 0-934613-65-6


       Ôï âéâëßï åßíáé ìéá óõëëïãÞ áðü ÷áñôéÜ ðïõ Ý÷ïõí äçìïóéåõôåß üëá ôá ÷ñüíéá ó÷åôéêÜ ìå âÜóåéò. Äåí åßíáé ãéá ôïí áðëü ÷ñÞóôç áëëÜ åßíáé ìéá êáëÞ áíáöïñÜ ãéá ðñï÷ùñçìÝíïõò (ìåôáðôõ÷éáêïýò) öïéôçôÝò Þ ðñïãñáììáôéóôÝò óõóôçìÜôùí âÜóåùí äåäïìÝíùí.




  ·  C.J.Date, "Relational Database - Selected Readings", Addison-
     Wesley, 1986, ISBN 0-201-14196-5


       Ôï âéâëßï åßíáé ìéá óõëëïãÞ áðü ÷áñôéÜ ðïõ Ý÷ïõí äçìïóéåõôåß üëá ôá ÷ñüíéá ó÷åôéêÜ ìå âÜóåéò. Äåí åßíáé ãéá ôïí áðëü ÷ñÞóôç áëëÜ åßíáé ìéá êáëÞ áíáöïñÜ ãéá ðñï÷ùñçìÝíïõò (ìåôáðôõ÷éáêïýò) öïéôçôÝò Þ ðñïãñáììáôéóôÝò óõóôçìÜôùí âÜóåùí äåäïìÝíùí.




  ·  Nick Ryan êáé Dan Smith, "Database Systems Engineering",
     International Thomson Computer Press, 1995, ISBN 1-85032-115-9


       Áõôü ôï âéâëßï Ý÷åé ëåðôïìÝñåéåò ãéá ìåèüäïõò ðñüóâáóçò, êáé ôå÷íéêÝò áðïèÞêåõóçò.




  ·  Bipin C. Desai, "An introduction to Database Systems", West
     Publishing Co., 1990, ISBN 0-314-66771-7


       Äåí åßíáé ãéá ôïí áðëü ÷ñÞóôç áëëÜ åßíáé ìéá êáëÞ áíáöïñÜ ãéá ðñï÷ùñçìÝíïõò (ìåôáðôõ÷éáêïýò) öïéôçôÝò Þ ðñïãñáììáôéóôÝò óõóôçìÜôùí âÜóåùí äåäïìÝíùí.




  ·  Joe Celko "INSTANT SQL Programming"


       Wrox Press Ltd.
       Unit 16, 20 James Road, Tyseley
       Birmingham, B11 2BA, England
       1995




  ·  Michael Gorman "Database Management Systems: Understanding êáé
     Applying Database"


  Technology
  QED êáé John Wiley
  1991




  ·  Michael Gorman "Enterprise Database for a Client/Server
     Environment" QED êáé John Wiley


       ÐáñïõóéÜæåé ôéò áðáéôÞóåéò ãéá íá öôéÜîåôå client/server åöáñìïãÝò âÜóåùí
       ìÝóù repository ìåôáìïíôÝëùí  êáé ôçò ÷ñÞóçò ANSI óôÜíôáñ SQL
       1993




  ÅêáôïíôÜäåò Üëëïé ôßôëïé åßíáé äéáèÝóéìïé ãéá SQL ! ÊïéôÜîôå óôá
  âéâëéïðùëåßá.

  23.4.  Êåßìåíá ðñïäéáãñáöþí ANSI/ISO SQL  - SQL 1992, SQL 1998

  Ìðïñåßôå íá âñåßôå êåßìåíá ðñïäéáãñáöþí ANSI/ISO SQL  óôá ðáñáêÜôù
  sites -

  ·  <http://www.naiua.org/std-orgs.html>

  ·  <http://www.ansi.org/docs> êáé êëéêÜñåôå óôï áñ÷åßï cat_c.html êáé
     øÜîôå ãéá "Database SQL"

  ·  SQL92 standard  <http://www.jcc.com> êáé êëéêÜñåôå óôï áñ÷åßï
     sql_stnd.html

  ·  ANSI/ISO SQL ðñïäéáãñáöÝò
     <http://www.contrib.andrew.cmu.edu/~shadow/sql.html> Åäþ èá âñåßôå
     åã÷åéñßäéï ãéá SQL.

  23.5.  Óýíôáîç ANSI/ISO SQL 1992

  Äåßôå ôï Appendix A áõôïý ôïõ êåéìÝíïõ ``''

  23.6.  Óýíôáîç ANSI/ISO SQL 1998

  Ïé ðñïäéáãñáöÝò SQL 1998 (SQL 3) åßíáé áêüìç õðü áíÜðôõîç.  Äåßôå ôï
  'Electronic Access to the SQL3 Working Draft' áõôïý ôïõ êåéìÝíïõ óôï
  ``''

  23.7.  Ïäçãüò åêìÜèçóçò SQL ãéá áñ÷Üñéïõò

  Äåßôå ôï  Appendix B áõôïý ôïõ êåéìÝíïõ ``''

  23.8.  ÐñïóùñéíÞ åðÝêôáóç (extension) óôï SQL92


  ·  Êåßìåíï ãéá ðñïóùñéíÞ åðÝêôáóç SQL-92
     <ftp://FTP.cs.arizona.edu/tsql/tsql2/>

  ·  ÐñïóùñéíÝò ðñïäéáãñáöÝò SQL-3
     <ftp://FTP.cs.arizona.edu/tsql/tsql2/sql3/>

  Ï êáôÜëïãïò ðåñéÝ÷åé ôéò ðñïäéáãñáöÝò ôçò ãëþóóáò ãéá ôçí ðñïóùñéíÞ
  åðÝêôáóç óôç óôÜíôáñ ãëþóóá SQL-92. ÁõôÞ ç íÝá ãëþóóá ïíïìÜæåôáé
  TSQL2.


  Ïé ðñïäéáãñáöÝò ôçò ãëþóóáò ðïõ ðáñïõóéÜæïíôáé åäþ åßíáé ç ôåëéêÞ
  Ýêäïóç ôçò ãëþóóáò.

  Ç áëëçëïãñáößá ìðïñåß íá óôáëåß óôïí ðñüåäñï ôïõ TSQL2 Language Design
  Committee, Richard T.Snodgrass, Department of Computer Science,
  University of Arizona, Tucson, AZ 85721,

  ·  rts@cs.arizona.edu

     Ïé èõãáôñéêÝò êáé ïé äéåõèýíóåéò e-mail ôùí ìåëþí ôïõ TSQL2
     Language Design Committee ìðïñïýí íá âñåèïýí óå îå÷ùñéóôü ôìÞìá óôï
     ôÝëïò ôùí ðñïäéáãñáöþí ôçò ãëþóóáò.

  Ôá ðåñéå÷üìåíá áõôïý ôïõ êáôáëüãïõ åßíáé üðùò ðáñïõóéÜæïíôáé ðáñáêÜôù.

  spec.dvi,.ps    ÐñïäéáãñáöÝò Ãëþóóáò TSQL2, åêäüèçêå ôï ÓåðôÝìâñéï ôïõ
  1994

  bookspec.ps     ÐñïäéáãñáöÝò ôçò Ãëþóóáò TSQL2, üðùò åìöáíßóôçêáí óôï
  âéâëßï TSQL2, ðïõ åêäüèçêå ôï ÓåðôÝìâñéï ôïõ 1995 (äåßôå ðáñáêÜôù).

  sql3            áëëáãÞ ôùí ðñïôÜóåùí ðïõ õðïâëÞèçêáí óôéò åðéôñïðÝò
  ANSI êáé ISO SQL3.

  Ìáæß ìå ôéò ðñïäéáãñáöÝò ôçò ãëþóóáò Ý÷åé óõó÷åôéóôåß ìéá óõëëïãÞ áðü
  ó÷üëéá ðïõ áöïñïýí óå áðïöÜóåéò ó÷åäéáóìïý, ðáñï÷Þ ðáñáäåéãìÜôùí, êáé
  áðüøåéò ãéá ôï ðþò ìðïñåß íá õëïðïéçèåß ç ãëþóóá. ÁõôÜ ôá ó÷üëéá Þôáí
  áñ÷éêÜ ðñïôÜóåéò óôçí åðéôñïðÞ ôïõ TSQL2 Language Design. Ôþñá
  åîõðçñåôïýí Ýíá óõãêåêñéìÝíï óêïðü: íá ðáñÝ÷ïõí ðáñáäåßãìáôá ôïõ üôé
  Ý÷åé öôéá÷ôåß, ùèÞóïõí ôéò ðïëëÝò áðïöÜóåéò ðïõ ðÜñèçêáí êáôÜ ôï
  ó÷åäéáóìü ôçò ãëþóóáò, êáé íá óõãêñßíïõí ôçí TSQL2 ìå ðïëëÝò Üëëåò
  ðñïôÜóåéò ôçò ãëþóóáò ðïõ Ý÷ïõí ãßíåé ôá ôçí ôåëåõôáßá äåêáðåíôáåôßá.
  Èá ðñÝðåé íá äïèåß Ýìöáóç üôé áõôÜ ôá ó÷üëéá äåí åßíáé ôìÞìá ôùí
  ðñïäéáãñáöþí ôçò ãëþóóáò TSQL2, áëëÜ ôç óõìðëçñþíïõí êáé áíáðôýóóïõí
  ìå âÜóç áõôÜ. Ïé êáôÜëëçëåò ðñïäéáãñáöÝò ôçò ãëþóóáò åßíáé ç ôåëåõôáßá
  ëÝîç óôçí TSQL2.

  Ôá ó÷üëéá, ìáæß ìå ôéò ðñïäéáãñáöÝò ôçò ãëþóóáò , áñêåôïß äåßêôåò
  (indexes), êáé Üëëï õëéêü õðïóôÞñéîçò, Ý÷ïõí åêäïèåß óå Ýíá âéâëßï:

  Snodgrass, R.T., editor, The TSQL2 Temporal Query Language, Kluwer
  Academic Publishers, 1995, 674+xxiv óåëßäåò.

  Ïé êñéôéêÝò åìöáíßæïíôáé óôï âéâëßï óå ìéá óõíôïìåõìÝíç ìïñöÞ. Ïé
  êñéôéêÝò ðáñÝ÷ïíôáé ðëÞñåéò óå áõôüí êáôÜëïãï óôï áñ÷åßï eval.ps

  Ôï áñ÷åßï tl2tsql2.pl åßíáé Ýíá ðñüãñáììá óå prolog ðïõ ìåôáöñÜæåé ôçí
  åðéôñåðüìåíç ðñïóùñéíÞ ëïãéêÞ óå TSQL2. Áõôü ôï ðñüãñáììá ãñÜöôçêå áðü
  ôïí Michael Boehlen

  ·  boehlen@iesd.auc.dk

     Ìðïñåßôå íá åðéêïéíùíÞóåôå ìáæß ôïõ ãéá Ýíá paper ðïõ ðåñéãñÜöåé
     áõôÞ ôç ìåôÜöñáóç.  Áõôü åßíáé ìÜëëïí ìéá dated Ýêäïóç ôïõ
     ðñïãñÜììáôïò. Íåþôåñåò åêäüóåéò åßíáé äéáèÝóéìåò óôï

  ·  <http://www.cs.auc.dk/general/DBS/tdb/TimeCenter/Software>

     (ôá óõóôÞìáôá TimeDB êáé Tiger).

  23.9.  ÔìÞìá 0 - Áðïêôþíôáò ôá êåßìåíá ISO/ANSI SQL

  Áõôü ôï  êåßìåíï óáò äåß÷íåé ðþò íá áðïêôÞóåôå (íüìéìá) Ýíá áíôßãñáöï
  ôïõ ðñïôýðïõ SQL-92 êáé ôïõ "ôñÝ÷ïíôïò" SQL3 Working Draft.


  Óôï ANSI ðñüôõðï Ý÷åé ðíåõìáôéêÜ äéêáéþìáôá ç ANSI, óôï ðñüôõðï ISO ç
  ISO.

  ÕðÜñ÷ïõí äýï (2) ôñÝ÷ïíôá ðñüôõðá SQL, ç äçìïóßåõóç ANSI êáé ç
  äçìïóßåõóç ISO. Ôá äýï áõôÜ ðñüôõðá åßíáé ïëüéäéá ëÝîç ðñïò ëÝîç åêôüò
  áðü ôåôñéììÝíá æçôÞìáôá üðùò ï ôßôëïò ôïõ êåéìÝíïõ, ïé åðéêåöáëßäåò
  ôçò óåëßäáò,      ç öñÜóç "International Standard" áíôß ãéá "American
  Standard", êáé ëïéðÜ.

  ÁãïñÜæïíôáò ôï ðñüôõðï SQL-92

  Ôï ðñüôõðï ISO standard, ISO/IEC 9075:1992, Information Technology -
  Database Languages - SQL, åßíáé äéáèÝóéìï (ÌÜñôéïò, 1993) óôï ANSI :


            American National Standards Institute
            1430 Broadway
            New York, NY 10018 (USA)
            Phone (sales): +1.212.642.4900




  êáé êïóôßæåé US$230.00. H ANSI Ýêäïóç, ANSI X3.135-1992, American
  National Standard ãéá ÓõóôÞìáôá Ðëçñïöïñéþí - Database Language SQL,
  äåí Þôáí äéáèÝóéìï ðñïò ðþëçóç üôáí ãñÜöôçêå áõôü ôï êåßìåíï, áëëÜ
  áíáìåíüôáí íá åßíáé äéáèÝóéìï ìåôáîý ôÝëç Ìáñôßïõ êáé áñ÷Ýò Ìáúïõ,
  1993). Ôï êüóôïò ôïõ áíáìÝíåôáé ãýñù óôá US$225.00.

  Áí áãïñÜóåôå êÜðïéï áðü ôá êåßìåíá áðü ôï ANSI, èá Ý÷åôå Ýîôñá ÷ñÝùóç
  ãéá Ýîïäá ìåôáöïñÜò 7% åðéðñüóèåôá (äçëáäÞ, ðåñßðïõ US$9.10). Ãéá
  ÷þñåò åîùôåñéêïý ôá Ýîïäá ìåôáöïñÜò èá åßíáé áíáìößâïëá áêüìç
  ðåñéóóüôåñá. Ôï ANSI áðáéôåß êÜèå ðáñáããåëßá íá óõíïäåýåôáé áðü Ýíá
  ÷áñôß ðáñáããåëßáò ôçò åôáéñåßáò. ÅíáëëáêôéêÜ, ìðïñåßôå íá óôåßëåôå Ýíá
  ôóåê áìåñéêÜíéêçò ôñÜðåæáò Þ óå áìåñéêÜíéêá äïëÜñéá, ôá ïðïßá èá
  ìåôñçèïýí ðñéí íá óôáëèåß ç ðáñáããåëßá óáò. (ÕðÜñ÷åé ìéá åîáßñåóç: áí
  ç åôáéñåßá óáò åßíáé åíóùìáôùìÝíï ìÝëïò ôïõ ANSI, ôüôå ôï ANSI èá óáò
  óôåßëåé ôá êåßìåíá êáé èá ÷ñåþóåé ôçí åôáéñåßá óáò.)

  Ôï ðñüôõðï ISO åßíáé åðßóçò äéáèÝóéìï åêôüò ÁìåñéêÞò áðü åèíéêÜ ôïðéêÜ
  ôìÞìáôá (ôìÞìáôá ðñïôõðïðïßçóçò áíÜ ÷þñá) ðïõ åßíáé ìÝëç åßôå ôïõ ISO
  (ÄéåèíÞò Ïñãáíéóìüò Ôõðïðïßçóçò - International Organization for
  Standardization) Þ ôïõ IEC (ÄéåèíÞò Çëåêôñïôå÷íéêÞ ÅðéôñïðÞ -
  International Electrotechnical Commission).

  Áíôßãñáöá ôçò ëßóôá ôùí åèíéêþí ôìçìÜôùí êáé ïé äéåõèýíóåéò ôïõò åßíáé
  äéáèÝóéìåò áðü ôï ANSI Þ áðü Üëëá åèíéêÜ ôìÞìáôá. Åßíáé åðßóçò
  äéáèÝóéìá áðü ôï ISO:


            International Organization for Standardization
            Central Secretariat
            1, rue de Varembi
            CH-1211 Genhve 20
            Switzerland




  Áí ðñïôéìÜôå íá ðáñáããåßëåôå ôï ðñüôõðï ìå ðéï âïëéêü êáé ãñÞãïñï
  ôñüðï, èá ðñÝðåé íá ðëçñþóåôå ãéá íá Ý÷åôå áõôü ôï ðñïíüìéï. Ìðïñåßôå
  íá ðáñáããåßëåôå ôï ISO/IEC 9075:1992, Information Technology -
  Database Languages - SQL, áðü ôï:



       Global Engineering Documents
       2805 McGaw Ave
       Irvine, CA 92714 (USA)
       USA
       ÔçëÝöùíï (áðü ïðïéáäÞðïôå ðåñéï÷Þ): +1.714.261.1455
       ÔçëÝöùíï (ìüíï ãéá ÁìåñéêÞ): (800)854-7179




  êáé êïóôßæåé US$308.00. Äå îÝñù áí óå áõôÞ ôçí ôéìÞ óõìðåñéëáìâÜíïíôáé
  ôá Ýîïäá áðïóôïëÞò Þ ü÷é, áëëÜ õðïèÝôù üôé ç áðïóôïëÞ óôï åîùôåñéêü
  (ôïõëÜ÷éóôïí) èá êïóôßæåé ðåñéóóüôåñï. Ìðïñïýí íá óáò óôåßëïõí ôï
  êåßìåíï áñêåôÜ ãñÞãïñá êáé äÝ÷ïíôáé êáé ôéò "ðéï ãíùóôÝò ðéóôùôéêÝò
  êÜñôåò".  Ôï Global äåí Ý÷åé áêüìç ôçí ANSI Ýêäïóç ïýôå Ý÷ïõí ôéìÞ Þ
  ìéá áíáìåíüìåíç çìåñïìçíßá (áí êáé ôçí ðåñéìÝíù üôé óå ìåñéêÝò
  åâäïìÜäåò ìåôÜ ôç äçìïóßåõóç ôïõ ANSI êáé ìå ôéìÞ ãýñù óôá
  US$300.00).

  ÁãïñÜæïíôáò Ýíá áíôßãñáöï ôïõ SQL3 Working Draft

  Ìðïñåßôå íá áãïñÜóåôå ìéá åêôýðùóç ôïõ SQL3 working draft áðü ôï ANSI
  X3 Secretariat, CBEMA (Computer êáé Business Equipment Manufacturers
  Association). ÓõíÞèùò äéáèÝôïõí ôéò "ðéï ðñüóöáôåò åêäüóåéò" ôïõ SQL3
  working draft êáé ôéò ðùëïýí áðü US$60.00 ìÝ÷ñé US$65.00.  Ìðïñåßôå íá
  åðéêïéíùíÞóåôå ìå ôï CBEMA óôï:


            CBEMA, X3 Secretariat
            Attn: Lynn Barra
            1250 Eye St.
            Suite 200
            Washington, DC 20005 (USA)




  Ìðïñåßôå íá åðéêïéíùíÞóåôå ìå ôç Lynn Barra ôçëåöùíéêþò óôï
  +1.202.626.5738 ãéá íá æçôÞóåôå Ýíá áíôßãñáöï, áí êáé ôï mail åßíáé
  ðñïôéìüôåñï.

  ÇëåêôñïíéêÞ ðñüóâáóç óôï SQL3 Working Draft

  Ç ðéï ðñüóöáôç Ýêäïóç (ôç óôéãìÞ ôçò óõããñáöÞò ôïõ êåéìÝíïõ) ôïõ SQL3
  (êáé ãéá ANSI êáé ISO) working draft (êáé üëá ôá ôìÞìáôÜ ôïõ) åßíáé
  äéáèÝóéìç ìå "anonymous ftp" Þ ìå "ftpmail" áðü ôï:


            gatekeeper.dec.com

         óôï êáôÜëïãï

            /pub/standards/sql/




  Óå áõôüí ôïí êáôÜëïãï õðÜñ÷ïõí ðïëëÜ áñ÷åßá.  ÕðÜñ÷ïõí áñ÷åßá
  PostScript êáé "plain text" (ü÷é áðáñáßôçôá öïñìáñéóìÝíá, áëëÜ
  äéáâÜæïíôáé óå ìéá ïèüíç ÷ùñßò éäéáßôåñï ëïãéóìéêü).

  ÃåíéêÜ, ìðïñåßôå íá âñåßôå áñ÷åßá ìå ïíüìáôá üðùò:




       sql-bindings-mar94.ps
       sql-bindings-mar94.txt
       sql-cli-mar94.ps
       sql-cli-mar94.txt
       sql-foundation-mar94.ps
       sql-foundation-mar94.txt
       sql-framework-mar94.ps
       sql-framework-mar94.txt
       sql-psm-mar94.ps
       sql-psm-mar94.txt




  Êáèþò ðáñÜãïíôáé íÝåò åêäüóåéò ôùí êåéìÝíùí, ôï "mar94" èá áëëÜæåé ãéá
  íá äåßîåé ôç íÝá çìåñïìçíßá ôçò äçìïóßåõóçò (ð.÷., "aug94" åßíáé ç
  áíáìåíüìåíç çìåñïìçíßá ôçò åðüìåíçò äçìïóßåõóçò ìåôÜ ôï "mar94").

  Åðßóçò, ãéá ôïõò áíáãíþóôåò ðïõ äåí ìðïñïýí íá Ý÷ïõí ìéá ëßóôá ôïõ
  êáôáëüãïõ ìå FTP, Ý÷ïõìå ôïðïèåôÞóåé óôïí ßäéï êáôÜëïãï Ýíá áñ÷åßï ìå
  ôï üíïìá:


            ls




  Áõôü ôï áñ÷åßï (Ýêðëçîç!) ðåñéÝ÷åé ôç ëßóôá ôïõ êáôáëüãïõ.

  Áíáêôþíôáò Áñ÷åßá êáôåõèåßáí ìå ÷ñÞóç ôïõ ftp

  Áõôü åßíáé Ýíá ðáñÜäåéãìá ãéá ôï ðþò íá ÷ñçóéìïðïéåßôå ôï FTP.
  ÓõãêåêñéìÝíá, äåß÷íåé ðþò íá óõíäåèåßôå óôï gatekeeper.dec.com, íá
  ðÜôå óôïí êáôÜëïãï üðïõ öõëÜóóåôáé ôï âáóéêü êåßìåíï, êáé íá
  ìåôáöÝñåôå ôï êåßìåíï óôï ìç÷ÜíçìÜ óáò. Óçìåéþóôå üôé ôï ìç÷ÜíçìÜ óáò
  ðñÝðåé íá Ý÷åé ðñüóâáóç óôï Internet ãéá íá ôï êÜíåôå áõôü. Ôï login
  åßíáé 'ftp' êáé ï êùäéêüò åßíáé ç email äéåýèõíóÞ óáò (áõôü åßíáé
  ãíùóôü êáé óáí áíþíõìï ftp 'anonymous ftp'). Ç åíôïëÞ 'type binary'
  ÷ñçóéìïðïéåßôáé ãéá íá óéãïõñÝøåôå üôé äå èá ÷Üóåôå êÜðïéá bits áðü
  ôï(á) áñ÷åßï(á) ðïõ èá ëÜâåôå. H 'get' êáôåâÜæåé Ýíá áñ÷åßï ôç öïñÜ.
  Ôá ó÷üëéá óôï ðáñáêÜôù script åßíáé ìÝóá óå angle brackets < óáí áõôÜ
  > .























    % ftp gatekeeper.dec.com
    Connected to gatekeeper.dec.com.
    220- *** /etc/motd.ftp ***
         Gatekeeper.DEC.COM is an unsupported service of DEC Corporate Research.
         <...this goes on for a while...>
    220 gatekeeper.dec.com FTP server (Ýêäïóç 5.83 Sat ... 1992) ready.
    Name (gatekeeper.dec.com:<yourlogin here>): ftp  <anonymous also works>
    331 Guest login ok, send ident as password.
    Password: <enter your email address here >
    230 Guest login ok, access restrictions apply.
    Remote system type is UNIX.  <or whatever>
    Using binary mode to transfer files.
    ftp> cd pub/standards/sql
    250 CWD command successful.
    ftp> dir
    200 PORT command successful.
    150 Opening ASCII mode data connection for /bin/ls.
    total 9529
    -r--r--r--  1 root     system     357782 Feb 25 10:18 x3h2-93-081.ps
    -r--r--r--  1 root     system     158782 Feb 25 10:19 x3h2-93-081.txt
    -r--r--r--  1 root     system     195202 Feb 25 10:20 x3h2-93-082.ps
    -r--r--r--  1 root     system      90900 Feb 25 10:20 x3h2-93-082.txt
    -r--r--r--  1 root     system    5856284 Feb 25 09:55 x3h2-93-091.ps
    -r--r--r--  1 root     system    3043687 Feb 25 09:57 x3h2-93-091.txt
    226 Transfer complete.
    ftp> type binary
    200 Type set to I.
    ftp> get x3h2-93-082.txt
    200 PORT command successful.
    150 Opening BINARY mode data connection for x3h2-93-082.txt (90900 bytes).
    226 Transfer complete.
    90900 bytes received in 0.53 seconds (166.11 Kbytes/s)
    ftp> quit
    % <ôï áñ÷åßï åßíáé ôþñá óôïí êáôÜëïãü óáò óáí x3h2-93-082.txt>




  Áíáêôþíôáò Áñ÷åßá  ÷ùñßò áðåõèåßáò õðïóôÞñéîç ftp

  Ç Digital Equipment Corporation, üðùò êáé ðïëëÝò Üëëåò åôáéñåßåò,
  ðáñÝ÷åé õðçñåóßá ftp email. Ç áðÜíôçóç ìðïñåß íá ÷ñåéáóôåß ãéá íá
  öôÜóåé áñêåôÝò ìÝñåò, áëëÜ ðáñÝ÷åé ìéá õðçñåóßá éóïäýíáìç ìå ôï ftp
  ãéá áõôïýò ðïõ äåí Ý÷ïõí áðåõèåßáò ftp ðñüóâáóç óôï Internet. Ç
  äéåýèõíóç ôïõ server åßíáé:

  ftpmail@decwrl.dec.com

  Ôï ðáñáêÜôù script èá áíáêôÞóåé ôï PostScript áñ÷åßï ôçò ôåëåõôáßáò
  Ýêäïóçò ôïõ SQL3 êåéìÝíïõ:


            reply joe.programmer@imaginary-corp.com
            connect gatekeeper.dec.com anonymous
            binary
            compress




  Ôï ðáñáêÜôù script èá áíáêôÞóåé ôï PostScript áñ÷åßï ôçò ôåëåõôáßáò
  Ýêäïóçò ôïõ SQL3 êåéìÝíïõ:




       reply joe.programmer@imaginary-corp.com
       connect gatekeeper.dec.com anonymous
       binary
       compress
       uuencode
       chdir /pub/standards/sql
       get x3h2-93-091.ps
       quit




  Ç ðñþôç ãñáììÞ áðü ôéò åíôïëÝò ôïõ script æçôÜ áðü ôï äéáêïìéóôÞ
  (server) íá óáò åðéóôñÝøåé ôá æçôïýìåíá áñ÷åßá. Èá ðñÝðåé íá
  áíôéêáôáóôÞóåôå ôï "joe.programmer@imaginary-corp.com" ìå ôçí
  äéåýèõíóÞ óáò óôï Internet. Ôï áñ÷åßï óå áõôü ôï ðáñÜäåéãìá,
  x3h2-93-091.ps, åðéóôñÝöåôáé óå ìïñöÞ "compress"ed "uuencode"d óáí 34
  äéáöïñåôéêÜ ìçíýìáôá email.  Áí ôï ðåñéâÜëëïí óáò äåí ðáñÝ÷åé åñãáëåßá
  ãéá åðáíáêáôáóêåõÞ ôÝôïéùí áñ÷åßùí, ôüôå ìðïñåßôå íá áíáêôÞóåôå ôï
  áñ÷åßï óáí plain text ìå ôï áêüëïõèï script:


            reply joe.programmer@imaginary-corp.com
            connect gatekeeper.dec.com anonymous
            chdir /pub/standards/sql
            get x3h2-93-091.ps
            quit




  ÁëëÜ óáò ðñïåéäïðïéïýìå, ôï áñ÷åßï .ps ðïëý ðéèáíÜ èá óôáëèåß óå
  ðåñéóóüôåñá áðü 70 ôìÞìáôá!

  Ãéá íá áíáêôÞóåôå ïðïéïäÞðïôå Üëëï óõãêåêñéìÝíï áñ÷åßï, åêôüò ôïõ
  x3h2-93-091.ps, áðëÜ áíôéêáôáóôÞóôå ôï "x3h2-93-091.ps" ìå ôï üíïìá
  ôïõ áñ÷åßïõ ðïõ åðéèõìåßôå.  Ãéá íá ðÜñåôå ôç ëßóôá üëùí ôùí
  äéáèÝóéìùí áñ÷åßùí ôïõ êáôáëüãïõ, áíôéêáôáóôÞóôå ôï "get
  x3h2-93-091.ps" ìå ôï "dir".

  23.10.  ÔìÞìá 1 - ÔñÝ÷ïõóá êáôÜóôáóç ôïõ ISO/ANSI SQL

  Áõôü ôï êåöÜëáéï åßíáé ìéá ðçãÞ ðëçñïöïñßáò ó÷åôéêÜ ìå ôçí ðñüôõðç
  äéåñãáóßá SQL êáé ôçí ôñÝ÷ïõóá êáôÜóôáóÞ ôçò.

  ÔñÝ÷ïõóá êáôÜóôáóç:

  Ç áíÜðôõîÞ ôïõ åßíáé õðü åîÝëéîç ãéá íá åðåêôåßíåé ôçí SQL óå ìéá
  ïëïêëçñùìÝíç õðïëïãéóôéêÜ ãëþóóá ãéá ôïí êáèïñéóìü êáé äéá÷åßñéóç
  persistent, óýíèåôùí áíôéêåéìÝíùí. Áõôü ðåñéëáìâÜíåé : generalization
  êáé specialization hierarchies, ðïëëáðëÞ êëçñïíïìéêüôçôá, ôýðïõò
  äåäïìÝíùí êáèïñéóìÝíùí áðü ôïí ÷ñÞóôç, triggers êáé assertions,
  õðïóôÞñéîç ãéá Ýìðåéñá óõóôÞìáôá, áíáäñïìéêÝò åñùôÞóåéò, êáé åðéðëÝïí
  åñãáëåßá äéá÷åßñéóçò äåäïìÝíùí. ÐåñéëáìâÜíåé åðßóçò ôéò ðñïäéáãñáöÝò
  ôùí áöçñçìÝíùí ôýðùí äåäïìÝíùí (abstract data types -ADTs), object
  identifiers, ìåèüäïõò, êëçñïíïìéêüôçôá, ðïëõìïñöéóìü, encapsulation,
  êáé üëåò ôéò åõêïëßåò ðïõ ó÷åôßæïíôáé ìå ôç äéá÷åßñéóç äåäïìÝíùí ôùí
  áíôéêåéìÝíùí.

  Ôï öèéíüðùñï ôïõ 1996, áñêåôÜ ôìÞìáôá ôïõ SQL3 ðÝñáóáí áðü øçöïöïñßá
  ISO CD.  ÁõôÜ Þôáí ôá SQL/Framework, SQL/Foundation, êáé SQL/Bindings.
  ÁõôÞ ç øçöïöïñßá áðÝôõ÷å (üðùò Þôáí áíáìåíüìåíï) ìå 900 Þ ðåñßðïõ ôüóá
  ó÷üëéá. Óôá ôÝëç Éáíïõáñßïõ, Ýãéíå êÜðïéá óõíÜíôçóç óýíôáîçò ôïõ ISO
  DBL êáôÜ ôçí ïðïßá åðåîåñãÜóôçêáí ëýóåéò ãéá Ýíá ìåãÜëï áñéèìü
  ðñïâëçìÜôùí ôá ïðïßá åßôå åíóùìáôþèçêáí ìå ó÷üëéá ìÝóù øçöïöïñßáò åßôå
  óôÜëèçêáí óáí îå÷ùñéóôÜ papers.  Ìéá êáé ç óõíÜíôçóç óýíôáîçò ôïõ DBL
  äåí ìðüñåóå íá åðåîåñãáóôåß üëá ôá ó÷üëéá, ç óõíÜíôçóç óýíôáîçò
  ðáñáôÜèçêå. Ç ïëïêëÞñùóç ôçò óõíÜíôçóçò óýíôáîçò ðñïãñáììáôßóôçêå ãéá
  ôá ôÝëç Éïõëßïõ, 1997, óôï Ëïíäßíï.

  ÌåôÜ ôç óõíÜíôçóç óýíôáîçò ôïõ Éïõëßïõ, áíáìÝíåôáé íá æçôçèåß ìéá
  ôåëéêÞ øçöïöïñßá ãéá üëá áõôÜ ôá ôìÞìáôá ôçò SQL. Ç äéáäéêáóßá ãéá ôçí
  ôåëéêÞ øçöïöïñßá èá êñáôÞóåé 6 ðåñßðïõ ìÞíåò êáé èá ãßíåé ìéá
  óõíÜíôçóç óýíôáîçò DBL, ìåôÜ ôçí ïðïßá èá ãßíåé ìéá øçöïöïñßá DIS  êáé
  ìéá ó÷åôéêÜ ãñÞãïñç øçöïöïñßá IS .

  Ïé äéáäéêáóßåò ISO  Ý÷ïõí áëëÜîåé áðü ôï SQL/92, Ýôóé ïé åðéôñïðÝò ãéá
  ôçí SQL äïõëåýïõí áêüìç ãéá ôïí êáèïñéóìü ôùí áêñéâþí ëåðôïìåñåéþí ôçò
  äéáäéêáóßáò.

  Áí ðÜíå üëá êáëÜ, áõôÜ ôá ôìÞìáôá ôçò SQL3 èá ãßíïõí Ýíá åðßóçìï
  ðñüôõðï ISO/IEC óôá ôÝëç ôïõ 1998, áëëÜ ôï ðñüãñáììá åßíáé ðïëý
  óöé÷ôü.

  Ôï 1993, ïé åðéôñïðÝò áíÜðôõîçò ANSI êáé ISO áðïöÜóéóáí íá ÷ùñßóïõí ôç
  ìåëëïíôéêÞ áíÜðôõîç ôçò SQL óå Ýíá ðïëõìåñÝò ðñüôõðï. Ôá ôìÞìáôá áõôÜ
  åßíáé:


  ·  ÔìÞìá 1: Framework Ìéá ìç ôå÷íéêÞ ðåñéãñáöÞ ãéá ôï ðþò åßíáé
     äïìçìÝíï ôï êåßìåíï.

  ·  ÔìÞìá 2: Foundation Ïé ðñïäéáãñáöÝò ôïõ óõóôÞìáôïò,
     óõìðåñéëáìâáíïìÝíïõ üëùí ôùí íÝùí ÷áñáêôçñéóôéêþí ADT.

  ·  ÔìÞìá 3: SQL/CLI Ôï Call Level Interface.

  ·  ÔìÞìá 4: SQL/PSM Ïé ðñïäéáãñáöÝò ôùí stored procedures,
     óõìðåñéëáìâáíïìÝíùí õðïëïãéóôéêþí óõìðëçñþóåùí.

  ·  ÔìÞìá 5: SQL/Bindings Ôá Dynamic SQL êáé Embedded SQL bindings ðïõ
     ðÜñèçêáí áðü ôï SQL-92.

  ·  ÔìÞìá 6: SQL/XA Ïé ðñïäéáãñáöÝò SQL ôïõ äçìïöéëïýò XA Interface ðïõ
     áíáðôýóóåôáé áðü ôçí X/Open

  ·  ÔìÞìá 7:SQL/Temporal ÐñïóèÝôåé óôá ðñüôõðá SQL éêáíüôçôåò ó÷åôéêÝò
     ìå ôï ÷ñüíï.

  Óôçí ÁìåñéêÞ, ïëüêëçñç ç SQL3 åðåîåñãÜæåôáé êáé óáí ANSI Domestic
  ("D") project êáé óáí ISO project. Ôï áíáìåíüìåíï ÷ñïíéêü ðáñÜèõñï ãéá
  ôçí ïëïêëÞñùóç ôçò SQL3 åßíáé ôï 1999.

  Ôá SQL/CLI êáé SQL/PSM åðåîåñãÜæïíôáé üóï ãñçãïñüôåñá ãßíåôáé óáí
  addendums óôçí SQL-92. Óôçí ÁìåñéêÞ, áõôÜ åðåîåñãÜæïíôáé ìüíï óáí
  ÄéåèíÞ ¸ñãá (International - "I"). Ç SQL/CLI ïëïêëçñþèçêå ôï 1995. Ç
  SQL/PSM ðñÝðåé íá Ý÷åé ïëïêëçñùèåß óôá ôÝëç ôïõ 1996.

  Åðéðñüóèåôá ôçò SQL3 åñãáóßáò, Ýíáò áñéèìüò åðéðëÝïí Ýñãùí are
  persued:


  ·  SQL/MM Ìéá ðñïóðÜèåéá íá ïñéóôïýí ðñüôõðá ðáêÝôá ðïëõìÝóùí
     ÷ñçóéìïðïéþíôáò ôéò äõíáôüôçôåò ôçò SQL3 ADT.

  ·  Ðñüóâáóç óå áðïìáêñõóìÝíá äåäïìÝíá - Remote Data Access (RDA)

  ÅðéôñïðÝò Ðñïôýðùí êáé Äéáäéêáóéþí ÕðÜñ÷åé ðñáãìáôéêÜ ìåãÜëïò áñéèìüò
  åðéôñïðþí ðñïôýðùí SQL óå üëï ôïí êüóìï.  ÕðÜñ÷åé Ýíá äéåèíÝò ãêñïõð
  ôïõ ðñïôýðïõ SQL óáí ôìÞìá ôïõ ISO. ÐïëëÝò ÷þñåò Ý÷ïõí åðéôñïðÝò ðïõ
  áó÷ïëïýíôáé ìå ôçí SQL. ÁõôÝò ïé ÷þñåò (óõíÞèùò) óôÝëíïõí
  áíôéðñïóþðïõò óôéò óõíáíôÞóåéò ISO/IEC JTC1/SC 21/WG3 DBL. Ïé ÷þñåò
  ðïõ óõììåôÝ÷ïõí åíåñãÜ óôç äéáäéêáóßá ôïõ ðñïôýðïõ ISO SQL åßíáé ïé:


  ·  Áõóôñáëßá

  ·  Âñáæéëßá

  ·  ÊáíáäÜò

  ·  Ãáëëßá

  ·  Ãåñìáíßá

  ·  Éáðùíßá

  ·  ÊïñÝá

  ·  Ïëëáíäßá

  ·  Áããëßá

  ·  ÁìåñéêÞ

  NIST Íïìéìïðïßçóç

  Ïé õëïðïéÞóåéò ôçò SQL íïìéìïðïéïýíôáé (óôçí ÁìåñéêÞ) áðü ôï Åèíéêü
  Éíóôéôïýôï Ðñïôýðùí êáé ÅëÝã÷ïõ (NIST). Ôï NIST Ý÷åé ãéá ôçí þñá Ýíá
  óýíïëï áðü ôåóô íïìéìüôçôáò ãéá ôï entry level SQL-92. Ïé áêñéâåßò
  ðëçñïöïñßåò ãéá ôéò áðáéôÞóåéò ôçò NIST íïìéìïðïßçóçò êáèïñßæïíôáé ùò
  Ïìïóðïíäéáêü Ðñüôõðï Åðåîåñãáóßáò Ðëçñïöïñßáò - Federal Information
  Processing Standard (FIPS).  Ïé ôñÝ÷ïõóåò áðáéôÞóåéò ãéá ôçí SQL
  ïñßæïíôáé óôï FIPS 127-2. Ìðïñåßôå íá ðÜñåôå ôéò ôñÝ÷ïõóåò Postscript
  êáé Text åêäüóåéò áõôïý ôïõ êåéìÝíïõ  áðü ôï NIST.  Ç ëßóôá ôùí
  ôñå÷üíôùí íïìéìïðïéçìÝíùí SQL ðñïúüíôùí ìðïñåß åðßóçò íá âñåèåß óôï
  NIST.

  Åêäüóåéò êáé ¶ñèñá ó÷åôéêÜ ìå ôï ðñüôõðï ôçò SQL

  ÕðÜñ÷ïõí äýï åêäüóåéò ó÷åôéêÜ ìå ôï ðñüôõðï SQL. Êáé ïé äýï
  äéáôßèåíôáé áðü ôï ANSI:


  ·  ISO/IEC 9075:1992, "Information Technology --- Database Languages
     --- SQL"

  ·  ANSI X3.135-1992, "Database Language SQL"

  Ïé äõï åêäüóåéò ôïõ ðñïôýðïõ SQL åßíáé ïëüéäéåò åêôüò áðü ôï åîþöõëëï
  êáé ôéò áíáöïñÝò óå Üëëá ðñüôõðá. Êáé ïé äýï äéáôßèåíôáé áðü ôï :


            American National Standards Institute
            1430 Broadway
            New York, NY 10018
            USA
            Phone (sales): +1.212.642.4900




  Åðéðñüóèåôá óôï ðñüôõðï SQL-92, õðÜñ÷åé Ýíá Technical Corrigendum
  (äéïñèþóåéò bug):


          * Technical Corrigendum 1:1994 to ISO/IEC 9075:1992

  Ôï TC 1 ðñÝðåé íá äéáôßèåôáé åðßóçò áðü ôï ANSI. ÕðÜñ÷åé ìüíï ç ISO
  Ýêäïóç ôïõ TC 1 -- åöáñìüæåôáé êáé óôçí ISO êáé ANSI Ýêäïóç ôïõ
  SQL-92.

  Åðéðñüóèåôá, Ý÷ïõí ãñáöôåß áñêåôÜ âéâëßá ó÷åôéêÜ ìå ôï ðñüôõðï 1992
  SQL. ÁõôÜ ôá âéâëßá ðáñÝ÷ïõí ìéá êáëýôåñá áíáãíþóéìç ðåñéãñáöÞ ôïõ
  ðñïôýðïõ áðü üôé ôï ßäéï ôï ðñüôõðï.

  Ó÷åôéæüìåíá ðñüôõðá

  Åíáò óýíïëï ðñïôýðùí åíäéáöÝñïõí ôçí SQL êïéíüôçôá. Áõôü ôï ôìÞìá
  ðåñéÝ÷åé äåßêôåò óå ðëçñïöïñßåò ãéá áõôÝò ôéò ðñïóðÜèåéåò. Áõôïß ïé
  äåßêôåò èá áõîçèïýí êáèþò Ýîôñá ðëçñïöïñßåò äéáôßèåíôáé óôï web.


  ·  ÐåñéâÜëëïíôá SQL (FIPS 193)

  ·  Repository ÓõóôÞìáôá Åðüìåíçò ÃåíéÜò (X3H4) - ìéá News Release ðïõ
     æçôÜ óõììåôï÷Þ óôï "Áíáðôýóóïíôáò Ðñüôõðá ãéá Repository ÓõóôÞìáôá
     Åðüìåíçò ÃåíéÜò."

  23.11.  ÔìÞìá 2 - ISO/ANSI SQL Foundation

  ¸íá óçìáíôéêü ôìÞìá ôçò SQL3 ðñïóðÜèåéáò âñßóêåôáé óôï êåßìåíï SQL
  Foundation :


  ·  ÂáóéêÝò äõíáôüôçôåò SQL/PSM (moved form SQL/PSM-92)

  ·  ÍÝïé ôýðïé äåäïìÝíùí

  ·  Triggers

  ·  Õðïðßíáêåò

  ·  ÁöçñçìÝíïé Ôýðïé ÄåäïìÝíùí - Abstract Data Types (ADT)

  ·  Áíôéêåéìåíïóôñáöåßò Äõíáôüôçôåò

  ÕðÜñ÷ïõí áñêåôÜ ðñïáðáéôïýìåíá óôéò áíôéêåéìåíïóôñáöåßò äõíáôüôçôåò:


  ·  Éêáíüôçôá íá ïñßæåôå óýíèåôåò ëåéôïõñãßåò

  ·  ÁðïèÞêåõóç óýíèåôùí ëåéôïõñãéþí óôç âÜóç

  ·  ÊëÞóç åîùôåñéêþí äéáäéêáóéþí  ÌåñéêÝò ëåéôïõñãßåò ìðïñåß íá ìçí
     åßíáé óå SQL, Þ ìðïñåß íá áðáéôïýí åîùôåñéêÝò ðáñåìâÜóåéò

  ÁõôÝò ïé äõíáôüôçôåò ïñßæïíôáé óáí ôìÞìá ôïõ SQL/PSM

  Ãßíåôáé ìéá óçìáíôéêÞ åñãáóßá ãéá íá åêêáèáñéóôåß ôï ìïíôÝëï
  áíôéêåéìÝíïõ SQL-3 êáé íá åõèõãñáììéóôåß ìå ôï ìïíôÝëï áíôéêåéìÝíïõ
  ðïõ ðñïôÜèçêå áðü ôï ODMG. ÁõôÞ ç ðñïóðÜèåéá ðåñéãñÜöåôáé óôï X3H2 êáé
  ISO DBL paper: Accomodating SQL3 and ODMG. Åßíáé åðßóçò äéáèÝóéìç ìéá
  ðñüóöáôç Ýêäïóç óôï SQL3/OQL Merger.

  SQL3 Timing

  Ç åñãáóßá ðÜíù óôï SQL3 âñßóêåôáé óå åîÝëéîç, áëëÜ ôá ôåëéêÜ ðñüôõðá
  èá ÷ñåéáóôïýí ÷ñüíéá áêüìç ãéá íá ïëïêëçñùèïýí.


  ·  ÄéåèíÞò øçöïöïñßá ãéá ôçí ðñüïäï ôïõ SQL3 Foundation áðü ôï
     Ðñü÷åéñï ¸íôõðï Åñãáóßáò ùò ôï Ðñü÷åéñï ¸íôõðï ÅðéôñïðÞò (Committee
     Draft - CD) Ýëáâå ÷þñá ôï öèéíüðùñï ôïõ 1996.
  ·  Ç øçöïöïñßá áíáìÝíåôáé íá ðñïêáëÝóåé ðïëëÜ ó÷üëéá

  ·  Åßíáé ðéèáíü íá æçôçèåß ìéá äåýôåñç øçöïöïñßá CD

  ·  Ìéá Draft Øçöïöïñßá Äéåèíþí Ðñïôýðùí åßíáé ðéèáíü íá ãßíåé óôá ìÝóá
     ôïõ 1998

  ·  Ôï ÄéåèíÝò Ðñüôõðï ìðïñåß íá ïëïêëçñùèåß óôá ìÝóá ôïõ 1999.

  Ç ANSI Ýêäïóç ôïõ ðñïôýðïõ Ý÷åé ðáñüìïéï ÷ñïíïäéÜãñáììá.

  23.12.  ÔìÞìá 3 - ISO/ANSI SQL Call Level Interface

  Ôï SQL/CLI åßíáé Ýíá ðñïãñáììáôéóôéêü interface åðéðÝäïõ êëÞóåùí ãéá
  SQL âÜóåéò. ¸÷åé ó÷åäéáóôåß ãéá íá õðïóôçñßæåé ðñüóâáóç óå âÜóåéò áðü
  shrink-wrapped åöáñìïãÝò. Ôï CLI äçìéïõñãÞèçêå áñ÷éêÜ áðü ìéá
  õðïåðéôñïðÞ ôïõ SQL Access Group (SAG).  Ïé ðñïäéáãñáöÝò ôïõ SAG/CLI
  åêäüèçêáí óáí ôéò ðñïäéáãñáöÝò ôïõ Microsoft Open DataBase
  Connectivity (ODBC) ôï 1992. Ôï 1993, ôï SAG Ýóôåéëå ôï CLI óôéò
  åðéôñïðÝò ANSI êáé ISO SQL. (Ôï ãêñïõð SQL Access Ý÷åé óõã÷ùíåõèåß
  ôþñá ìå ôï X/Open consortium.)

  Ôï SQL/CLI ðáñÝ÷åé Ýíá äéåèíÝò ðñüôõðï ãéá :


  ·  CLI áíåîÜñôçôï õëïðïßçóçò, ãéá ðñüóâáóç óå âÜóåéò SQL

  ·  Client-Server åñãáëåßá ðïõ ìðïñïýí íá Ý÷ïõí ðñüóâáóç óå ìéá âÜóç
     ìÝóù äõíáìéêþí âéâëéïèçêþí

  ·  ÕðïóôÞñéîç  êáé åíèÜññõíóç ðëïýóéïõ óõíüëïõ åñãáëåßùí Client-server

  SQL/CLI Timing

  Óôá ðëáßóéá ôçò äéáäéêáóßá ôõðïðïßçóçò, ôï SQL/CLI åðåîåñãÜæåôáé ìå
  ìåãÜëç ðñïôåñáéüôçôá.


  ·  Ôï SQL/CLI åßíáé Ýíá óõìðëÞñùìá ôïõ ðñïôýðïõ 1992 SQL (SQL-92)

  ·  Ïëïêëçñþèçêå óáí ðñüôõðï ISO ôï 1995

  ·  ISO/IEC 9075-3:1995 Information technology -- Database languages --
     SQL -- Part 3: Call-Level Interface (SQL/CLI)

  ·  Ç ôñÝ÷ïõóá SQL/CLI ðñïóðÜèåéá ðïõ ãßíåôáé åßíáé íá ðñïóôåèåß
     õðïóôÞñéîç ãéá ÷áñáêôçñéóôéêÜ ôçò SQL3

  23.13.  ÔìÞìá 4 - ISO/ANSI SQL Persistent Stored Modules

  Ôï SQL/PSM åðåêôåßíåé ôçí SQL ðñïóèÝôïíôáò:


  ·  ÄçëùôéêÝò/ÄéáäéêáóôéêÝò åðåêôÜóåéò

  ·  Multi-statement êáé Stored Procedures

  ·  ÅîùôåñéêÝò óõíáñôÞóåéò êáé êëÞóåéò äéáäéêáóéþí

  Åêôüò ôïõ üôé åßíáé Ýíá áîéüëïãï åñãáëåßï áíÜðôõîçò åöáñìïãþí, ôï
  SQL/PSM ðáñÝ÷åé ôç èåìåëéþäç õðïóôÞñéîç ãéá áíôéêåéìåíïóôñáöåßò
  äõíáôüôçôåò óôçí SQL3.

  Multi-statement êáé Stored Procedures


  Ïé Multi-statement êáé stored procedures ðñïóöÝñïõí ìéá ðïéêéëßá
  ðëåïíåêôçìÜôùí óå Ýíá ðåñéâÜëëïí client/server:


  ·  Áðüäïóç- Ìéá êáé ìéá stored procedure ìðïñåß íá åêôåëÝóåé ðïëëáðëÝò
     SQL åíôïëÝò, ìåéþíåôáé ç áëëçëåðßäñáóç ìå ôïí ðåëÜôç (client).

  ·  ÁóöÜëåéá - Åíáò ÷ñÞóôçò ìðïñåß íá áðïêôÞóåé ôï äéêáßùìá íá êáëåß
     ìéá stored procedure ðïõ åíçìåñþíåé Ýíá ðßíáêá Þ Ýíá óýíïëï ðéíÜêùí
     áëëÜ ìçí Ý÷åé ôï äéêáßùìá ôçò áðåõèåßáò åíçìÝñùóçò ôùí ðéíÜêùí

  ·  Åðáíá÷ñçóéìïðïéÞóéìïò êþäéêáò - Ï êþäéêáò óå ìéá stored procedure
     äå ÷ñåéÜæåôáé íá îáíáãñáöôåß êáé íá îáíáåëåã÷èåß ãéá êÜèå client
     åñãáëåßï ðïõ Ý÷åé ðñüóâáóç óôç âÜóç.

  ·  ¸ëåã÷ïò - ÐáñÝ÷åé Ýíá ìüíï óçìåßï ïñéóìïý êáé åëÝã÷ïõ ôçò ëïãéêÞò
     ôçò åöáñìïãÞò.

  ÄçëùôéêÝò/ÄéáäéêáóôéêÝò åðåêôÜóåéò

  Ç ÄéáäéêáóôéêÞ Ãëþóóá ðñïóèÝôåé ôçí éó÷ý ìéáò ðáñáäïóéáêÞò ãëþóóáò
  ðñïãñáììáôéóìïý óôçí SQL ìÝóù åíôïëþí åëÝã÷ïõ ñïÞò êáé ìéá ðïéêéëßá
  Üëëùí ðñïãñáììáôéóôéêþí êáôáóêåõþí.

  ÅíôïëÝò ÅëÝã÷ïõ ñïÞò


  ·  If-then-else

  ·  Looping constructs

  ·  Exception handling

  ·  Case statement

  ·  Begin-End blocks

  Ïé äéáäéêáóôéêÝò åðåêôÜóåéò ðåñéëáìâÜíïõí êáé Üëëåò ðñïãñáììáôéóôéêÝò
  êáôáóêåõÝò:


  ·  Äçëþóåéò ìåôáâëçôþí

  ·  ÅíôïëÝò Set ãéá áíÜèåóç ôéìþí

  ·  ËÞøç äéáãíùóôéêþí ãéá ôéò äéåñãáóßåò êáé ðëçñïöïñßåò êáôÜóôáóçò

  ÅðéðëÝïí, üëåò ïé ðáñáäïóéáêÝò SQL åíôïëÝò ìðïñïýí íá óõìðåñéëçöèïýí
  óå äéáäéêáóßåò multi-statement.

  ÊëÞóåéò Åîùôåñéêþí Äéáäéêáóéþí êáé ÓõíáñôÞóåùí ¸íá ÷áñáêôçñéóôéêü ðïõ
  áíáöÝñåôáé óõ÷íÜ óôéò åõ÷åôÞñéåò ëßóôåò ôïõ ôé èá åðéèõìïýóáìå ãéá
  ðïëëÜ ðñïúüíôá âÜóåùí, êáé ðïõ Ý÷åé õëïðïéçèåß óå ìåñéêÝò, åßíáé ç
  äõíáôüôçôá íá åìðëïõôéóìïý ôùí åíóùìáôùìÝíùí ÷áñáêôçñéóôéêþí ìå
  êëÞóåéò óå äéáäéêáóßåò ðïõ Ý÷åé ãñÜøåé ï ÷ñÞóôçò åîùôåñéêÜ åêôüò ôçò
  âÜóçò.


  ·  ÅðéôñÝðåé óå Ýíá óõãêåêñéìÝíï site Þ åöáñìïãÞ íá ðñïóèÝóåé ôéò
     äéêÝò ôïõ óõíáñôÞóåéò ãéá ôç âÜóç

  ·  Ìðïñåß íá ÷ñçóéìïðïéçèåß áðü ôéò åöáñìïãÝò âÜóåéò äåäïìÝíùí

  Ôï ðëåïíÝêôçìá áõôÞò ôçò äõíáôüôçôáò åßíáé üôé äßíåé óôç âÜóç (óõíåðþò
  êáé óôéò åöáñìïãÝò âÜóåùí) ðñüóâáóç óå ôåñÜóôéï áñéèìü äéáäéêáóéþí êáé
  óõíáñôÞóåùí.
  ×ñïíéóìüò ôïõ SQL/PSM

  Ôï SQL/PSM Ý÷åé åí óõíôïìßá:


  ·  Ôï SQL/PSM åßíáé ìéá ðñïóèÞêç óôï SQL-92

  ·  ÄéåèíÞò øçöïöïñßá ãéá ôçí ðñüïäï ôïõ SQL/PSM áðü ôï Draft ÄéåèíÝò
     Ðñüôõðï óôï ÄéåèíÝò Ðñüôõðï ïëïêëçñþèçêå ôïí ÉáíïõÜñéï ôïõ 1996.

  ·  Ç äéïñèùôéêÞ óõíåäñßáóç ôï ÌÜéï ôïõ 1996 äåí åðÝëõóå üëá ôá ó÷üëéá

  ·  Ç óõíÝ÷éóç ôçò äéïñèùôéêÞò óõíåäñßáóçò PSM ðñïãñáììáôßóôçêå áðü ôéò
     30 Óåðôåìâñßïõ ìÝ÷ñé ôéò 4 Ïêôùâñßïõ ôïõ 1996

  ·  Ôï ÷ñïíïäéÜãñáììá åßíáé ðéåóôéêü áëëÜ õðÜñ÷åé ìéá ðéèáíüôçôá íá
     åêäïèåß ôï PSM ìÝóá óôï 1996.

  ·  Ï åðßóçìïò ðñïóäéïñéóìüò èá åßíáé: ISO/IEC DIS 9075-4:199?
     Information technology -- Database languages -- SQL -- Part 4: SQL
     Persistent Stored Modules (SQL/PSM)

  ·  ¸÷åé Þäç îåêéíÞóåé äïõëåéÜ ãéá ôçí ðñïóèÞêç õðïóôÞñéîçò SQL/PSM óôá
     ÷áñáêôçñéóôéêÜ ôçò SQL3.

  23.14.  ÔìÞìá 5 - ÔõðïðïéÞóåéò - Äåóìåýóåéò ISO/ANSI SQL/ ISO/ANSI
  SQL/Bindings

  Ãéá åõêïëßá áíáöïñþí, ïé äåóìåýóåéò, ôõðïðïéÞóåéò ôçò ãëþóóáò
  ðñïãñáììáôéóìïý Ý÷ïõí óõãêåíôñùèåß óå Ýíá îå÷ùñéóôü êåßìåíï. Ç
  ôñÝ÷ïõóá Ýêäïóç åßíáé áðëÜ Ýíá áðüóðáóìá áðü ôá ðñüôõðá ôçò
  SQL-92(äõíáìéêÜ (dynamic) êáé åíóùìáôïýìåíá (embedded)).

  ÐáñáìÝíåé áäéåõêñßíéóôç ìéá ðïéêéëßá èåìÜôùí ôõðïðïßçóçò ôçò ãëþóóáò.

  Óôçí ðáñáäïóéáêÞ ðñïãñáììáôéóôéêÞ ãëþóóá, õðÜñ÷ïõí ïé áðåéêïíßóåéò ôùí
  ôýðùí äåäïìÝíùí ôçò SQL-92.  Ðáñüëá áõôÜ, èá ðñÝðåé íá ïñéóôïýí êáé ïé
  áðåéêïíßóåéò ìåôáîý ôùí áíôéêåéìÝíùí ôçò SQL êáé ôùí ìåôáâëçôþí ôçò
  ðñïãñáììáôéóôéêÞò ãëþóóáò..

  Ãéá ôéò áíôéêåéìåíïóôñáöåßò ãëþóóåò, ðñÝðåé íá ïñéóôåß ç áðåéêüíéóç
  ãéá ôïõò ôýðïõò äåäïìÝíùí ôçò SQL êáé ìåôáîý ôïõ ìïíôÝëïõ áíôéêåéìÝíùí
  ôçò SQL êáé ôïõ ìïíôÝëïõ áíôéêåéìÝíùí ôçò áíôéêåéìåíïóôñáöïýò ãëþóóáò.

  Ôï ìïíôÝëï äåäïìÝíùí èá ðñÝðåé íá ïñéóôéêïðïéçèåß ðñéí áñ÷ßóåé íá
  ãßíåôáé áíáöïñÜ óå ôÝôïéïõ ôýðïõ ðñïâëÞìáôá.

  Ïé ôõðïðïéÞóåéò ôçò ãëþóóáò èá ïëïêëçñùèïýí ùò ìÝñïõò ôïõ ðñüôõðïõ
  SQL3.

  23.15.  ÔìÞìá 6 - ISO/ANSI SQL XA Interface Specialization (SQL/XA)

  Ïé ðñïäéáãñáöÝò áõôÝò èá ôõðïðïéÞóïõí Ýíá ðñïãñáììáôéóôéêü interface
  (API) ìåôáîý åíüò ãåíéêïý Äéá÷åéñéóôÞ Óõíäéáëëáãþí (Transaction
  Manager) êáé åíüò Äéá÷åéñéóôÞ Ðüñùí (Resource Manager) SQL.  Èá
  ôõðïðïéÞóåé ôéò êëÞóåéò óõíáñôÞóåùí, âáóéæüìåíïò óôá ðñüôõðá ôïõ
  ISO/IEC 10026, "Distributed Transaction Processing", ðïõ Ýíáò
  Äéá÷åéñéóôÞò Ðüñùí SQL èá ðñÝðåé íá õðïóôçñßæåé, ãéá íá êÜíåé commit
  äýï óôáäßùí (two-phase commit) Ôï âáóéêü êåßìåíï áíáöïñÜò åîÜãåôáé áðü
  ìéá äçìïóßåõóç ôïõ X/Open, ìå ôçí Üäåéá ôïõ X/Open, ðïõ ðñïóäéïñßæåé
  ñçôÜ ôéò ðáñáìÝôñïõò åéóüäïõ êáé åîüäïõ êáé ôçí óçìåéïãñáößá
  (semantics), ãéá ôéò áêüëïõèåò óõíáñôÞóåéò: xa_close, xa_commit,
  xa_complete, xa_end, xa_forget,xa_open, xa_prepare, xa_recover,
  xa_rollback, êáé xa_start.


  Ï ISO åðé÷åéñåß íá åðéôá÷ýíåé ôéò ðñïäéáãñáöÝò ôïõ X/Open XA. Ç
  äéáäéêáóßá åðéôÜ÷õíóçò õéïèåôåß âéïìç÷áíéêÝò ðñïäéáãñáöÝò ÷ùñßò
  áëëáãÝò.  Ç øçöïöïñßá ãéá ôï XA óôï ISO SC21, JTC åðßðåäï 1, Üñ÷éóå
  óôéò 27 Áðñéëßïõ, 1995 êáé ôåëåßùóå óôéò 27 Ïêôùâñßïõ, 1995. Áí ôï 75
  ôùí øçöïöüñùí åãêñßíïõí ôéò ðñïäéáãñáöÝò ôïõ XA, êáé áðü ôá 2/3 ôùí
  p-ìåëþí ôïõ JTC 1, èá áðïôåëÝóåé Ýíá ÄéåèíÝò Ðñüôõðï. Áí ç øçöïöïñßá
  ôï åãêñßíåé, ôï SQL/XA èá ìðïñïýóå íá ãßíåé Ýíá ðñüôõðï ìÝóá óôï 1996.

  23.16.  Part 7 - ISO/ANSI SQL Temporal

  Ç Temporal SQL áó÷ïëåßôáé ìå ÷ñïíéêÜ åîáñôþìåíá äåäïìÝíá. Ç éäÝá åßíáé
  ðùò åßíáé ÷ñÞóéìï íá áíáëýïõìå ôá äåäïìÝíá ãéá íá äïýìå ðùò Ýìïéáæáí
  êÜðïéá äåäïìÝíç ÷ñïíéêÞ óôéãìÞ.  Ç Temporal SQL åßíáé Ýíá paper ôïõ
  Äåêåìâñßïõ ôïõ 1994 áðü ôïí Rick Snodgrass ðïõ ðåñéãñÜöåé áõôÝò ôéò
  Ýííïéåò.

  Ç X3 áíáêïéíþíåé ôçí Ýãêñéóç åíüò ÍÝïõ ¸ñãïõ, ISO/IEC 9075 ÌÝñïò 7ï: Ç
  SQL/Temporal åßíáé ìéá äçìïóßåõóç ôýðïõ ó÷åôéêÞ ìå ôçí SQL/Temporal.


       ----------------------------------------------------------------------------
                                       Temporal SQL
                                       ************
       Rick Snodgrass (ðñüåäñïò ôçò åðéôñïðÞò TSQL2)
       31-Äåê-1994




  Áñêåôïß áìöéóâÞôçóáí ôçí áíÜãêç áõîçìÝíçò õðïóôÞñéîçò ÷ñüíïõ óôçí SQL3
  (üðùò áõôü ðñïôåßíåôáé áðü ôï DBL RIO-75, üðïõ êáé æçôÜ Ýíá íÝï ôìÞìá
  ôçò SQL ðïõ íá õðïóôçñßæåé ÷ñïíéêÝò (temporal) âÜóåéò). Ï éó÷õñéóìüò
  ôïõò âáóßæåôáé óôï üôé ïé áöçñçìÝíïé ôýðïé äåäïìÝíùí (abstract data
  types -ADT's) áñêïýí ãéá ÷ñïíéêÞ õðïóôÞñéîç. Óå áõôü ôï ðëçñïöïñéáêü
  êåßìåíï, äéáöùíþ, êáé, ÷ñçóéìïðïéþíôáò áäéÜóåéóôá ðáñáäåßãìáôá,
  äåß÷íù ðùò ÷ñçóéìïðïéþíôáò ìüíï óôÞëåò ìå áöçñçìÝíïõò ôýðïõò äåäïìÝíùí
  äåí áñêåß ãéá ÷ñïíéêÝò åñùôÞóåéò. Åéäéêüôåñá, ðïëëÝò êïéíÝò ÷ñïíéêÝò
  åñùôÞóåéò, åßíáé åßôå äýóêïëåò íá ðñïóïìïéùèïýí ìå SQL, åßôå áðáéôïýí
  ôçí åíóùìÜôùóç SQL óå ìéá äéáäéêáóôéêÞ (procedural) ãëþóóá.  Ïé
  åíáëëáêôéêÝò ëýóåéò åêöñÜæïíôáé óå TSQL2, ìéá ÷ñïíéêÞ åðÝêôáóç óôçí
  SQL-92.

  23.16.1.  ÅÉÓÁÃÙÃÇ

  Ç õðïóôÞñéîç Ýãêõñïõ ÷ñüíïõ (Valid-time) îåðåñíÜåé áõôÞ åíüò êïéíïý
  ÷ñïíéêïý áöçñçìÝíïõ ôýðïõ äåäïìÝíùí (ADT). Óôïí ôåëåõôáßï, ìéá óôÞëç
  ðñïóäéïñßæåôáé óáí Ýíá ÷ñïíéêü ðåäßï, åßôå ùò DATE åßôå ùò INTERVAL
  (èá äïèïýí ðáñáäåßãìáôá óýíôïìá).  Ìå ôïí Ýãêõñï ÷ñüíï, ïé ãñáììÝò
  åíüò ðßíáêá äéáöïñïðïéïýíôáé ìå ôï ðÝñáóìá ôïõ ÷ñüíïõ, êáèþò
  äéáöïñïðïéåßôáé êáé ç ðñáãìáôéêüôçôá. Ç ÷ñïíéêÞ óöñáãßäá (timestamp)
  ðïõ ó÷åôßæåôáé ìå ìéá ãñáììÞ åíüò ðßíáêá Ýãêõñùí ÷ñüíùí (valid-time
  table) ìåôáöñÜæåôáé áðü ôçí ãëþóóá åñùôÞóåùí ùò ç ÷ñïíéêÞ óôéãìÞ ãéá
  ôçí ïðïßá ï óõíäõáóìüò ôéìþí ôùí óôçëþí ôçò ãñáììÞò åêåßíçò Þôáí
  Ýãêõñïò. Ç ýðáñîç ôçò Ýììåóçò áõôÞò ÷ñïíéêÞò óöñáãßäáò åðéôñÝðåé ôçí
  äéáôýðùóç  óáöþí êáé ðñùôüôõðùí åñùôÞóåùí.

  23.16.2.  ÌÉÁ ÌÅËÅÔÇ- ÁÐÏÈÇÊÅÕÓÇ ÓÕÃ×ÑÏÍÙÍ/ÔÑÅ×ÏÕÓÙÍ ÐËÇÑÏÖÏÑÉÙÍ

  Ôï Ãñáöåßï Ðñïóùðéêïý ôïõ Ðáíåðéóôçìßïõ ôçò Áñéæüíá Ý÷åé êÜðïéåò
  ðëçñïöïñßåò óå ìéá âÜóç äåäïìÝíùí, ìÝóá óôéò ïðïßåò êáé ôï üíïìá ôùí
  õðáëëÞëùí, ôïí ôñÝ÷ïíôá ìéóèü ôïõò, êáé ôïí ôñÝ÷ïõóá èÝóç ôïõò. Áõôü
  ìðïñåß íá ðåñéãñáöåß ìå Ýíáí áðëü ðßíáêá.


               Employee(Name, Salary, Title)

  ÄåäïìÝíïõ áõôïý ôïõ ðßíáêá, ç åýñåóç ôïõ ìéóèïý åíüò õðáëëÞëïõ åßíáé
  åýêïëç.


               SELECT Salary
               FROM Employee
               WHERE Name = 'Bob'




  Ôþñá ôï Ãñáöåßï Ðñïóùðéêïý åðéèõìåß íá êáôáãñÜöåé êáé ôçí çìåñïìçíßá
  ãÝííçóçò.  Ãéá íá ôï êÜíåé, ðñïóèÝôåé ìéá óôÞëç óôïí ðßíáêá, êáé Ýôóé
  ðñïêýðôåé ôï áêüëïõèï ó÷Þìá.


               Employee(Name, Salary, Title, DateofBirth DATE)




  Ç åýñåóç ôùí ãåíåèëßùí åíüò õðáëëÞëïõ åßíáé áíÜëïãç ìå ôï íá âñïýìå ôï
  ìéóèü ôïõ.


               SELECT DateofBirth
               FROM Employee
               WHERE Name = 'Bob'




  23.16.3.  ÌÅËÅÔÇ - ÁÐÏÈÇÊÅÕÓÇ ÉÓÔÏÑÉÊÙÍ ÐËÇÑÏÖÏÑÉÙÍ

  Ôï Ãñáöåßï Ðñïóùðéêïý åðéèõìåß ðåñÜóåé ôá éóôïñéêÜ óôïé÷åßá ôùí
  õðáëëÞëùí óå çëåêôñïíéêÞ ìïñöÞ. Ãéá íá ôï êÜíåé, ðñïóèÝôïõí äýï
  óôÞëåò, ìéá ðïõ õðïäåéêíýåé ðüôå Ýãéíå Ýãêõñç ç ðëçñïöïñßá ôçò
  ãñáììÞò, êáé ìéá ãéá ôï ðüôå Ýðáøå íá éó÷ýåé.

  Employee (Name, Salary, Title, DateofBirth, Start DATE, Stop DATE)

  Óôï ìïíôÝëï äåäïìÝíùí, áõôÝò ïé äýï óôÞëåò åßíáé ðáñüìïéåò ìå ôï
  DateofBirth. Ðáñüëá áõôÜ, ç ðáñïõóßá ôïõò Ý÷åé åðéðôþóåéò ìåãÜëçò
  êëßìáêáò.

  23.16.4.  ÌÅËÅÔÇ - ÐÑÏÂÏËÇ (PROJECTION)

  Ãéá íá âñïýìå ôïí ôñÝ÷ïíôá ìéóèü åíüò õðáëëÞëïõ, ôá ðñÜãìáôá åßíáé
  ðëÝïí äõóêïëüôåñá.


               SELECT Salary
               FROM Employee
               WHERE Name = 'Bob' êáé Start <= CURRENT_DATE êáé CURRENT_DATE <= Stop




  ÁõôÞ ç åñþôçóç åßíáé ðéï óýíèåôç áðü üôé ç ðñïçãïýìåíç. Ç äõóêïëßá
  åßíáé ðñïöáíþò ïé äýï íÝåò óôÞëåò. Ôï Ãñáöåßï Ðñïóùðéêïý èÝëåé íá
  äéáíÝìåé óå êÜèå õðÜëëçëï ôï ìéóèïëïãéêü ôïõ áñ÷åßï. Åéäéêüôåñá, ãéá
  êÜèå Ýíáí, èá ðñÝðåé íá êáèïñéóôïýí ôá ìÝãéóôá äéáóôÞìáôá áíÜ ìéóèü.
  Äõóôõ÷þò, áõôü äåí åßíáé äõíáôü ìå SQL. ¸íáò õðÜëëçëïò Ý÷åé Ýíá ôõ÷áßï
  áñéèìü áëëáãþí èÝóåùí ìåôáîý ìéóèïëïãéêþí áëëáãþí.


  Name    Salary  Title             DateofBirth   Start           Stop
  ----    ------  -----             -----------   -----           ----
  Bob     60000   Assistant Provost 1945-04-09    1993-01-01      1993-05-30
  Bob     70000   Assistant Provost 1945-04-09    1993-06-01      1993-09-30
  Bob     70000   Provost           1945-04-09    1993-10-01      1994-01-31
  Bob     70000   Professor         1945-04-09    1994-02-01      1994-12-31

                                 Åéêüíá 1




  Óçìåéþóôå ðùò õðÜñ÷ïõí ôñåéò ãñáììÝò üðïõ ï ìéóèüò ôïõ Bob ðáñÝìåéíå
  óôáèåñüò óôéò $70,000.  Ãé áõôü ôï áðïôÝëåóìá èá Ýðñåðå íá äþóåé äýï
  ãñáììÝò ãéá ôïí Bob.


       Name    Salary  Start           Stop
       ----    ------  -----           ----
       Bob     60000   1993-01-01      1993-05-30
       Bob     70000   1993-06-01      1994-12-31




  Ìéá åíáëëáêôéêÞ ëýóç åßíáé íá äïèåß óôïí ÷ñÞóôç ìéá åêôýðùóç
  ðëçñïöïñéþí Ìéóèïý êáé Ôßôëïõ, êáé íá áöÞíïõìå ôïí ÷ñÞóôç íá êáèïñßæåé
  ðüôå Üëëáîå ï ìéóèüò ôïõ. Ç åíáëëáêôéêÞ áõôÞ äåí åßíáé ðïëý èåëêôéêÞ Þ
  ñåáëéóôéêÞ. Ìéá äåýôåñç, åßíáé íá ÷ñçóéìïðïéÞóïõìå üóï ðéï ðïëý SQL
  ãßíåôáé.


       CREATE TABLE Temp(Salary, Start, Stop)
       AS      SELECT Salary, Start, Stop
               FROM Employee;




  åðáíáëÜâáôå


               UPDATE Temp T1
               SET (T1.Stop) = (SELECT MAX(T2.Stop)
                                FROM Temp AS T2
                                WHERE T1.Salary = T2.Salary êáé T1.Start < T2.Start
                                       êáé T1.Stop >= T2.Start êáé T1.Stop < T2.Stop)
               WHERE EXISTS (SELECT *
                             FROM Temp AS T2
                             WHERE T1.Salary = T2.Salary êáé T1.Start < T2.Start
                                       êáé T1.Stop >= T2.Start êáé T1.Stop < T2.Stop)
               ìÝ÷ñé íá ìçí åíçìåñùèåß êáìéÜ ãñáììÞ;

       DELETE FROM Temp T1

       WHERE EXISTS (SELECT *
                     FROM Temp AS T2
                     WHERE T1.Salary = T2.Salary
                               êáé ((T1.Start > T2.Start êáé T1.Stop <= T2.Stop)
                               OR (T1.Start >= T2.Start êáé T1.Stop < T2.Stop))




  Ï âñüã÷ïò âñßóêåé ôá äéáóôÞìáôá åêåßíá ðïõ åðéêáëýðôïíôáé Þ åßíáé
  ãåéôïíéêÜ êáé ãé áõôü èá Ýðñåðå íá óõã÷ùíåõèïýí. Ï âñü÷ïò åêôåëåßôáé N
  öïñÝò óôçí ÷åéñüôåñç ðåñßðôùóç, üðïõ ôï N åßíáé ï áñéèìüò ôùí ãñáììþí
  óå ìéá áëõóßäá åðéêáëõðôüìåíùí Þ ãåéôïíéêþí ãñáììþí ìå ßóåò ôéìÝò. Ï
  áíáãíþóôçò ìðïñåß íá ðñïóïìïéþóåé ôçí åñþôçóç ôïõ ðßíáêá ôïõ
  ðáñáäåßãìáôïò ãéá íá ðåéóôåß ãéá ôçí ïñèüôçôá ôïõ ðáñáðÜíù.

  Ìéá ôñßôç åíáëëáêôéêÞ åßíáé íá ÷ñçóéìïðïéÞóïõìå SQL ìüíï ãéá íá
  áíïßîïõìå Ýíá êÝñóïñá (cursor) óôïí ðßíáêá. Ìéá óõíäåäåìÝíç ëßóôá
  ÷ñïíéêþí ðåñéüäùí èá êñáôçèåß, êÜèå ìéá Ý÷ïíôáò êáé Ýíá ìéóèü. Ç
  óõíäåäåìÝíç ëßóôá áñ÷éêïðïéåßôáé êåíÞ.


       DECLARE emp_cursor CURSOR FOR
               SELECT Salary, Title, Start, Stop
               FROM Employee;
       OPEN emp_cursor;
       loop:
               FETCH emp_cursor INTO :salary, :start, :stop;
               if no-data returned then goto finished;
               find position in linked list to insert this information;
               goto loop;
       finished:
       CLOSE emp_cursor;




  äéÝôñåîå ôç ëßóôá ôõðþíïíôáò çìåñïìçíßåò êáé ìéóèïýò

  Ç óõíäåäåìÝíç ëßóôá ìðïñåß êáé íá ìçí ÷ñåéÜæåôáé óôçí ðåñßðôùóç áõôÞ
  áíÜ ï êÝñóïñáò åßíáé ORDER BY Start.

  Óå êÜèå ðåñßðôùóç, ç åñþôçóç, ðïõ åßíáé êáé öõóéêÞ, åßíáé äýóêïëï íá
  åêöñáóôåß ìå ôéò õðÜñ÷ïõóåò äõíáôüôçôåò ôçò SQL-92. Ç åñþôçóç åßíáé
  ôåôñéììÝíç óå TSQL2.


               SELECT Salary
               FROM Employee




  23.16.5.  ÌÅËÅÔÇ - ÓÕÓ×ÅÔÉÓÌÏÓ (JOIN)

  Ìéá ðéï äñáóôéêÞ ðñïóÝããéóç åßíáé íá áðïöýãïõìå ôï ðñüâëçìá ôçò
  åîáãùãÞò ôçò ìéóèïëïãéêÞò éóôïñßáò ìå áíáäéïñãÜíùóç ôïõ ó÷Þìáôïò þóôå
  íá áðïóõæåýîïõìå ôï ìéóèü, ôç èÝóç êáé ôçí çìåñïìçíßá ãÝííçóçò
  (ðáñáêÜôù, áãíïïýìå ôçí çìåñïìçíßá ãÝííçóçò, ãéá áðëüôçôá).


               Employee1 (Name, Salary, Start DATE, Stop DATE)
               Employee2 (Name, Title, Start DATE, Stop DATE)




  Ï ðßíáêáò Employee1 Ý÷åé ùò áêïëïýèùò.


       Name    Salary  Start           Stop
       ----    ------  -----           ----
       Bob     60000   1993-01-01      1993-05-30
       Bob     70000   1993-06-01      1993-12-31



  Åäþ åßíáé êáé ï ðßíáêáò Employee2 ôïõ ðáñáäåßãìáôïò.


       Name    Title                   Start           Stop
       ----    ------                  -----           ----
       Bob     Assistant Provost       1993-01-01      1993-09-30
       Bob     Provost                 1993-10-01      1994-01-31
       Bob     Professor               1994-02-01      1994-12-31




  Ìå áõôÞ ôçí áëëáãÞ, ç áðüêôçóç ôçò ðëçñïöïñßáò ôïõ ìéóèïý ãéá Ýíáí
  õðÜëëçëï åßíáé ðëÝïí åýêïëç.


               SELECT Salary, Start, Stop
               FROM Employee1
               WHERE Name = 'Bob'




  ÁëëÜ ôé èá ãßíåé åÜí ôï Ãñáöåßï Ðñïóùðéêïý èåëÞóåé Ýíáí ðßíáêá ìéóèïý,
  äéáóôçìÜôùí èÝóçò (äçëáäÞ, áò õðïèÝóïõìå ðùò ôï Ã.Ð. èÝëåé Ýíáí ðßíáêá
  ôçò ìïñöÞò ôçò Åéêüíáò 1); Ìéá åíáëëáêôéêÞ ëýóç åßíáé íá ôõðþóïõìå
  ôïõò äýï ðßíáêåò êáé íá áöÞóïõìå ôïí ÷ñÞóôç íá õðïëïãßóåé ôïõò
  óõíäõáóìïýò.  Ìéá äåýôåñç åíáëëáêôéêÞ, åßíáé íá ÷ñçóéìïðïéÞóïõìå ìüíï
  SQL. Äõóôõ÷þò, ç åñþôçóç áõôÞ ðñÝðåé íá êÜíåé ìéá áíÜëõóç êáôáóôÜóåùí
  ôïõ ðùò ìéá ãñáììÞ ôïõ Employee1 åðéêáëýðôåé ãñáììÝò ôïõ Employee2.
  ÕðÜñ÷ïõí ôÝóóåñéò äõíáôÝò êáôáóôÜóåéò.


       SELECT Employee1.Name, Salary, Dept, Employee1.Start, Employee1.Stop
       FROM Employee1, Employee2
       WHERE Employee1.Name = Employee2.Name
            and Employee2.Start <= Employee1.Start and Employee1.Stop < Employee2.Stop
       UNION
       SELECT Employee1.Name, Salary, Dept, Employee1.Start, Employee2.Stop
       FROM Employee1, Employee2
       WHERE Employee1.Name = Employee2.Name
            and Employee1.Start >= Employee2.Start and Employee2.Stop < Employee1.Stop
               êáé Employee1.Start < Employee2.Stop
       UNION
       SELECT Employee1.Name, Salary, Dept, Employee2.Start, Employee1.Stop
       FROM Employee1, Employee2
       WHERE Employee1.Name = Employee2.Name
            and Employee2.Start > Employee1.Start and Employee1.Stop < Employee2.Stop
               and Employee2.Start < Employee1.Stop
       UNION
       SELECT Employee1.Name, Salary, Dept, Employee2.Start, Employee2.Stop
       FROM Employee1, Employee2
       WHERE Employee1.Name = Employee2.Name
            and Employee2.Start > Employee1.Start and Employee2.Stop < Employee1.Stop




  Ôï íá ðéÜóïõìå ôéò ôÝóóåñéò êáôáóôÜóåéò åßíáé ìéá äýóêïëç êáé
  åíäéáöÝñïõóá åñãáóßá.  Óå TSQL2, ôï íá êÜíïõìå Ýíá ÷ñïíéêü óõó÷åôéóìü
  (temporal join) åßíáé üðùò êÜðïéïò èá ðåñßìåíå.





          SELECT Employee1.Name, Salary, Dept
          FROM Employee1, Employee2
          WHERE Employee1.Name = Employee2.Name




  23.16.6.  ÌÅËÅÔÇ - ÁÈÑÏÉÓÔÉÊÏÉ ÔÅËÅÓÔÅÓ (AGGREGATES)

  Ôþñá ôï Ã.Ð. åñùôÜôáé, ðïéïò åßíáé ï ìÝãéóôïò ìéóèüò; Ðñéí ôçí
  åéóáãùãÞ ôïõ ÷ñüíïõ, áõôü Þôáí åýêïëï.


               SELECT MAX(Salary)
               FROM Employee




  Ôþñá üìùò ðïõ ç ìéóèïëïãéêÞ éóôïñßá áðïèçêåýåôáé, èá èÝëáìå ìéá
  éóôïñßá ôïõ ìÝãéóôïõ ìéóèïý áíÜ ôïí ÷ñüíï. Ôï ðñüâëçìá öõóéêÜ åßíáé,
  ðùò ç SQL äåí ðáñÝ÷åé ÷ñïíéêïýò áèñïéóôéêïýò ôåëåóôÝò. Ï åýêïëïò
  ôñüðïò íá ãßíåé ôï ðáñáðÜíù, åßíáé íá ôõðþóïõìå ôçí ðëçñïöïñßá êáé íá
  ôçí äéáôñÝîïõìå ÷åéñïêßíçôá ãéá ôá ìÝãéóôá. ÅíáëëáêôéêÜ, èá ìðïñïýóáìå
  íá êÜíïõìå ôå÷íÜóìáôá êáé íá ìåôáôñÝøïõìå ôçí áèñïéóôéêÞ åñþôçóç óå
  ìéá ìéá ìç áèñïéóôéêÞ, êáé ìåôÜ áõôÞ óå ÷ñïíéêÞ.  Ç ìç áèñïéóôéêÞ èá
  Ýâñéóêå åêåßíïõò ôïõò ìéóèïýò ãéá ôïõò ïðïßïõò äåí õðÜñ÷åé ìåãáëýôåñïò
  ìéóèüò.


               SELECT Salary
               FROM Employee AS E1
               WHERE NOT EXISTS (SELECT *
                                 FROM Employee AS E2
                                 WHERE E2.Salary > E1.Salary)




  Ç ìåôáôñïðÞ ìéáò ôÝôïéáò åñþôçóçò áðÝ÷åé ðïëý áðü ôï íá èåùñçèåß
  ôåôñéììÝíç. Ôï áêüëïõèï åßíáé ìéá ðñïóÝããéóç.


       CREATE TABLE Temp (Salary, Start, Stop)
       AS      SELECT Salary, Start, Stop
               FROM Employee;
       INSERT INTO Temp
               SELECT T.Salary, T.Start, E.Start
               FROM Temp AS T, Employee AS E
               WHERE E.Start >= T.Start and E.Start < T.Stop and E.Salary > T.Salary;

       INSERT INTO Temp
               SELECT T.Salary, T.Stop, E.Stop
               FROM Temp AS T, Employee AS E
               WHERE E.Stop > T.Start and E.Stop <= T.Stop and E.Salary > T.Salary;
       DELETE FROM Temp T
       WHERE EXISTS (SELECT *
                     FROM Employee AS E
                     WHERE ((T.Start => E.Start and T.Start < E.Stop)
                               OR (E.Start >= T.Start and E.Start < T.Stop))
                           êáé E.Salary > T.Salary;




  ÁõôÞ ç ðñïóÝããéóç äçìéïõñãåß Ýíáí âïçèçôéêü ðßíáêá. ÐñïóèÝôïõìå óå
  áõôüí ôïí ðßíáêá ôçí ÷áìçëüôåñç ðåñßïäï áðü ìéá áöáßñåóç äéáóôçìÜôùí
  êáé ôçí ìåãáëýôåñç ðåñßïäï áðü ìéá áöáßñåóç äéáóôçìÜôùí. ÌåôÜ
  äéáãñÜöïõìå üëåò ôéò ðåñéüäïõò ðïõ åðéêáëýðôïíôáé ìå êÜðïéá ãñáììÞ ðïõ
  ïñßæåôáé áðü ôçí õðü-åñþôçóç (subquery), êáé ìÝíïõí ïé NOT EXISTS.
  ÔåëéêÜ, äçìéïõñãïýìå áðü ôïí âïçèçôéêü ðßíáêá ôá ìÝãéóôá äéáóôÞìáôá,
  ìå ôïí ßäéï ôñüðï ðïõ õðïëïãßóôçêå ðáñáðÜíù ç ðëçñïöïñßá ìéóèþí. ¼ðùò
  ìðïñïýìå íá öáíôáóôïýìå, ôÝôïéïò êþäéêáò SQL åßíáé õðåñâïëéêÜ
  áíáðïôåëåóìáôéêüò ãéá íá åêôåëåóôåß, äåäïìÝíïõ ôùí óýíèåôùí
  öùëéáóìÝíùí (nested) õðïåñùôÞóåùí ìå ôïõò ôåëåóôÝò óýãêñéóçò ìå
  êñéôÞñéá áíéóüôçôáò.

  Ìéá ôñßôç åíáëëáêôéêÞ ëýóç, åßíáé íá ÷ñçóéìïðïéÞóïõìå SQL üóï ëéãüôåñï
  ãßíåôáé, êáé íá õðïëïãßóïõìå ôçí åðéèõìçôÞ éóôïñéêüôçôá áðü ìÝãéóôåò
  ôéìÝò óå ìéá Üëëç ãëþóóá ÷ñçóéìïðïéþíôáò åíóùìáôùìÝíïõò êÝñóïñåò.

  Ç åñþôçóç óå TSQL2 åßíáé áðëïýóôáôç.


               SELECT MAX(Salary)
               FROM Employee




  23.16.7.  ÐÅÑÉËÇØÇ

  Ïé ðåñéóóüôåñåò åöáñìïãÝò ìå âÜóç äåäïìÝíùí Ý÷ïõí íá áíôéìåôùðßóïõí
  êáé äåäïìÝíá ìå ÷ñïíéêÞ äéáêýìáíóç åßíáé áíÜãêç íá áíôéìåôùðéóôïýí . Ç
  õðïóôÞñéîç Ýãêõñïõ-÷ñüíïõ åßíáé áðïýóá óôçí SQL. ÐïëëÝò êïéíÝò
  ÷ñïíéêÝò åñùôÞóåéò åßíáé ëïéðüí åßôå äýóêïëåò íá åîïìïéùèïýí ìÝóù SQL,
  Þ áðáéôïýí åíóùìÜôùóç ôçò SQL óå ìéá äçëùôéêÞ / äéáäéêáóôéêÞ ãëþóóá
  (procedural), ëüãù ôçò Ýëëåéøçò õðïóôÞñéîçò ðéíÜêùí Ýãêõñïõ-÷ñüíïõ óôï
  ìïíôÝëï äåäïìÝíùí êáé óôçí êáôáóêåõÞ åñùôÞóåùí ôçò SQL.

  Óå Üëëï óçìåßï, äåßîáìå ðùò ç õðïóôÞñéîç Ýãêõñïõ-÷ñüíïõ áðáéôåß ìéêñÝò
  áëëáãÝò óôçí õëïðïßçóç ôçò DBMS, êáé ìðïñåß íá áðëïðïéÞóåé äñáìáôéêÜ
  êÜðïéåò åñùôÞóåéò, íá êÜíåé äõíáôÝò Üëëåò, êáé áêïëïýèùò íá åðéôñÝøåé
  ìåèüäïõò äåéêôïäüôçóçò êáé óôñáôçãéêÝò âåëôéóôïðïéÞóåùí ðïõ ìðïñïýí íá
  ïäçãÞóïõí óå óçìáíôéêÝò êáëõôåñåýóåéò áðüäïóçò.

  Ìå ôï íÝï ôìÞìá ôçò SQL3 ðïõ õðïóôçñßæåé ðëçñïöïñßåò ìå ÷ñïíéêÞ
  äéáêýìáíóç, ìðïñïýìå íá áñ÷ßóïõìå íá óôï÷åýïõìå óå ôÝôïéåò åöáñìïãÝò,
  åðéôñÝðïíôáò óôçí SQL3 íá äéá÷åéñßæåôáé êáëýôåñá ôá ÷ñïíéêÜ äåäïìÝíá.



       ----------------------------------------------------------------------------
                  ÅðéôñïðÞ Åðéêýñùóçò Ðñïôýðùí* X3, Ôå÷íïëïãßá Ðëçñïöïñéþí
       ÄÇÌÏÓÉÅÕÓÇ ÍÅÙÍ

       Áñ. ÅããñÜöïõ:       PR/96-0002

       ÁðÜíôçóç åéò:       Barbara Bennett óôï bbennett@itic.nw.dc.us

                   Ç X3 áíáêïéíþíåé ôçí ¸ãêñéóç åíüò ÍÝïõ ¸ñãïõ, ISO/IEC

                                9075 ÔìÞìá 7:  SQL/Temporal

       Washington D.C., ÉáíïõÜñéïò 1996
       ----------------------------------------------------------------------------




  -- ÅðéôñïðÞ Åðéêýñùóçò Ðñïôýðùí X3, Ôå÷íïëïãßá Ðëçñïöïñéþí áíáêïéíþíåé
  ôçí Ýãêñéóç åíüò ÍÝïõ ¸ñãïõ óôçí ÷ñïíéêÞ õðïóôÞñéîç SQL
  (SQL/Temporal), ISO/IEC 9075 ÔìÞìá 7.  Ï óêïðüò ôïõ ðñïôåéíüìåíïõ
  ðñïôýðïõ ðñïóäéïñßæåé Ýíá íÝï ÔìÞìá óôï áíåñ÷üìåíï ðñüôõðï SQL3, ð.÷.,
  ôï ÔìÞìá 7, ×ñïíéêÞ SQL, ùò åðåêôÜóåéò ôçò ãëþóóáò SQL ðïõ
  õðïóôçñßæïõí ôçí áíÜêôçóç , êáé åðåîåñãáóßá ÷ñïíéêþí äåäïìÝíùí óå Ýíá
  ðåñéâÜëëïí ìéáò SQL âÜóçò äåäïìÝíùí.  Ç åðüìåíç óõíåäñßá X3H2
  ðñïãñáììáôßóôçêå ãéá ôéò 11-14 Ìáñôßïõ ôïõ 1996 óôï ÊÜíóáò.

  ÅñùôÞóåéò ãéá ôï Ýñãï áõôü èá ðñÝðåé íá óôáëïýí óôï


               Chairman of X3H2,
               Dr. Donald R. Deutsch,
               Sybase, Inc., Suite 800,
               6550 Rock Spring
               Drive, Bethesda, MD  20817.
               Email: deutsch@sybase.com.




  Ìéá áñ÷éêÞ ðñüóêëçóç ãéá ðáôÝíôåò êáé ó÷åôéêÜ èÝìáôá (ðíåõìáôéêÝò
  éäéïêôçóßåò, åìðïñéêÜ óÞìáôá) (copyrights, trademarks) åêäßäåôáé áõôüí
  ôïí êáéñü.  ÕðïâÜëåôå ðëçñïöïñßåò ãéá ôá èÝìáôá áõôÜ óôï


               X3 Secretariat at
               1250 Eye Street
               NW, Suite 200,
               Washington DC  20005.
               Email: x3sec@itic.nw.dc.us
               FAX:  (202)638-4922.




  23.17.  ÔìÞìá 8 - ISO/ANSI ÐÏËÕÌÅÓÁ SQL (SQL MULTIMEDIA - SQL/MM)

  ¸íá íÝï äéåèíÝò Ýñãï ôõðïðïßçóçò ISO/IEC ãéá ôçí áíÜðôõîç ìéáò
  âéâëéïèÞêçò êëÜóåùí SQL (SQL class library) ãéá åöáñìïãÝò ðïëõìÝóùí
  åãêñßèçêå áðü ôéò áñ÷Ýò ôïõ 1993.  ÁõôÞ ç íÝá äñáóôçñéüôçôá
  ôõðïðïßçóçò, ïíïìáæüìåíç SQL Multimedia (SQL/MM), èá êáèïñßóåé ðáêÝôá
  ìå ïñéóìïýò áöçñçìÝíùí ôýðùí äåäïìÝíùí SQL (abstract data type- ADT)
  ÷ñçóéìïðïéþíôáò ôéò åõêïëßåò ãéá ôïí êáèïñéóìü ôïõ ADT êáé ôçí
  ðñüêëçóç ðïõ ðáñÝ÷åôáé óôéò áíáìåíüìåíåò ðñïäéáãñáöÝò ôïõ SQL3. Ôï
  SQL/MM Ý÷åé óáí óôü÷ï íá ôõðïðïéÞóåé ôéò âéâëéïèÞêåò êëÜóåùí ãéá ôçí
  åðéóôÞìç êáé ìç÷áíéêÞ, ôçí full-text åðåîåñãáóßá êåéìÝíïõ, êáé ôéò
  ìåèüäïõò ãéá äéá÷åßñéóç áíôéêåéìÝíùí ðïëõìÝóùí üðùò åéêüíá, Þ÷ïò,
  animation, ìïõóéêÞ, êáé âßíôåï.  Èá ðáñÝ÷åé ðéèáíÜ Ýíá SQL language
  binding áíôéêåßìåíï ðïëõìÝóùí áðü Üëëåò JTC1 ïñãáíþóåéò ðñïôõðïðïßçóçò
  (ð.÷. SC18 ãéá êåßìåíá, SC24 ãéá åéêüíåò, êáé SC29 ãéá öùôïãñáößåò êáé
  êéíïýìåíåò åéêüíåò).

  Ôï ðëÜíï áõôïý ôïõ Ýñãïõ ãéá ôï SQL/MM äåß÷íåé üôé èá åßíáé Ýíá
  óðïíäõëùôü ðñüôõðï ðïõ èá áðïôåëåßôáé áðü Ýíá áõîáíüìåíï áñéèìü
  ôìçìÜôùí.  Ôï ôìÞìá 1 èá åßíáé Ýíá Ðëáßóéï (Framework) ðïõ èá
  ðñïóäéïñßæåé ðùò èá êáôáóêåõáóôïýí ôá õðüëïéðá ìÝñç. ÊÜèå Ýíá áðü ôá
  õðüëïéðá ìÝñç, èá åßíáé áöïóéùìÝíï óå Ýíá óõãêåêñéìÝíï ðáêÝôï SQL
  åöáñìïãþí.  Ç ðáñáêÜôù äïìÞ ôìçìÜôùí ôïõ SQL/MM õðÜñ÷åé áðü ôïí
  Áýãïõóôï ôïõ 1994:


  ·  ÔìÞìá 1: Ðëáßóéï. Ìç ôå÷íéêÞ ðåñéãñáöÞ ôïõ ðùò äïìåßôáé ôï êåßìåíï.

  ·  ÔìÞìá 2: ÌÝèïäïé ÊåéìÝíïõ êáé ADTs ãéá åðåîåñãáóßá äåäïìÝíùí
     êåéìÝíïõ. Ðåñß ôéò 45 óåëßäåò.

  ·  ÔìÞìá 3: ×ùñéêÝò ÌÝèïäïé êáé ADTs ãéá äéá÷åßñéóç ÷ùñéêþí äåäïìÝíùí.
     Ðåñß ôéò 200 óåëßäåò ìå óõíåéóöïñÝò áðü åéäéêïýò óôá ÷ùñéêÜ
     äåäïìÝíá, áðü ïñãáíþóåéò 3 ÷ùñþí.

  ·  ÔìÞìá 4: Ìåèüäïõò Ãåíéêïý Óêïðïý êáé ADTs ãéá ìéãáäéêïýò áñéèìïýò.
     Ïé äõíáôüôçôåò ðåñéëáìâÜíïõí ôñéãùíïìåôñéêÝò êáé åêèåôéêÝò
     óõíáñôÞóåéò, äéáíýóìáôá, óýíïëá, êëð.  Ðñïò ôï ðáñüí ðåñß ôéò 90
     óåëßäåò.

  õðÜñ÷åé Ýíá ðëÞèïò óôÜíôáñ åñãáóéþí óôïí ôïìÝá ôïí ×ùñéêþí êáé
  Ãåùãñáöéêþí ÓõóôçìÜôùí:


  ·  ANSI X3L1 - Geographic Information Systems.  Mark Ashworth of
     Unisys is the liason between X3L1 êáé ANSI X3H2. He is also the
     editor for parts 1, 3, êáé 4 of the SQL/MM draft.

  ·  ISO TC 211 - Geographic information/Geomatics

  24.  Ôå÷íéêÞ õðïóôÞñéîç ãéá ôçí PostgreSQL

  Áí Ý÷åôå ïðïéáäÞðïôå ôå÷íéêÞ åñþôçóç Þ óõíáíôÞóåôå ïðïéïäÞðïôå
  ðñüâëçìá ìðïñåßôå íá óôåßëåôå e-mail óôï:

  ·  pgsql-questions@postgresql.org

     êáé íá ðåñéìÝíåôå áðÜíôçóç ìå e-mail óå ëéãüôåñï áðü ìéá ìÝñá.
     Êáèþò ç âÜóç ôùí ÷ñçóôþí óôï internet åßíáé ôåñÜóôéá, êáé ïé
     ÷ñÞóôåò õðïóôçñßæïõí ôïõò Üëëïõò ÷ñÞóôåò, ôï internet èá åßíáé
     éêáíü íá äþóåé åýêïëá ôå÷íéêÞ õðïóôÞñéîç óå äéóåêáôïììýñéá ÷ñÞóôåò.
     Ç õðïóôÞñéîç ìå Email åßíáé ðïëý ðéï âïëéêÞ áðü ôçí ôçëåöùíéêÞ
     õðïóôÞñéîç êáèþò ìðïñåßôå íá êÜíåôå cut êáé paste ôá ìçíýìáôá
     ëáèþí, ôçí Ýîïäï ôïõ ðñïãñÜììáôïò êëð. êáé íá ôï ìåôáäþóåôå åýêïëá
     óôç ëßóôá áëëçëïãñáößáò/newsgroup.

  Óôï ðñïóå÷Ýò ìÝëëïí, ï ïñãáíéóìüò ôçò PostgreSQL èá ðïõëÜ ôå÷íéêÞ
  õðïóôÞñéîç óå ìåãÜëåò/ìéêñÝò åôáéñåßåò, ôá Ýóïäá ðïõ èá ðñïêýøïõí èá
  ÷ñçóéìïðïéçèïýí ãéá ôç óõíôÞñçóç áñêåôþí mirror sites (web êáé ftp) óå
  üëï ôïí êüóìï.  Èá ÷ñçóéìïðïéçèïýí åðßóçò ãéá ôçí ðáñáãùãÞ åêôõðùìÝíçò
  ôåêìçñßùóçò, âïçèçìÜôùí, âéâëßùí ðïõ èá âïçèÞóïõí ôïõò ðåëÜôåò.

  Ìðïñåßôå åðßóçò íá âïçèçèåßôå áðü óõìâïõëåõôéêÝò åôáéñåßåò üðùò ç
  Anderson, WGS (Work Group Solutions). ÅðéêïéíùíÞóôå ìáæß ôïõò ãéá
  âïÞèåéá -

  ·  Work Group Solutions  <http://www.wgs.com>

  ·  Anderson Consulting  <http://www.ac.com>

  25.  ÏéêïíïìéêÜ êáé ÅðáããåëìáôéêÜ ÈÝìáôá

  Ïé åìðïñéêÝò âÜóåéò ðëçñþíïõí ðïëëïýò öüñïõò, åíäåéêôéêÜ áíáöÝñïõìå :
  ïìïóðïíäéáêïýò, ðïëéôåéáêïýò, ðùëÞóåùí, åñãáóéáêïýò, êïéíùíéêÞò
  áóöÜëåéáò, éáôñéêÞò ðåñßèáëøçò åñãáæïìÝíùí, èÝëãçôñùí ãéá ôïõò
  åñãáæüìåíïõò, êüóôç ãéá marketing êáé äéáöÞìéóç. ¼ëá áõôÜ ôá Ýîïäá äåí
  ðçãáßíïõí êáôåõèåßáí ãéá ôçí áíÜðôõîç ôçò âÜóçò. ¼ôáí áãïñÜæåôå ìéá
  åìðïñéêÞ âÜóç, ìÝñïò ôçò ôéìÞò ðçãáßíåé ãéá åðéâáñýíóåéò üðùò öüñïé,
  Ýîïäá êáé ôï éóïæýãéï ôïõ êüóôïõò ôçò âÜóçò R&D.

  Ïé åìðïñéêÝò âÜóåéò, åðßóçò, ðñÝðåé íá ðëçñþóïõí ãéá êôßñéá/êôßóìáôá
  êáé íá áãïñÜóïõí ìç÷áíÝò Unix, íá ôéò åãêáôáóôÞóïõí êáé íá ôéò
  óõíôçñÞóïõí.  ¼ëá áõôÜ ôá Ýîïäá åðéâáñýíïõí ôåëéêÜ ôïí ðåëÜôç.

  Ç PostgreSQL õðåñÝ÷åé Ýíáíôé ôùí åìðïñéêþí âÜóåùí ìéá êáé äåí
  ðëçñþíïõí Üìåóá öüñïõò êáèþò áíáðôýóóåôáé ìÝóù internet. ¸íá ôåñÜóôéï
  ðëÞèïò áíèñþðùí óõíåéóöÝñåé óôçí áíÜðôõîç ôçò PostgreSQL. Ãéá
  ðáñÜäåéãìá, óå ìéá õðïèåôéêÞ ðåñßðôùóç, áí õðÜñ÷ïõí Ýíá åêáôïììýñéï
  åôáéñåßåò óôçí ÁìåñéêÞ êáé êÜèå ìéá óõíåéóöÝñåé 10 $ (áîßá ôïõ
  ëïãéóìéêïý PostgreSQL) ôüôå êÜèå ìßá èá ëÜâåé äÝêá åêáôïììýñéá
  äïëÜñéá!!  ÁõôÞ åßíáé ç ÌÁÃÅÉÁ ôçò áíÜðôõîçò ëïãéóìéêïý óôï internet.

  ÌÝ÷ñé ôþñá, ï ðçãáßïò êþäéêáò ôçò PostgreSQL åßíáé ðåñßðïõ 2,00,000
  ãñáììÝò óå êþäéêá "C", "C++". Áí ôï êüóôïò êÜèå ãñáììÞò êþäéêá "C"
  åßíáé $ 2 ôüôå ôï óõíïëéêü êüóôïò ôçò PostgreSQL èá Þôáí óÞìåñá $
  4,00,000 (ôåôñáêüóéåò ÷éëéÜäåò äïëÜñéá!).

  ÐïëëÝò åôáéñåßåò Þäç áíáðôýóóïõí ôåñÜóôéåò ðïóüôçôåò êþäéêá "C",
  "C++". ¸ôóé, ôï íá ðÜñïõí ôïí ðçãáßï êþäéêá ôçò PostgreSQL êáé íá
  óõíåñãáóôïýí ìå Üëëåò åôáéñåßåò óôï internet èá ùöåëÞóåé ôçí åôáéñåßá
  íá åîïéêïíïìÞóåé ÷ñüíï êáé ðñïóðÜèåéá.

  26.  Ëßóôá Üëëùí âÜóåùí äåäïìÝíùí

  ÐáñáêÜôù áêïëïõèåß ëßóôá Üëëùí SQL âÜóåùí äåäïìÝíùí ãéá Unix, Linux.

  ·  ÐáôÞóôå êáé ðçãáßíåôå óôï Applications->databases.
     <http://www.caldera.com/tech-ref/linuxapps/linapps.html>

  ·  ÐáôÞóôå êáé ðçãáßíåôå óôï Applications->databases.
     <http://www.xnet.com/~blatura/linapps.shtml>

  ·  ÐçãÝò ãéá ÂÜóåéò ÄåäïìÝíùí  <http://linas.org/linux/db.html>
     ãñÜöôçêå áðü ôïí Linas Vepstas: linas@fc.net

  ·  Ëßóôá äùñåÜí âÜóåùí
     <http://cuiwww.unige.ch:80/~scg/FreeDB/FreeDB.list.html>

  ·  Ëßóôá RDBMS ôïõ Browne <http://www.hex.net/~cbbrowne/rdbms.html>
     ãñÜöôçêå áðü ôïí Christopher B. Browne cbbrowne@hex.net

  ·  Ëßóôá Ó÷åóéáêþí DBMS ôïõ SAL <http://SAL.KachinaTech.COM/H/1/>

  ·  Ëßóôá Áíôéêåéìåíïóôñáöþí DBMS ôïõ SAL
     <http://SAL.KachinaTech.COM/H/2/>

  ·  Ëßóôá âïçèçôéêþí åöáñìïãþí êáé Üëëùí âÜóåùò ôïõ SAL
     <http://SAL.KachinaTech.COM/H/3/>

  ·  ACM SIGMOD. Äåßêôçò ôïõ äçìüóéá äéáèÝóéìïõ ëïãéóìéêïý ÂÜóåùí
     ÄåäïìÝíùí <http://bunny.cs.uiuc.edu/sigmod/databaseSoftware/>

  27.  ×ñÞóéìåò óõìâïõëÝò ãéá áíáæçôÞóåéò óôï Internet World Wide Web

  Ôï Internet åßíáé áðÝñáíôï, õðÜñ÷åé óå áõôü ôåñÜóôéá ðïóüôçôá
  ëïãéóìéêïý êáé ìéá èÜëáóóá ðëçñïöïñéþí áðü êÜôù ôïõ. ÁõîÜíåôáé ìå
  ñõèìü 300% åôçóßùò óå üëï ôïí êüóìï. Õðïëïãßæåôáé üôé õðÜñ÷ïõí ðåñßðïõ
  10 åêáôïììýñéá Web sites óå üëç ôç ãç!

  Ãéá íá øÜîåôå ãéá ðëçñïöïñßåò èá ÷ñçóéìïðïéÞóåôå ìç÷áíÝò áíáæÞôçóçò
  üðùò ôï "Yahoo", "Netscape", "Lycos" êëð. Ðçãáßíåôå óôï Yahoo êáé
  ðáôÞóôå óôï search.  ×ñçóéìïðïéÞóôå ôéò åðéëïãÝò öéëôñáñßóìáôïò ãéá íá
  óõãêåêñéìåíïðïéÞóåôå ôá êñéôÞñéá áíáæÞôçóçò. Ç default åðéëïãÞ
  áíáæÞôçóçò åßíáé ç "¸îõðíç áíáæÞôçóç" ("Intelligent search") ðïõ åßíáé
  ðéï ãåíéêÞ êáé åìöáíßæåé üëåò ôéò ðéèáíüôçôåò. ÐáôÞóôå óôéò "ÅðéëïãÝò"
  ("Options") ãéá íá äéáëÝîåôå áíáæÞôçóç ìå "áêñéâÞ öñÜóç"("EXACT
  phrase"), áíáæÞôçóç ìå "AND", ìå "OR", êëð.  Ìå áõôüí ôïí ôñüðï èá
  âñåßôå ôéò ðëçñïöïñßåò ðïõ èÝëåôå ðïëý ãñçãïñüôåñá.

  28.  ÓõìðÝñáóìá

  ÌåôÜ áðü Ýñåõíá óå üëåò ôéò äéáèÝóéìåò âÜóåéò ðïõ åßíáé ÄÙÑÅÁÍ êáé ï
  ðçãáßïò ôïõò êþäéêáò åßíáé äéáèÝóéìïò, êáôáëÞîáìå üôé ÌÏÍÏ ç
  PostgreSQL åßíáé ç ÐÅÑÉÓÓÏÔÅÑÏ þñéìç, ÐÅÑÉÓÓÏÔÅÑÏ åõñÝùò äéáäåäïìÝíç
  êáé éó÷õñÞ, äùñåÜí âÜóç RDBMS SQL (áíôéêåéìåíïóôñáöÞò-ó÷åóéáêÞ), óôïí
  êüóìï.

  Ç PostgreSQL åßíáé éäéáßôåñá åëêõóôéêÞ ìéá êáé Ý÷åé Þäç ãßíåé áñêåôÞ
  äïõëåéÜ, êáé Ý÷åé ïäçãïýò ODBC, JDBC ìå ôïõò ïðïßïõò åßíáé äõíáôü íá
  ãñÜøåôå åöáñìïãÝò áíåîáñôÞôùò âÜóçò. Ïé åöáñìïãÝò ðïõ ãñÜöïíôáé óôçí
  PostgreSQL ìå ÷ñÞóç ïäçãþí ODBC, JDBC åßíáé åýêïëá ìåôáöÝñóéìåò óå
  Üëëåò âÜóåéò, üðùò Oracle, Sybase êáé Informix.  Åðßóçò, åöáñìïãÝò ðïõ
  Ý÷ïõí ãñáöôåß óå Oracle, Sybase êáé Informix ìå ÷ñÞóç ïäçãþí ODBC,
  JDBC åßíáé åýêïëá ìåôáöÝñóéìåò óôçí PostgreSQL.

  Ìðïñåß íá áíáñùôçèåßôå "ÁëëÜ ãéáôß PostgreSQL ;" Ç áðÜíôçóç åßíáé üôé
  ìéá êáé ÷ñåéÜæåôáé ðïëý ðåñéóóüôåñïò ÷ñüíïò ãéá íá áíáðôõ÷èåß Ýíá íÝï
  óýóôçìá âÜóçò áðü ôçí áñ÷Þ, åßíáé ëïãéêü íá äéáëÝîïõìå Ýíá óýóôçìá
  âÜóçò äåäïìÝíùí ðïõ éêáíïðïéåß ôéò ðáñáêÜôù óõíèÞêåò -

  ¸íá óýóôçìá âÜóçò äåäïìÝíùí

  ·  ôïõ ïðïßïõ ï ðçãáßïò êþäéêáò åßíáé äéáèÝóéìïò

  ·  ðïõ äåí Ý÷åé ðåñéïñéóìïýò óå èÝìáôá Üäåéáò, Þ êÜðïéá ðñïóáñôçìÝíç
     éäéïêôçóßá óå áõôü

  ·  ôï ïðïßï äéáíÝìåôáé ìÝóù internet

  ·  ôï ïðïßï áíáðôýóóåôáé åäþ êáé ðïëëÜ ÷ñüíéá.

  ·  ôï ïðïßï éêáíïðïéåß ìåëëïíôéêÝò áíÜãêåò üðùò ôçí SQL 3 (SQL 98)

  ·  ôï ïðïßï Ý÷åé åîåëéãìÝíåò äõíáôüôçôåò

     êáé áðëÜ óõìâáßíåé íá åßíáé ç 'PostgreSQL' ðïõ éêáíïðïéåß üëåò
     áõôÝò ôéò óõíèÞêåò êáé íá åßíáé ôï êáôÜëëçëï ëïãéóìéêü ãéá áõôÞ ôçí
     ðåñßðôùóç.

  29.  Óõ÷íÜ ÄéáôõðùìÝíåò ÅñùôÞóåéò ó÷åôéêÜ ìå ôçí PostgreSQL

  Ðçãáßíåôå óôçí ôåëåõôáßá Ýêäïóç ôïõ FAQ ãéá General, Linux êáé Irix
  óôï

  ·  <http://www.postgresql.org/docs/faq-english.shtml>

  30.  Óçìåßùóç Ðíåõìáôéêþí ÄéêáéùìÜôùí

  ÐíåõìáôéêÞ éäéïêôçóßá (c) 1997 ôïõ Al Dev (Alavoor Vasudevan). ¼ëá ôá
  äéêáéþìáôá Ý÷ïõí êáôï÷õñùèåß.

  ÊÁÌÉÁ ÅÕÈÕÍÇ ÃÉÁ ÅÐÁÊÏËÏÕÈÏÌÅÍÅÓ ÆÇÌÉÅÓ. Óå êáìßá ðåñßðôùóç ï
  óõããñáöÝáò ôïõ êåéìÝíïõ äåí åßíáé õðåýèõíïò ãéá ïðïéáäÞðïôå æçìéÜ
  (óõìðåñéëáìâáíïìÝíùí ÷ùñßò ðåñéïñéóìü, ôùí åéäéêþí, áíáðÜíôå÷ùí,
  åðáêüëïõèùí, Þ Üìåóùí/ Ýììåóùí æçìéþí, ðñïóùðéêþí âëáâþí, áðþëåéá
  åðáããåëìáôéêþí êåñäþí, äéáêïðÞ åñãáóßáò, áðþëåéá åðáããåëìáôéêþí
  äåäïìÝíùí, Þ ïðïéáäÞðïôå ÷ñçìáôéêÞ áðþëåéá) ðïõ ðñïêýøåé áðü ôç ÷ñÞóç
  áõôïý ôïõ êåéìÝíïõ.

  Ï óõããñáöÝáò äåí åããõÜôáé ôçí ïñèüôçôá, ÷ñçóéìüôçôá, åìðïñéêüôçôá ôïõ
  êåéìÝíïõ.  Ïé ìÜñêåò, åôáéñåßåò êáé ôá ïíüìáôá ôùí ðñïúüíôùí ðïõ
  áíáöÝñïíôáé óå áõôü ôï êåßìåíï åßíáé óÞìá êáôáôåèÝí ôùí áíôßóôïé÷ùí
  éäéïêôçôþí.  Óáò ðáñáðÝìðïõìå óôá îå÷ùñéóôÜ óçìåéþìáôá ðíåõìáôéêÞò
  éäéïêôçóßáò ôùí åôáéñåéþí êáé ðñïúüíôùí ðïõ áíáöÝñèçêáí óå áõôü ôï
  êåßìåíï. Åßíáé äéêÞ óáò åõèýíç íá äéáâÜóåôå êáé íá êáôáëÜâåôå ôá
  óçìåéþìáôá ðíåõìáôéêÞò éäéïêôçóßáò ôùí ïñãáíéóìþí /åôáéñåéþí/ðñïúüíôùí
  /óõããñáöÝùí ðïõ áíáöÝñèçêáí óå áõôü ôï êåßìåíï ðñéí íá ÷ñçóéìïðïéÞóåôå
  ôéò áíôßóôïé÷åò ðëçñïöïñßåò.

  AE.  ÐáñÜñôçìá A - Óýíôáîç ôïõ ANSI/ISO SQL 1992

































































  Áõôü ôï áñ÷åßï ðåñéÝ÷åé ôï äåíäñïåéäÞ äéáäñïìÞ ìå ðñïôåñáéüôçôá âÜèïõò (depth-first tree traversal) ôïõ BNF ãéá ôç ãëþóóá, ðïõ ïëïêëçñþèçêå óôéò 27-ÁÕÃ-1992 11:03:41.64.
  Ç óõãêåêñéìÝíç Ýêäïóç ôïõ BNF ðïõ ðåñéëáìâÜíåôáé åäþ åßíáé ç:  ANSI-only, SQL2-only.


  <SQL terminal character> ::=
        <SQL language character>
      | <SQL embedded language character>

  <SQL language character> ::=
        <simple Latin letter>
      | <digit>
      | <SQL special character>

  <simple Latin letter> ::=
        <simple Latin upper case letter>
      | <simple Latin lower case letter>

  <simple Latin upper case letter> ::=
            A | B | C | D | E | F | G | H | I | J | K | L | M | N | O
      | P | Q | R | S | T | U | V | W | X | Y | Z

  <simple Latin lower case letter> ::=
            a | b | c | d | e | f | g | h | i | j | k | l | m | n | o
      | p | q | r | s | t | u | v | w | x | y | z

  <digit> ::=
      0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

  <SQL special character> ::=
        <space>
      | <double quote>
      | <percent>
      | <ampersand>
      | <quote>
      | <left paren>
      | <right paren>
      | <asterisk>
      | <plus sign>
      | <comma>
      | <minus sign>
      | <period>
      | <solidus>
      | <colon>
      | <semicolon>
      | <less than operator>
      | <equals operator>
      | <greater than operator>
      | <question mark>
      | <underscore>
      | <vertical bar>

  <space> ::= !! <EMPHASIS>(space character in character set in use)

  <double quote> ::= "

  <percent> ::= %

  <ampersand> ::= &

  <quote> ::= '

  <left paren> ::= (

  <right paren> ::= )

  <asterisk> ::= *
  <plus sign> ::= +

  <comma> ::= ,

  <minus sign> ::= -

  <period> ::= .

  <solidus> ::= /

  <colon> ::= :

  <semicolon> ::= ;

  <less than operator> ::= <

  <equals operator> ::= =

  <greater than operator> ::= >

  <question mark> ::= ?

  <underscore> ::= _

  <vertical bar> ::= |

  <SQL embedded language character> ::=
        <left bracket>
      | <right bracket>

  <left bracket> ::= [

  <right bracket> ::= ]

  <token> ::=
        <nondelimiter token>
      | <delimiter token>

  <nondelimiter token> ::=
        <regular identifier>
      | <key word>
      | <unsigned numeric literal>
      | <national character string literal>
      | <bit string literal>
      | <hex string literal>

  <regular identifier> ::= <identifier body>

  <identifier body> ::=
      <identifier start> [ ( <underscore> | <identifier part> )... ]

  <identifier start> ::= <EMPHASIS>(!! See the Syntax Rules)

  <identifier part> ::=
        <identifier start>
      | <digit>

  <key word> ::=
        <reserved word>
      | <non-reserved word>

  <reserved word> ::=
        ABSOLUTE | ACTION | ADD | ALL
      | ALLOCATE | ALTER | AND
      | ANY | ARE
      | AS | ASC
      | ASSERTION | AT
      | AUTHORIZATION | AVG
      | BEGIN | BETWEEN | BIT | BIT_LENGTH
      | BOTH | BY
      | CASCADE | CASCADED | CASE | CAST
      | CATALOG
      | CHAR | CHARACTER | CHAR_LENGTH
      | CHARACTER_LENGTH | CHECK | CLOSE | COALESCE
      | COLLATE | COLLATION
      | COLUMN | COMMIT
      | CONNECT
      | CONNECTION | CONSTRAINT
      | CONSTRAINTS | CONTINUE
      | CONVERT | CORRESPONDING | COUNT | CREATE | CROSS
      | CURRENT
      | CURRENT_DATE | CURRENT_TIME
      | CURRENT_TIMESTAMP | CURRENT_USER | CURSOR
      | DATE | DAY | DEALLOCATE | DEC
      | DECIMAL | DECLARE | DEFAULT | DEFERRABLE
      | DEFERRED | DELETE | DESC | DESCRIBE | DESCRIPTOR
      | DIAGNOSTICS
      | DISCONNECT | DISTINCT | DOMAIN | DOUBLE | DROP
      | ELSE | END | END-EXEC | ESCAPE
      | EXCEPT | EXCEPTION
      | EXEC | EXECUTE | EXISTS
      | EXTERNAL | EXTRACT
      | FALSE | FETCH | FIRST | FLOAT | FOR
      | FOREIGN | FOUND | FROM | FULL
      | GET | GLOBAL | GO | GOTO
      | GRANT | GROUP
      | HAVING | HOUR
      | IDENTITY | IMMEDIATE | IN | INDICATOR
      | INITIALLY | INNER | INPUT
      | INSENSITIVE | INSERT | INT | INTEGER | INTERSECT
      | INTERVAL | INTO | IS
      | ISOLATION
      | JOIN
      | KEY
      | LANGUAGE | LAST | LEADING | LEFT
      | LEVEL | LIKE | LOCAL | LOWER
      | MATCH | MAX | MIN | MINUTE | MODULE
      | MONTH
      | NAMES | NATIONAL | NATURAL | NCHAR | NEXT | NO
      | NOT | NULL
      | NULLIF | NUMERIC
      | OCTET_LENGTH | OF
      | ON | ONLY | OPEN | OPTION | OR
      | ORDER | OUTER
      | OUTPUT | OVERLAPS
      | PAD | PARTIAL | POSITION | PRECISION | PREPARE
      | PRESERVE | PRIMARY
      | PRIOR | PRIVILEGES | PROCEDURE | PUBLIC
      | READ | REAL | REFERENCES | RELATIVE | RESTRICT
      | REVOKE | RIGHT
      | ROLLBACK | ROWS
      | SCHEMA | SCROLL | SECOND | SECTION
      | SELECT
      | SESSION | SESSION_USER | SET
      | SIZE | SMALLINT | SOME | SPACE | SQL | SQLCODE
      | SQLERROR | SQLSTATE
      | SUBSTRING | SUM | SYSTEM_USER
      | TABLE | TEMPORARY
      | THEN | TIME | TIMESTAMP
      | TIMEZONE_HOUR | TIMEZONE_MINUTE
      | TO | TRAILING | TRANSACTION
      | TRANSLATE | TRANSLATION | TRIM | TRUE
      | UNION | UNIQUE | UNKNOWN | UPDATE | UPPER | USAGE
      | USER | USING
      | VALUE | VALUES | VARCHAR | VARYING | VIEW
      | WHEN | WHENEVER | WHERE | WITH | WORK | WRITE
      | YEAR
      | ZONE

  <non-reserved word> ::=

        ADA
      | C | CATALOG_NAME
      | CHARACTER_SET_CATALOG | CHARACTER_SET_NAME
      | CHARACTER_SET_SCHEMA | CLASS_ORIGIN | COBOL | COLLATION_CATALOG
      | COLLATION_NAME | COLLATION_SCHEMA | COLUMN_NAME | COMMAND_FUNCTION
      | COMMITTED
      | CONDITION_NUMBER | CONNECTION_NAME | CONSTRAINT_CATALOG | CONSTRAINT_NAME
      | CONSTRAINT_SCHEMA | CURSOR_NAME
      | DATA | DATETIME_INTERVAL_CODE
      | DATETIME_INTERVAL_PRECISION | DYNAMIC_FUNCTION
      | FORTRAN
      | LENGTH
      | MESSAGE_LENGTH | MESSAGE_OCTET_LENGTH | MESSAGE_TEXT | MORE | MUMPS
      | NAME | NULLABLE | NUMBER
      | PASCAL | PLI
      | REPEATABLE | RETURNED_LENGTH | RETURNED_OCTET_LENGTH | RETURNED_SQLSTATE
      | ROW_COUNT
      | SCALE | SCHEMA_NAME | SERIALIZABLE | SERVER_NAME | SUBCLASS_ORIGIN
      | TABLE_NAME | TYPE
      | UNCOMMITTED | UNNAMED

  <unsigned numeric literal> ::=
        <exact numeric literal>
      | <approximate numeric literal>

  <exact numeric literal> ::=
        <unsigned integer> [ <period> [ <unsigned integer> ] ]
      | <period> <unsigned integer>

  <unsigned integer> ::= <digit>...

  <approximate numeric literal> ::= <mantissa> E <exponent>

  <mantissa> ::= <exact numeric literal>

  <exponent> ::= <signed integer>

  <signed integer> ::= [ <sign> ] <unsigned integer>

  <sign> ::= <plus sign> | <minus sign>

  <national character string literal> ::=
      N <quote> [ <character representation>... ] <quote>
        [ ( <separator>... <quote> [ <character representation>... ] <quote> )... ]

  <character representation> ::=
        <nonquote character>
      | <quote symbol>

  <nonquote character> ::= !! <EMPHASIS>(See the Syntax Rules.)

  <quote symbol> ::= <quote><quote>

  <separator> ::= ( <comment> | <space> | <newline> )...

  <comment> ::=
      <comment introducer> [ <comment character>... ] <newline>
  <comment introducer> ::= <minus sign><minus sign>[<minus sign>...]

  <comment character> ::=
        <nonquote character>
      | <quote>

  <newline> ::= !! <EMPHASIS>(implementation-defined end-of-line indicator)

  <bit string literal> ::=
      B <quote> [ <bit>... ] <quote>
        [ ( <separator>... <quote> [ <bit>... ] <quote> )... ]

  <bit> ::= 0 | 1

  <hex string literal> ::=
      X <quote> [ <hexit>... ] <quote>
        [ ( <separator>... <quote> [ <hexit>... ] <quote> )... ]

  <hexit> ::= <digit> | A | B | C | D | E | F | a | b | c | d | e | f

  <delimiter token> ::=
        <character string literal>
      | <date string>
      | <time string>
      | <timestamp string>
      | <interval string>
      | <delimited identifier>
      | <SQL special character>
      | <not equals operator>
      | <greater than or equals operator>
      | <less than or equals operator>
      | <concatenation operator>
      | <double period>
      | <left bracket>
      | <right bracket>

  <character string literal> ::=
      [ <introducer><character set specification> ]
      <quote> [ <character representation>... ] <quote>
        [ ( <separator>... <quote> [ <character representation>... ] <quote> )... ]

  <introducer> ::= <underscore>

  <character set specification> ::=
        <standard character repertoire name>
      | <implementation-defined character repertoire name>
      | <user-defined character repertoire name>
      | <standard universal character form-of-use name>
      | <implementation-defined universal character form-of-use name>

  <standard character repertoire name> ::= <character set name>

  <character set name> ::= [ <schema name> <period> ]
        <SQL language identifier>

  <schema name> ::=
      [ <catalog name> <period> ] <unqualified schema name>

  <catalog name> ::= <identifier>

  <identifier> ::=
      [ <introducer><character set specification> ] <actual identifier>

  <actual identifier> ::=
        <regular identifier>
      | <delimited identifier>
  <delimited identifier> ::=
      <double quote> <delimited identifier body> <double quote>

  <delimited identifier body> ::= <delimited identifier part>...

  <delimited identifier part> ::=
        <nondoublequote character>
      | <doublequote symbol>

  <nondoublequote character> ::= <EMPHASIS>(!! See the Syntax Rules)

  <doublequote symbol> ::= <double quote><double quote>

  <unqualified schema name> ::= <identifier>

  <SQL language identifier> ::=
      <SQL language identifier start>
         [ ( <underscore> | <SQL language identifier part> )... ]

  <SQL language identifier start> ::= <simple Latin letter>

  <SQL language identifier part> ::=
        <simple Latin letter>
      | <digit>

  <implementation-defined character repertoire name> ::=
      <character set name>

  <user-defined character repertoire name> ::= <character set name>

  <standard universal character form-of-use name> ::=
      <character set name>

  <implementation-defined universal character form-of-use name> ::=
      <character set name>

  <date string> ::=
      <quote> <date value> <quote>

  <date value> ::=
      <years value> <minus sign> <months value>
          <minus sign> <days value>

  <years value> ::= <datetime value>

  <datetime value> ::= <unsigned integer>

  <months value> ::= <datetime value>

  <days value> ::= <datetime value>

  <time string> ::=
      <quote> <time value> [ <time zone interval> ] <quote>

  <time value> ::=
      <hours value> <colon> <minutes value> <colon> <seconds value>

  <hours value> ::= <datetime value>

  <minutes value> ::= <datetime value>

  <seconds value> ::=
        <seconds integer value> [ <period> [ <seconds fraction> ] ]

  <seconds integer value> ::= <unsigned integer>

  <seconds fraction> ::= <unsigned integer>

  <time zone interval> ::=
      <sign> <hours value> <colon> <minutes value>

  <timestamp string> ::=
      <quote> <date value> <space> <time value>
          [ <time zone interval> ] <quote>

  <interval string> ::=
      <quote> ( <year-month literal> | <day-time literal> ) <quote>

  <year-month literal> ::=
        <years value>
      | [ <years value> <minus sign> ] <months value>

  <day-time literal> ::=
        <day-time interval>
      | <time interval>

  <day-time interval> ::=
      <days value>
        [ <space> <hours value> [ <colon> <minutes value>
          [ <colon> <seconds value> ] ] ]

  <time interval> ::=
        <hours value> [ <colon> <minutes value> [ <colon> <seconds value> ] ]
      | <minutes value> [ <colon> <seconds value> ]
      | <seconds value>

  <not equals operator> ::= <>

  <greater than or equals operator> ::= >=

  <less than or equals operator> ::= <=

  <concatenation operator> ::= ||

  <double period> ::= ..

  <module> ::=
      <module name clause>
      <language clause>
      <module authorization clause>
      [ <temporary table declaration>... ]
      <module contents>...

  <module name clause> ::=
      MODULE [ <module name> ]
        [ <module character set specification> ]

  <module name> ::= <identifier>

  <module character set specification> ::=
      NAMES ARE <character set specification>

  <language clause> ::=
      LANGUAGE <language name>

  <language name> ::=
      ADA | C | COBOL | FORTRAN | MUMPS | PASCAL | PLI

  <module authorization clause> ::=
        SCHEMA <schema name>
      | AUTHORIZATION <module authorization identifier>
      | SCHEMA <schema name>
            AUTHORIZATION <module authorization identifier>

  <module authorization identifier> ::=
      <authorization identifier>

  <authorization identifier> ::= <identifier>

  <temporary table declaration> ::=
      DECLARE LOCAL TEMPORARY TABLE
          <qualified local table name>
        <table element list>
        [ ON COMMIT ( PRESERVE | DELETE ) ROWS ]

  <qualified local table name> ::=
      MODULE <period> <local table name>

  <local table name> ::= <qualified identifier>

  <qualified identifier> ::= <identifier>

  <table element list> ::=
        <left paren> <table element> [ ( <comma> <table element> )... ] <right paren>

  <table element> ::=
        <column definition>
      | <table constraint definition>

  <column definition> ::=
      <column name> ( <data type> | <domain name> )
      [ <default clause> ]
      [ <column constraint definition>... ]
      [ <collate clause> ]

  <column name> ::= <identifier>

  <data type> ::=
        <character string type>
             [ CHARACTER SET <character set specification> ]
      | <national character string type>
      | <bit string type>
      | <numeric type>
      | <datetime type>
      | <interval type>

  <character string type> ::=
        CHARACTER [ <left paren> <length> <right paren> ]
      | CHAR [ <left paren> <length> <right paren> ]
      | CHARACTER VARYING <left paren> <length> <right paren>
      | CHAR VARYING <left paren> <length> <right paren>
      | VARCHAR <left paren> <length> <right paren>

  <length> ::= <unsigned integer>

  <national character string type> ::=
        NATIONAL CHARACTER [ <left paren> <length> <right paren> ]
      | NATIONAL CHAR [ <left paren> <length> <right paren> ]
      | NCHAR [ <left paren> <length> <right paren> ]
      | NATIONAL CHARACTER VARYING <left paren> <length> <right paren>
      | NATIONAL CHAR VARYING <left paren> <length> <right paren>
      | NCHAR VARYING <left paren> <length> <right paren>

  <bit string type> ::=
        BIT [ <left paren> <length> <right paren> ]
      | BIT VARYING <left paren> <length> <right paren>

  <numeric type> ::=
        <exact numeric type>
      | <approximate numeric type>

  <exact numeric type> ::=
        NUMERIC [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
      | DECIMAL [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
      | DEC [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
      | INTEGER
      | INT
      | SMALLINT

  <precision> ::= <unsigned integer>

  <scale> ::= <unsigned integer>

  <approximate numeric type> ::=
        FLOAT [ <left paren> <precision> <right paren> ]
      | REAL
      | DOUBLE PRECISION

  <datetime type> ::=
        DATE
      | TIME [ <left paren> <time precision> <right paren> ]
            [ WITH TIME ZONE ]
      | TIMESTAMP [ <left paren> <timestamp precision> <right paren> ]
            [ WITH TIME ZONE ]

  <time precision> ::= <time fractional seconds precision>

  <time fractional seconds precision> ::= <unsigned integer>

  <timestamp precision> ::= <time fractional seconds precision>

  <interval type> ::= INTERVAL <interval qualifier>

  <interval qualifier> ::=
        <start field> TO <end field>
      | <single datetime field>

  <start field> ::=
      <non-second datetime field>
          [ <left paren> <interval leading field precision> <right paren> ]

  <non-second datetime field> ::= YEAR | MONTH | DAY | HOUR
      | MINUTE

  <interval leading field precision> ::= <unsigned integer>

  <end field> ::=
        <non-second datetime field>
      | SECOND [ <left paren> <interval fractional seconds precision> <right paren> ]

  <interval fractional seconds precision> ::= <unsigned integer>

  <single datetime field> ::=
        <non-second datetime field>
            [ <left paren> <interval leading field precision> <right paren> ]
      | SECOND [ <left paren> <interval leading field precision>
            [ <comma> <interval fractional seconds precision> ] <right paren> ]

  <domain name> ::= <qualified name>

  <qualified name> ::=
      [ <schema name> <period> ] <qualified identifier>

  <default clause> ::=
        DEFAULT <default option>

  <default option> ::=
        <literal>
      | <datetime value function>
      | USER
      | CURRENT_USER
      | SESSION_USER
      | SYSTEM_USER
      | NULL

  <literal> ::=
        <signed numeric literal>
      | <general literal>

  <signed numeric literal> ::=
      [ <sign> ] <unsigned numeric literal>

  <general literal> ::=
        <character string literal>
      | <national character string literal>
      | <bit string literal>
      | <hex string literal>
      | <datetime literal>
      | <interval literal>

  <datetime literal> ::=
        <date literal>
      | <time literal>
      | <timestamp literal>

  <date literal> ::=
      DATE <date string>

  <time literal> ::=
      TIME <time string>

  <timestamp literal> ::=
      TIMESTAMP <timestamp string>

  <interval literal> ::=
      INTERVAL [ <sign> ] <interval string> <interval qualifier>

  <datetime value function> ::=
        <current date value function>
      | <current time value function>
      | <current timestamp value function>

  <current date value function> ::= CURRENT_DATE

  <current time value function> ::=
        CURRENT_TIME [ <left paren> <time precision> <right paren> ]

  <current timestamp value function> ::=
        CURRENT_TIMESTAMP [ <left paren> <timestamp precision> <right paren> ]

  <column constraint definition> ::=
      [ <constraint name definition> ]
      <column constraint>
        [ <constraint attributes> ]

  <constraint name definition> ::= CONSTRAINT <constraint name>

  <constraint name> ::= <qualified name>

  <column constraint> ::=
        NOT NULL
      | <unique specification>
      | <references specification>
      | <check constraint definition>

  <unique specification> ::=
      UNIQUE | PRIMARY KEY

  <references specification> ::=
      REFERENCES <referenced table and columns>
        [ MATCH <match type> ]
        [ <referential triggered action> ]

  <referenced table and columns> ::=
       <table name> [ <left paren> <reference column list> <right paren> ]

  <table name> ::=
        <qualified name>
      | <qualified local table name>

  <reference column list> ::= <column name list>

  <column name list> ::=
      <column name> [ ( <comma> <column name> )... ]

  <match type> ::=
        FULL
      | PARTIAL

  <referential triggered action> ::=
        <update rule> [ <delete rule> ]
      | <delete rule> [ <update rule> ]

  <update rule> ::= ON UPDATE <referential action>

  <referential action> ::=
        CASCADE
      | SET NULL
      | SET DEFAULT
      | NO ACTION

  <delete rule> ::= ON DELETE <referential action>

  <check constraint definition> ::=
      CHECK
          <left paren> <search condition> <right paren>

  <search condition> ::=
        <boolean term>
      | <search condition> OR <boolean term>

  <boolean term> ::=
        <boolean factor>
      | <boolean term> AND <boolean factor>

  <boolean factor> ::=
      [ NOT ] <boolean test>

  <boolean test> ::=
      <boolean primary> [ IS [ NOT ]
            <truth value> ]

  <boolean primary> ::=
        <predicate>
      | <left paren> <search condition> <right paren>

  <predicate> ::=
        <comparison predicate>
      | <between predicate>
      | <in predicate>
      | <like predicate>
      | <null predicate>
      | <quantified comparison predicate>
      | <exists predicate>
      | <unique predicate>
      | <match predicate>
      | <overlaps predicate>

  <comparison predicate> ::=
      <row value constructor> <comp op>
          <row value constructor>

  <row value constructor> ::=
         <row value constructor element>
      | <left paren> <row value constructor list> <right paren>
      | <row subquery>

  <row value constructor element> ::=
        <value expression>
      | <null specification>
      | <default specification>

  <value expression> ::=
        <numeric value expression>
      | <string value expression>
      | <datetime value expression>
      | <interval value expression>

  <numeric value expression> ::=
        <term>
      | <numeric value expression> <plus sign> <term>
      | <numeric value expression> <minus sign> <term>

  <term> ::=
        <factor>
      | <term> <asterisk> <factor>
      | <term> <solidus> <factor>

  <factor> ::=
      [ <sign> ] <numeric primary>

  <numeric primary> ::=
        <value expression primary>
      | <numeric value function>

  <value expression primary> ::=
        <unsigned value specification>
      | <column reference>
      | <set function specification>
      | <scalar subquery>
      | <case expression>
      | <left paren> <value expression> <right paren>
      | <cast specification>

  <unsigned value specification> ::=
        <unsigned literal>
      | <general value specification>

  <unsigned literal> ::=
        <unsigned numeric literal>
      | <general literal>

  <general value specification> ::=
        <parameter specification>
      | <dynamic parameter specification>
      | <variable specification>
      | USER
      | CURRENT_USER
      | SESSION_USER
      | SYSTEM_USER
      | VALUE

  <parameter specification> ::=
      <parameter name> [ <indicator parameter> ]

  <parameter name> ::= <colon> <identifier>

  <indicator parameter> ::=
      [ INDICATOR ] <parameter name>

  <dynamic parameter specification> ::= <question mark>

  <variable specification> ::=
      <embedded variable name> [ <indicator variable> ]

  <embedded variable name> ::=
      <colon><host identifier>

  <host identifier> ::=
        <Ada host identifier>
      | <C host identifier>
      | <COBOL host identifier>
      | <Fortran host identifier>
      | <MUMPS host identifier>
      | <Pascal host identifier>
      | <PL/I host identifier>

  <Ada host identifier> ::= !! <EMPHASIS>(See the Syntax Rules.)

  <C host identifier> ::=
      !! <EMPHASIS>(See the Syntax Rules.)

  <COBOL host identifier> ::= !! <EMPHASIS>(See the Syntax Rules.)

  <Fortran host identifier> ::= !! <EMPHASIS>(See the Syntax Rules.)

  <MUMPS host identifier> ::= !! <EMPHASIS>(See the Syntax Rules.)

  <Pascal host identifier> ::= !! <EMPHASIS>(See the Syntax Rules.)

  <PL/I host identifier> ::= !! <EMPHASIS>(See the Syntax Rules.)

  <indicator variable> ::=
      [ INDICATOR ] <embedded variable name>

  <column reference> ::= [ <qualifier> <period> ] <column name>

  <qualifier> ::=
        <table name>
      | <correlation name>

  <correlation name> ::= <identifier>

  <set function specification> ::=
        COUNT <left paren> <asterisk> <right paren>
      | <general set function>

  <general set function> ::=
        <set function type>
            <left paren> [ <set quantifier> ] <value expression> <right paren>

  <set function type> ::=
      AVG | MAX | MIN | SUM | COUNT

  <set quantifier> ::= DISTINCT | ALL

  <scalar subquery> ::= <subquery>

  <subquery> ::= <left paren> <query expression> <right paren>

  <query expression> ::=
        <non-join query expression>
      | <joined table>

  <non-join query expression> ::=
        <non-join query term>
      | <query expression> UNION  [ ALL ]
            [ <corresponding spec> ] <query term>
      | <query expression> EXCEPT [ ALL ]
            [ <corresponding spec> ] <query term>

  <non-join query term> ::=
        <non-join query primary>
      | <query term> INTERSECT [ ALL ]
            [ <corresponding spec> ] <query primary>

  <non-join query primary> ::=
        <simple table>
      | <left paren> <non-join query expression> <right paren>

  <simple table> ::=
        <query specification>
      | <table value constructor>
      | <explicit table>

  <query specification> ::=
      SELECT [ <set quantifier> ] <select list> <table expression>

  <select list> ::=
        <asterisk>
      | <select sublist> [ ( <comma> <select sublist> )... ]

  <select sublist> ::=
        <derived column>
      | <qualifier> <period> <asterisk>

  <derived column> ::= <value expression> [ <as clause> ]

  <as clause> ::= [ AS ] <column name>

  <table expression> ::=
      <from clause>
      [ <where clause> ]
      [ <group by clause> ]
      [ <having clause> ]

  <from clause> ::= FROM <table reference>
      [ ( <comma> <table reference> )... ]

  <table reference> ::=
        <table name> [ [ AS ] <correlation name>
            [ <left paren> <derived column list> <right paren> ] ]
      | <derived table> [ AS ] <correlation name>
            [ <left paren> <derived column list> <right paren> ]
      | <joined table>

  <derived column list> ::= <column name list>

  <derived table> ::= <table subquery>

  <table subquery> ::= <subquery>

  <joined table> ::=
        <cross join>
      | <qualified join>
      | <left paren> <joined table> <right paren>

  <cross join> ::=
      <table reference> CROSS JOIN <table reference>

  <qualified join> ::=
      <table reference> [ NATURAL ] [ <join type> ] JOIN
        <table reference> [ <join specification> ]

  <join type> ::=
        INNER
      | <outer join type> [ OUTER ]
      | UNION

  <outer join type> ::=
        LEFT
      | RIGHT
      | FULL

  <join specification> ::=
        <join condition>
      | <named columns join>

  <join condition> ::= ON <search condition>

  <named columns join> ::=
      USING <left paren> <join column list> <right paren>

  <join column list> ::= <column name list>

  <where clause> ::= WHERE <search condition>

  <group by clause> ::=
      GROUP BY <grouping column reference list>

  <grouping column reference list> ::=
      <grouping column reference>
          [ ( <comma> <grouping column reference> )... ]

  <grouping column reference> ::=
      <column reference> [ <collate clause> ]

  <collate clause> ::= COLLATE <collation name>

  <collation name> ::= <qualified name>

  <having clause> ::= HAVING <search condition>

  <table value constructor> ::=
      VALUES <table value constructor list>

  <table value constructor list> ::=
      <row value constructor> [ ( <comma> <row value constructor> )... ]

  <explicit table> ::= TABLE <table name>
  <query term> ::=
        <non-join query term>
      | <joined table>

  <corresponding spec> ::=
      CORRESPONDING [ BY <left paren> <corresponding column list> <right paren> ]

  <corresponding column list> ::= <column name list>

  <query primary> ::=
        <non-join query primary>
      | <joined table>

  <case expression> ::=
        <case abbreviation>
      | <case specification>

  <case abbreviation> ::=
        NULLIF <left paren> <value expression> <comma>
              <value expression> <right paren>
      | COALESCE <left paren> <value expression>
              ( <comma> <value expression> )... <right paren>

  <case specification> ::=
        <simple case>
      | <searched case>

  <simple case> ::=
      CASE <case operand>
        <simple when clause>...
        [ <else clause> ]
      END

  <case operand> ::= <value expression>

  <simple when clause> ::= WHEN <when operand> THEN <result>

  <when operand> ::= <value expression>

  <result> ::= <result expression> | NULL

  <result expression> ::= <value expression>

  <else clause> ::= ELSE <result>

  <searched case> ::=
      CASE
        <searched when clause>...
        [ <else clause> ]
      END

  <searched when clause> ::= WHEN <search condition> THEN <result>

  <cast specification> ::=
      CAST <left paren> <cast operand> AS
          <cast target> <right paren>

  <cast operand> ::=
        <value expression>
      | NULL

  <cast target> ::=
        <domain name>
      | <data type>

  <numeric value function> ::=
        <position expression>
      | <extract expression>
      | <length expression>

  <position expression> ::=
      POSITION <left paren> <character value expression>
          IN <character value expression> <right paren>

  <character value expression> ::=
        <concatenation>
      | <character factor>

  <concatenation> ::=
      <character value expression> <concatenation operator>
          <character factor>

  <character factor> ::=
      <character primary> [ <collate clause> ]

  <character primary> ::=
        <value expression primary>
      | <string value function>

  <string value function> ::=
        <character value function>
      | <bit value function>

  <character value function> ::=
        <character substring function>
      | <fold>
      | <form-of-use conversion>
      | <character translation>
      | <trim function>

  <character substring function> ::=
      SUBSTRING <left paren> <character value expression> FROM <start position>
                  [ FOR <string length> ] <right paren>

  <start position> ::= <numeric value expression>

  <string length> ::= <numeric value expression>

  <fold> ::= ( UPPER | LOWER )
       <left paren> <character value expression> <right paren>

  <form-of-use conversion> ::=
      CONVERT <left paren> <character value expression>
          USING <form-of-use conversion name> <right paren>

  <form-of-use conversion name> ::= <qualified name>

  <character translation> ::=
      TRANSLATE <left paren> <character value expression>
          USING <translation name> <right paren>

  <translation name> ::= <qualified name>

  <trim function> ::=
      TRIM <left paren> <trim operands> <right paren>

  <trim operands> ::=
      [ [ <trim specification> ] [ <trim character> ] FROM ] <trim source>

  <trim specification> ::=
        LEADING
      | TRAILING
      | BOTH

  <trim character> ::= <character value expression>

  <trim source> ::= <character value expression>

  <bit value function> ::=
      <bit substring function>

  <bit substring function> ::=
      SUBSTRING <left paren> <bit value expression> FROM <start position>
          [ FOR <string length> ] <right paren>

  <bit value expression> ::=
        <bit concatenation>
      | <bit factor>

  <bit concatenation> ::=
      <bit value expression> <concatenation operator> <bit factor>

  <bit factor> ::= <bit primary>

  <bit primary> ::=
        <value expression primary>
      | <string value function>

  <extract expression> ::=
      EXTRACT <left paren> <extract field>
          FROM <extract source> <right paren>

  <extract field> ::=
        <datetime field>
      | <time zone field>

  <datetime field> ::=
        <non-second datetime field>
      | SECOND

  <time zone field> ::=
        TIMEZONE_HOUR
      | TIMEZONE_MINUTE

  <extract source> ::=
        <datetime value expression>
      | <interval value expression>

  <datetime value expression> ::=
        <datetime term>
      | <interval value expression> <plus sign> <datetime term>
      | <datetime value expression> <plus sign> <interval term>
      | <datetime value expression> <minus sign> <interval term>

  <interval term> ::=
        <interval factor>
      | <interval term 2> <asterisk> <factor>
      | <interval term 2> <solidus> <factor>
      | <term> <asterisk> <interval factor>

  <interval factor> ::=
      [ <sign> ] <interval primary>

  <interval primary> ::=
        <value expression primary> [ <interval qualifier> ]

  <interval term 2> ::= <interval term>

  <interval value expression> ::=
        <interval term>
      | <interval value expression 1> <plus sign> <interval term 1>
      | <interval value expression 1> <minus sign> <interval term 1>
      | <left paren> <datetime value expression> <minus sign>
            <datetime term> <right paren> <interval qualifier>

  <interval value expression 1> ::= <interval value expression>

  <interval term 1> ::= <interval term>

  <datetime term> ::=
        <datetime factor>

  <datetime factor> ::=
        <datetime primary> [ <time zone> ]

  <datetime primary> ::=
        <value expression primary>
      | <datetime value function>

  <time zone> ::=
      AT <time zone specifier>

  <time zone specifier> ::=
        LOCAL
      | TIME ZONE <interval value expression>

  <length expression> ::=
        <char length expression>
      | <octet length expression>
      | <bit length expression>

  <char length expression> ::=
      ( CHAR_LENGTH | CHARACTER_LENGTH )
          <left paren> <string value expression> <right paren>

  <string value expression> ::=
        <character value expression>
      | <bit value expression>

  <octet length expression> ::=
      OCTET_LENGTH <left paren> <string value expression> <right paren>

  <bit length expression> ::=
      BIT_LENGTH <left paren> <string value expression> <right paren>

  <null specification> ::=
      NULL

  <default specification> ::=
      DEFAULT

  <row value constructor list> ::=
      <row value constructor element>
          [ ( <comma> <row value constructor element> )... ]

  <row subquery> ::= <subquery>

  <comp op> ::=
        <equals operator>
      | <not equals operator>
      | <less than operator>
      | <greater than operator>
      | <less than or equals operator>
      | <greater than or equals operator>
  <between predicate> ::=
      <row value constructor> [ NOT ] BETWEEN
        <row value constructor> AND <row value constructor>

  <in predicate> ::=
      <row value constructor>
        [ NOT ] IN <in predicate value>

  <in predicate value> ::=
        <table subquery>
      | <left paren> <in value list> <right paren>

  <in value list> ::=
      <value expression> ( <comma> <value expression> )...

  <like predicate> ::=
      <match value> [ NOT ] LIKE <pattern>
        [ ESCAPE <escape character> ]

  <match value> ::= <character value expression>

  <pattern> ::= <character value expression>

  <escape character> ::= <character value expression>

  <null predicate> ::= <row value constructor>
      IS [ NOT ] NULL

  <quantified comparison predicate> ::=
      <row value constructor> <comp op> <quantifier> <table subquery>

  <quantifier> ::= <all> | <some>

  <all> ::= ALL

  <some> ::= SOME | ANY

  <exists predicate> ::= EXISTS <table subquery>

  <unique predicate> ::= UNIQUE <table subquery>

  <match predicate> ::=
      <row value constructor> MATCH [ UNIQUE ]
          [ PARTIAL | FULL ] <table subquery>

  <overlaps predicate> ::=
      <row value constructor 1> OVERLAPS <row value constructor 2>

  <row value constructor 1> ::= <row value constructor>

  <row value constructor 2> ::= <row value constructor>

  <truth value> ::=
        TRUE
      | FALSE
      | UNKNOWN

  <constraint attributes> ::=
        <constraint check time> [ [ NOT ] DEFERRABLE ]
      | [ NOT ] DEFERRABLE [ <constraint check time> ]

  <constraint check time> ::=
        INITIALLY DEFERRED
      | INITIALLY IMMEDIATE

  <table constraint definition> ::=
      [ <constraint name definition> ]
      <table constraint> [ <constraint attributes> ]

  <table constraint> ::=
        <unique constraint definition>
      | <referential constraint definition>
      | <check constraint definition>

  <unique constraint definition> ::=
              <unique specification> even in SQL3)
      <unique specification>
        <left paren> <unique column list> <right paren>

  <unique column list> ::= <column name list>

  <referential constraint definition> ::=
      FOREIGN KEY
          <left paren> <referencing columns> <right paren>
        <references specification>

  <referencing columns> ::=
      <reference column list>

  <module contents> ::=
        <declare cursor>
      | <dynamic declare cursor>
      | <procedure>

  <declare cursor> ::=
      DECLARE <cursor name> [ INSENSITIVE ] [ SCROLL ] CURSOR
        FOR <cursor specification>

  <cursor name> ::= <identifier>

  <cursor specification> ::=
      <query expression> [ <order by clause> ]
        [ <updatability clause> ]

  <order by clause> ::=
      ORDER BY <sort specification list>

  <sort specification list> ::=
      <sort specification> [ ( <comma> <sort specification> )... ]

  <sort specification> ::=
      <sort key> [ <collate clause> ] [ <ordering specification> ]

  <sort key> ::=
        <column name>
      | <unsigned integer>

  <ordering specification> ::= ASC | DESC

  <updatability clause> ::=
      FOR
          ( READ ONLY |
            UPDATE [ OF <column name list> ] )

  <dynamic declare cursor> ::=
      DECLARE <cursor name> [ INSENSITIVE ] [ SCROLL ] CURSOR
          FOR <statement name>

  <statement name> ::= <identifier>

  <procedure> ::=
      PROCEDURE <procedure name>
          <parameter declaration list> <semicolon>
        <SQL procedure statement> <semicolon>

  <procedure name> ::= <identifier>

  <parameter declaration list> ::=
        <left paren> <parameter declaration>
            [ ( <comma> <parameter declaration> )... ] <right paren>
      | <parameter declaration>...

  <parameter declaration> ::=
        <parameter name> <data type>
      | <status parameter>

  <status parameter> ::=
      SQLCODE | SQLSTATE

  <SQL procedure statement> ::=
        <SQL schema statement>
      | <SQL data statement>
      | <SQL transaction statement>
      | <SQL connection statement>
      | <SQL session statement>
      | <SQL dynamic statement>
      | <SQL diagnostics statement>

  <SQL schema statement> ::=
        <SQL schema definition statement>
      | <SQL schema manipulation statement>

  <SQL schema definition statement> ::=
        <schema definition>
      | <table definition>
      | <view definition>
      | <grant statement>
      | <domain definition>
      | <character set definition>
      | <collation definition>
      | <translation definition>
      | <assertion definition>

  <schema definition> ::=
      CREATE SCHEMA <schema name clause>
        [ <schema character set specification> ]
        [ <schema element>... ]

  <schema name clause> ::=
        <schema name>
      | AUTHORIZATION <schema authorization identifier>
      | <schema name> AUTHORIZATION
            <schema authorization identifier>

  <schema authorization identifier> ::=
      <authorization identifier>

  <schema character set specification> ::=
      DEFAULT CHARACTER
          SET <character set specification>

  <schema element> ::=
        <domain definition>
      | <table definition>
      | <view definition>
      | <grant statement>
      | <assertion definition>
      | <character set definition>
      | <collation definition>
      | <translation definition>

  <domain definition> ::=
      CREATE DOMAIN <domain name>
          [ AS ] <data type>
        [ <default clause> ]
        [ <domain constraint>... ]
        [ <collate clause> ]

  <domain constraint> ::=
      [ <constraint name definition> ]
      <check constraint definition> [ <constraint attributes> ]

  <table definition> ::=
      CREATE [ ( GLOBAL | LOCAL ) TEMPORARY ] TABLE
          <table name>
        <table element list>
        [ ON COMMIT ( DELETE | PRESERVE ) ROWS ]

  <view definition> ::=
      CREATE VIEW <table name> [ <left paren> <view column list>
                                    <right paren> ]
        AS <query expression>
        [ WITH [ <levels clause> ] CHECK OPTION ]

  <view column list> ::= <column name list>

  <levels clause> ::=
      CASCADED | LOCAL

  <grant statement> ::=
     GRANT <privileges> ON <object name>
       TO <grantee> [ ( <comma> <grantee> )... ]
         [ WITH GRANT OPTION ]

  <privileges> ::=
        ALL PRIVILEGES
      | <action list>

  <action list> ::= <action> [ ( <comma> <action> )... ]

  <action> ::=
        SELECT
      | DELETE
      | INSERT [ <left paren> <privilege column list> <right paren> ]
      | UPDATE [ <left paren> <privilege column list> <right paren> ]
      | REFERENCES [ <left paren> <privilege column list> <right paren> ]
      | USAGE

  <privilege column list> ::= <column name list>

  <object name> ::=
        [ TABLE ] <table name>
      | DOMAIN <domain name>
      | COLLATION <collation name>
      | CHARACTER SET <character set name>
      | TRANSLATION <translation name>

  <grantee> ::=
        PUBLIC
      | <authorization identifier>

  <assertion definition> ::=
      CREATE ASSERTION <constraint name> <assertion check>
        [ <constraint attributes> ]
  <assertion check> ::=
      CHECK
          <left paren> <search condition> <right paren>

  <character set definition> ::=
      CREATE CHARACTER SET <character set name>
          [ AS ]
        <character set source>
        [ <collate clause> | <limited collation definition> ]

  <character set source> ::=
        GET <existing character set name>

  <existing character set name> ::=
        <standard character repertoire name>
      | <implementation-defined character repertoire name>
      | <schema character set name>

  <schema character set name> ::= <character set name>

  <limited collation definition> ::=
      COLLATION FROM <collation source>

  <collation source> ::=
        <collating sequence definition>
      | <translation collation>

  <collating sequence definition> ::=
        <external collation>
      | <schema collation name>
      | DESC <left paren> <collation name> <right paren>
      | DEFAULT

  <external collation> ::=
      EXTERNAL <left paren> <quote> <external collation name> <quote> <right paren>

  <external collation name> ::=
        <standard collation name>
      | <implementation-defined collation name>

  <standard collation name> ::= <collation name>

  <implementation-defined collation name> ::= <collation name>

  <schema collation name> ::= <collation name>

  <translation collation> ::=
      TRANSLATION <translation name>
          [ THEN COLLATION <collation name> ]

  <collation definition> ::=
      CREATE COLLATION <collation name> FOR
          <character set specification>
        FROM <collation source>
          [ <pad attribute> ]

  <pad attribute> ::=
        NO PAD
      | PAD SPACE

  <translation definition> ::=
      CREATE TRANSLATION <translation name>
        FOR <source character set specification>
          TO <target character set specification>
        FROM <translation source>

  <source character set specification> ::= <character set specification>

  <target character set specification> ::= <character set specification>

  <translation source> ::=
        <translation specification>

  <translation specification> ::=
        <external translation>
      | IDENTITY
      | <schema translation name>

  <external translation> ::=
      EXTERNAL <left paren> <quote> <external translation name> <quote> <right paren>

  <external translation name> ::=
        <standard translation name>
      | <implementation-defined translation name>

  <standard translation name> ::= <translation name>

  <implementation-defined translation name> ::= <translation name>

  <schema translation name> ::= <translation name>

  <SQL schema manipulation statement> ::=
        <drop schema statement>
      | <alter table statement>
      | <drop table statement>
      | <drop view statement>
      | <revoke statement>
      | <alter domain statement>
      | <drop domain statement>
      | <drop character set statement>
      | <drop collation statement>
      | <drop translation statement>
      | <drop assertion statement>

  <drop schema statement> ::=
      DROP SCHEMA <schema name> <drop behavior>

  <drop behavior> ::= CASCADE | RESTRICT

  <alter table statement> ::=
      ALTER TABLE <table name> <alter table action>

  <alter table action> ::=
        <add column definition>
      | <alter column definition>
      | <drop column definition>
      | <add table constraint definition>
      | <drop table constraint definition>

  <add column definition> ::=
      ADD [ COLUMN ] <column definition>

  <alter column definition> ::=
      ALTER [ COLUMN ] <column name> <alter column action>

  <alter column action> ::=
        <set column default clause>
      | <drop column default clause>

  <set column default clause> ::=
      SET <default clause>

  <drop column default clause> ::=
      DROP DEFAULT

  <drop column definition> ::=
      DROP [ COLUMN ] <column name> <drop behavior>

  <add table constraint definition> ::=
      ADD <table constraint definition>

  <drop table constraint definition> ::=
      DROP CONSTRAINT <constraint name> <drop behavior>

  <drop table statement> ::=
      DROP TABLE <table name> <drop behavior>

  <drop view statement> ::=
      DROP VIEW <table name> <drop behavior>

  <revoke statement> ::=
      REVOKE [ GRANT OPTION FOR ]
          <privileges>
          ON <object name>
        FROM <grantee> [ ( <comma> <grantee> )... ] <drop behavior>

  <alter domain statement> ::=
      ALTER DOMAIN <domain name> <alter domain action>

  <alter domain action> ::=
        <set domain default clause>
      | <drop domain default clause>
      | <add domain constraint definition>
      | <drop domain constraint definition>

  <set domain default clause> ::= SET <default clause>

  <drop domain default clause> ::= DROP DEFAULT

  <add domain constraint definition> ::=
      ADD <domain constraint>

  <drop domain constraint definition> ::=
      DROP CONSTRAINT <constraint name>

  <drop domain statement> ::=
      DROP DOMAIN <domain name> <drop behavior>

  <drop character set statement> ::=
      DROP CHARACTER SET <character set name>

  <drop collation statement> ::=
      DROP COLLATION <collation name>

  <drop translation statement> ::=
      DROP TRANSLATION <translation name>

  <drop assertion statement> ::=
      DROP ASSERTION <constraint name>

  <SQL data statement> ::=
        <open statement>
      | <fetch statement>
      | <close statement>
      | <select statement: single row>
      | <SQL data change statement>

  <open statement> ::=
      OPEN <cursor name>

  <fetch statement> ::=
      FETCH [ [ <fetch orientation> ] FROM ]
        <cursor name> INTO <fetch target list>

  <fetch orientation> ::=
        NEXT
      | PRIOR
      | FIRST
      | LAST
      | ( ABSOLUTE | RELATIVE ) <simple value specification>

  <simple value specification> ::=
        <parameter name>
      | <embedded variable name>
      | <literal>

  <fetch target list> ::=
      <target specification> [ ( <comma> <target specification> )... ]

  <target specification> ::=
        <parameter specification>
      | <variable specification>

  <close statement> ::=
      CLOSE <cursor name>

  <select statement: single row> ::=
      SELECT [ <set quantifier> ] <select list>
        INTO <select target list>
          <table expression>

  <select target list> ::=
      <target specification> [ ( <comma> <target specification> )... ]

  <SQL data change statement> ::=
        <delete statement: positioned>
      | <delete statement: searched>
      | <insert statement>
      | <update statement: positioned>
      | <update statement: searched>

  <delete statement: positioned> ::=
      DELETE FROM <table name>
        WHERE CURRENT OF <cursor name>

  <delete statement: searched> ::=
      DELETE FROM <table name>
        [ WHERE <search condition> ]

  <insert statement> ::=
      INSERT INTO <table name>
        <insert columns and source>

  <insert columns and source> ::=
        [ <left paren> <insert column list> <right paren> ]
              <query expression>
      | DEFAULT VALUES

  <insert column list> ::= <column name list>

  <update statement: positioned> ::=
      UPDATE <table name>
        SET <set clause list>
          WHERE CURRENT OF <cursor name>
  <set clause list> ::=
      <set clause> [ ( <comma> <set clause> )... ]

  <set clause> ::=
      <object column> <equals operator> <update source>

  <object column> ::= <column name>

  <update source> ::=
        <value expression>
      | <null specification>
      | DEFAULT

  <update statement: searched> ::=
      UPDATE <table name>
        SET <set clause list>
        [ WHERE <search condition> ]

  <SQL transaction statement> ::=
        <set transaction statement>
      | <set constraints mode statement>
      | <commit statement>
      | <rollback statement>

  <set transaction statement> ::=
      SET TRANSACTION <transaction mode>
          [ ( <comma> <transaction mode> )... ]

  <transaction mode> ::=
        <isolation level>
      | <transaction access mode>
      | <diagnostics size>

  <isolation level> ::=
      ISOLATION LEVEL <level of isolation>

  <level of isolation> ::=
        READ UNCOMMITTED
      | READ COMMITTED
      | REPEATABLE READ
      | SERIALIZABLE

  <transaction access mode> ::=
        READ ONLY
      | READ WRITE

  <diagnostics size> ::=
      DIAGNOSTICS SIZE <number of conditions>

  <number of conditions> ::= <simple value specification>

  <set constraints mode statement> ::=
      SET CONSTRAINTS <constraint name list>
          ( DEFERRED | IMMEDIATE )

  <constraint name list> ::=
        ALL
      | <constraint name> [ ( <comma> <constraint name> )... ]

  <commit statement> ::=
      COMMIT [ WORK ]

  <rollback statement> ::=
      ROLLBACK [ WORK ]

  <SQL connection statement> ::=
        <connect statement>
      | <set connection statement>
      | <disconnect statement>

  <connect statement> ::=
      CONNECT TO <connection target>

  <connection target> ::=
        <SQL-server name>
          [ AS <connection name> ]
            correspondence with Tony Gordon)
          [ USER <user name> ]
      | DEFAULT

  <SQL-server name> ::= <simple value specification>

  <connection name> ::= <simple value specification>

  <user name> ::= <simple value specification>

  <set connection statement> ::=
      SET CONNECTION <connection object>

  <connection object> ::=
        DEFAULT
      | <connection name>

  <disconnect statement> ::=
      DISCONNECT <disconnect object>

  <disconnect object> ::=
        <connection object>
      | ALL
      | CURRENT

  <SQL session statement> ::=
        <set catalog statement>
      | <set schema statement>
      | <set names statement>
      | <set session authorization identifier statement>
      | <set local time zone statement>

  <set catalog statement> ::=
      SET CATALOG <value specification>

  <value specification> ::=
        <literal>
      | <general value specification>

  <set schema statement> ::=
      SET SCHEMA <value specification>

  <set names statement> ::=
      SET NAMES <value specification>

  <set session authorization identifier statement> ::=
      SET SESSION AUTHORIZATION
          <value specification>

  <set local time zone statement> ::=
      SET TIME ZONE
          <set time zone value>

  <set time zone value> ::=
        <interval value expression>
      | LOCAL
  <SQL dynamic statement> ::=
        <system descriptor statement>
      | <prepare statement>
      | <deallocate prepared statement>
      | <describe statement>
      | <execute statement>
      | <execute immediate statement>
      | <SQL dynamic data statement>

  <system descriptor statement> ::=
        <allocate descriptor statement>
      | <deallocate descriptor statement>
      | <set descriptor statement>
      | <get descriptor statement>

  <allocate descriptor statement> ::=
      ALLOCATE DESCRIPTOR <descriptor name>
         [ WITH MAX <occurrences> ]

  <descriptor name> ::=
      [ <scope option> ] <simple value specification>

  <scope option> ::=
        GLOBAL
      | LOCAL

  <occurrences> ::= <simple value specification>

  <deallocate descriptor statement> ::=
      DEALLOCATE DESCRIPTOR <descriptor name>

  <set descriptor statement> ::=
      SET DESCRIPTOR <descriptor name>
          <set descriptor information>

  <set descriptor information> ::=
        <set count>
      | VALUE <item number>
          <set item information> [ ( <comma> <set item information> )... ]

  <set count> ::=
      COUNT <equals operator> <simple value specification 1>

  <simple value specification 1> ::= <simple value specification>

  <item number> ::= <simple value specification>

  <set item information> ::=
      <descriptor item name> <equals operator> <simple value specification 2>

  <descriptor item name> ::=
        TYPE
      | LENGTH
      | OCTET_LENGTH
      | RETURNED_LENGTH
      | RETURNED_OCTET_LENGTH
      | PRECISION
      | SCALE
      | DATETIME_INTERVAL_CODE
      | DATETIME_INTERVAL_PRECISION
      | NULLABLE
      | INDICATOR
      | DATA
      | NAME
      | UNNAMED
      | COLLATION_CATALOG
      | COLLATION_SCHEMA
      | COLLATION_NAME
      | CHARACTER_SET_CATALOG
      | CHARACTER_SET_SCHEMA
      | CHARACTER_SET_NAME

  <simple value specification 2> ::= <simple value specification>

  <item number> ::= <simple value specification>

  <get descriptor statement> ::=
      GET DESCRIPTOR <descriptor name> <get descriptor information>

  <get descriptor information> ::=
        <get count>
      | VALUE <item number>
          <get item information> [ ( <comma> <get item information> )... ]

  <get count> ::=
      <simple target specification 1> <equals operator>
           COUNT

  <simple target specification 1> ::= <simple target specification>

  <simple target specification> ::=
        <parameter name>
      | <embedded variable name>

  <get item information> ::=
      <simple target specification 2> <equals operator> <descriptor item name>>

  <simple target specification 2> ::= <simple target specification>

  <prepare statement> ::=
      PREPARE <SQL statement name> FROM <SQL statement variable>

  <SQL statement name> ::=
        <statement name>
      | <extended statement name>

  <extended statement name> ::=
      [ <scope option> ] <simple value specification>

  <SQL statement variable> ::= <simple value specification>

  <deallocate prepared statement> ::=
      DEALLOCATE PREPARE <SQL statement name>

  <describe statement> ::=
        <describe input statement>
      | <describe output statement>

  <describe input statement> ::=
      DESCRIBE INPUT <SQL statement name> <using descriptor>

  <using descriptor> ::=
      ( USING | INTO ) SQL DESCRIPTOR <descriptor name>

  <describe output statement> ::=
      DESCRIBE [ OUTPUT ] <SQL statement name> <using descriptor>

  <execute statement> ::=
      EXECUTE <SQL statement name>
        [ <result using clause> ]
        [ <parameter using clause> ]

  <result using clause> ::= <using clause>

  <using clause> ::=
        <using arguments>
      | <using descriptor>

  <using arguments> ::=
      ( USING | INTO ) <argument> [ ( <comma> <argument> )... ]

  <argument> ::= <target specification>

  <parameter using clause> ::= <using clause>

  <execute immediate statement> ::=
      EXECUTE IMMEDIATE <SQL statement variable>

  <SQL dynamic data statement> ::=
        <allocate cursor statement>
      | <dynamic open statement>
      | <dynamic fetch statement>
      | <dynamic close statement>
      | <dynamic delete statement: positioned>
      | <dynamic update statement: positioned>

  <allocate cursor statement> ::=
      ALLOCATE <extended cursor name> [ INSENSITIVE ]
          [ SCROLL ] CURSOR
        FOR <extended statement name>

  <extended cursor name> ::=
      [ <scope option> ] <simple value specification>

  <dynamic open statement> ::=
      OPEN <dynamic cursor name> [ <using clause> ]

  <dynamic cursor name> ::=
        <cursor name>
      | <extended cursor name>

  <dynamic fetch statement> ::=
      FETCH [ [ <fetch orientation> ] FROM ] <dynamic cursor name>
          <using clause>

  <dynamic close statement> ::=
      CLOSE <dynamic cursor name>

  <dynamic delete statement: positioned> ::=
      DELETE FROM <table name>
        WHERE CURRENT OF
            <dynamic cursor name>

  <dynamic update statement: positioned> ::=
      UPDATE <table name>
        SET <set clause>
            [ ( <comma> <set clause> )... ]
          WHERE CURRENT OF
              <dynamic cursor name>

  <SQL diagnostics statement> ::=
      <get diagnostics statement>

  <get diagnostics statement> ::=
      GET DIAGNOSTICS <sql diagnostics information>

  <sql diagnostics information> ::=
        <statement information>
      | <condition information>

  <statement information> ::=
      <statement information item> [ ( <comma> <statement information item> )... ]

  <statement information item> ::=
      <simple target specification> <equals operator> <statement information item name>

  <statement information item name> ::=
        NUMBER
      | MORE
      | COMMAND_FUNCTION
      | DYNAMIC_FUNCTION
      | ROW_COUNT

  <condition information> ::=
      EXCEPTION <condition number>
        <condition information item> [ ( <comma> <condition information item> )... ]

  <condition number> ::= <simple value specification>

  <condition information item> ::=
      <simple target specification> <equals operator> <condition information item name>

  <condition information item name> ::=
        CONDITION_NUMBER
      | RETURNED_SQLSTATE
      | CLASS_ORIGIN
      | SUBCLASS_ORIGIN
      | SERVER_NAME
      | CONNECTION_NAME
      | CONSTRAINT_CATALOG
      | CONSTRAINT_SCHEMA
      | CONSTRAINT_NAME
      | CATALOG_NAME
      | SCHEMA_NAME
      | TABLE_NAME
      | COLUMN_NAME
      | CURSOR_NAME
      | MESSAGE_TEXT
      | MESSAGE_LENGTH
      | MESSAGE_OCTET_LENGTH

  <embedded SQL host program> ::=
        <embedded SQL Ada program>
      | <embedded SQL C program>
      | <embedded SQL COBOL program>
      | <embedded SQL Fortran program>
      | <embedded SQL MUMPS program>
      | <embedded SQL Pascal program>
      | <embedded SQL PL/I program>

  <embedded SQL Ada program> ::= !! <EMPHASIS>(See the Syntax Rules.)

  <embedded SQL C program> ::=
        !! <EMPHASIS>(See the Syntax Rules.)

  <embedded SQL COBOL program> ::= !! <EMPHASIS>(See the Syntax Rules.)

  <embedded SQL Fortran program> ::=
      !! <EMPHASIS>(See the Syntax Rules.)

  <embedded SQL MUMPS program> ::= !! <EMPHASIS>(See the Syntax Rules.)

  <embedded SQL Pascal program> ::=
      !! <EMPHASIS>(See the Syntax Rules.)
  <embedded SQL PL/I program> ::= !! <EMPHASIS>(See the Syntax Rules.)

  <embedded SQL declare section> ::=
        <embedded SQL begin declare>
          [ <embedded character set declaration> ]
          [ <host variable definition>... ]
        <embedded SQL end declare>
      | <embedded SQL MUMPS declare>

  <embedded SQL begin declare> ::=
      <SQL prefix> BEGIN DECLARE SECTION
          [ <SQL terminator> ]

  <SQL prefix> ::=
        EXEC SQL
      | <ampersand>SQL<left paren>

  <SQL terminator> ::=
        END-EXEC
      | <semicolon>
      | <right paren>

  <embedded character set declaration> ::=
      SQL NAMES ARE <character set specification>

  <host variable definition> ::=
        <Ada variable definition>
      | <C variable definition>
      | <COBOL variable definition>
      | <Fortran variable definition>
      | <MUMPS variable definition>
      | <Pascal variable definition>
      | <PL/I variable definition>

  <Ada variable definition> ::=
      <Ada host identifier> [ ( <comma> <Ada host identifier> )... ] :
      <Ada type specification> [ <Ada initial value> ]

  <Ada type specification> ::=
        <Ada qualified type specification>
      | <Ada unqualified type specification>

  <Ada qualified type specification> ::=
        SQL_STANDARD.CHAR [ CHARACTER SET
           [ IS ] <character set specification> ]
            <left paren> 1 <double period> <length> <right paren>
      | SQL_STANDARD.BIT
            <left paren> 1 <double period> <length> <right paren>
      | SQL_STANDARD.SMALLINT
      | SQL_STANDARD.INT
      | SQL_STANDARD.REAL
      | SQL_STANDARD.DOUBLE_PRECISION
      | SQL_STANDARD.SQLCODE_TYPE
      | SQL_STANDARD.SQLSTATE_TYPE
      | SQL_STANDARD.INDICATOR_TYPE

  <Ada unqualified type specification> ::=
        CHAR
            <left paren> 1 <double period> <length> <right paren>
      | BIT
            <left paren> 1 <double period> <length> <right paren>
      | SMALLINT
      | INT
      | REAL
      | DOUBLE_PRECISION
      | SQLCODE_TYPE
      | SQLSTATE_TYPE
      | INDICATOR_TYPE

  <Ada initial value> ::=
      <Ada assignment operator> <character representation>...

  <Ada assignment operator> ::= <colon><equals operator>

  <C variable definition> ::=
        [ <C storage class> ]
        [ <C class modifier> ]
        <C variable specification>
      <semicolon>

  <C storage class> ::=
        auto
      | extern
      | static

  <C class modifier> ::= const | volatile

  <C variable specification> ::=
        <C numeric variable>
      | <C character variable>
      | <C derived variable>

  <C numeric variable> ::=
      ( long | short | float | double )
        <C host identifier> [ <C initial value> ]
              [ ( <comma> <C host identifier> [ <C initial value> ] )... ]

  <C initial value> ::=
      <equals operator> <character representation>...

  <C character variable> ::=
      char [ CHARACTER SET
               [ IS ] <character set specification> ]
        <C host identifier>
          <C array specification> [ <C initial value> ]
          [ ( <comma> <C host identifier>
            <C array specification>
                   [ <C initial value> ] )... ]

  <C array specification> ::=
      <left bracket> <length> <right bracket>

  <C derived variable> ::=
        <C VARCHAR variable>
      | <C bit variable>

  <C VARCHAR variable> ::=
      VARCHAR [ CHARACTER SET [ IS ]
          <character set specification> ]
          <C host identifier>
              <C array specification> [ <C initial value> ]
            [ ( <comma> <C host identifier>
                <C array specification>
                        [ <C initial value> ] )... ]

  <C bit variable> ::=
      BIT <C host identifier>
          <C array specification> [ <C initial value> ]
        [ ( <comma> <C host identifier>
          <C array specification>
                     [ <C initial value> ] )... ]

  <COBOL variable definition> ::=
      (01|77) <COBOL host identifier> <COBOL type specification>
        [ <character representation>... ] <period>

  <COBOL type specification> ::=
        <COBOL character type>
      | <COBOL bit type>
      | <COBOL numeric type>
      | <COBOL integer type>

  <COBOL character type> ::=
      [ CHARACTER SET [ IS ]
            <character set specification> ]
      ( PIC | PICTURE ) [ IS ] ( X [ <left paren> <length> <right paren> ] )...

  <COBOL bit type> ::=
      ( PIC | PICTURE ) [ IS ]
          ( B [ <left paren> <length> <right paren> ] )...

  <COBOL numeric type> ::=
      ( PIC | PICTURE ) [ IS ]
        S <COBOL nines specification>
      [ USAGE [ IS ] ] DISPLAY SIGN LEADING SEPARATE

  <COBOL nines specification> ::=
        <COBOL nines> [ V [ <COBOL nines> ] ]
      | V <COBOL nines>

  <COBOL nines> ::= ( 9 [ <left paren> <length> <right paren> ] )...

  <COBOL integer type> ::=
        <COBOL computational integer>
      | <COBOL binary integer>

  <COBOL computational integer> ::=
      ( PIC | PICTURE ) [ IS ] S<COBOL nines>
        [ USAGE [ IS ] ] ( COMP | COMPUTATIONAL )

  <COBOL binary integer> ::=
      ( PIC | PICTURE ) [ IS ] S<COBOL nines>
        [ USAGE [ IS ] ] BINARY

  <Fortran variable definition> ::=
      <Fortran type specification>
      <Fortran host identifier>
          [ ( <comma> <Fortran host identifier> )... ]

  <Fortran type specification> ::=
        CHARACTER [ <asterisk> <length> ]
            [ CHARACTER SET [ IS ]
                  <character set specification> ]
      | BIT [ <asterisk> <length> ]
      | INTEGER
      | REAL
      | DOUBLE PRECISION

  <MUMPS variable definition> ::=
      ( <MUMPS numeric variable> | <MUMPS character variable> )
          <semicolon>

  <MUMPS numeric variable> ::=
      <MUMPS type specification>
        <MUMPS host identifier> [ ( <comma> <MUMPS host identifier> )... ]

  <MUMPS type specification> ::=
        INT
      | DEC
            [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
      | REAL

  <MUMPS character variable> ::=
      VARCHAR <MUMPS host identifier> <MUMPS length specification>
        [ ( <comma> <MUMPS host identifier> <MUMPS length specification> )... ]

  <MUMPS length specification> ::=
      <left paren> <length> <right paren>

  <Pascal variable definition> ::=
      <Pascal host identifier> [ ( <comma> <Pascal host identifier> )... ] <colon>
        <Pascal type specification> <semicolon>

  <Pascal type specification> ::=
        PACKED ARRAY
            <left bracket> 1 <double period> <length> <right bracket>
          OF CHAR
            [ CHARACTER SET [ IS ]
                  <character set specification> ]
      | PACKED ARRAY
            <left bracket> 1 <double period> <length> <right bracket>
          OF BIT
      | INTEGER
      | REAL
      | CHAR [ CHARACTER SET
                                  [ IS ] <character set specification> ]
      | BIT

  <PL/I variable definition> ::=
      (DCL | DECLARE)
          (   <PL/I host identifier>
            | <left paren> <PL/I host identifier>
                  [ ( <comma> <PL/I host identifier> )... ] <right paren> )
      <PL/I type specification>
      [ <character representation>... ] <semicolon>

  <PL/I type specification> ::=
        ( CHAR | CHARACTER ) [ VARYING ]
            <left paren><length><right paren>
            [ CHARACTER SET
                  [ IS ] <character set specification> ]
      | BIT [ VARYING ] <left paren><length><right paren>
      | <PL/I type fixed decimal> <left paren> <precision>
            [ <comma> <scale> ] <right paren>
      | <PL/I type fixed binary> [ <left paren> <precision> <right paren> ]
      | <PL/I type float binary> <left paren> <precision> <right paren>

  <PL/I type fixed decimal> ::=
        ( DEC | DECIMAL ) FIXED
      | FIXED ( DEC | DECIMAL )

  <PL/I type fixed binary> ::=
        ( BIN | BINARY ) FIXED
      | FIXED ( BIN | BINARY )

  <PL/I type float binary> ::=
        ( BIN | BINARY ) FLOAT
      | FLOAT ( BIN | BINARY )

  <embedded SQL end declare> ::=
      <SQL prefix> END DECLARE SECTION
          [ <SQL terminator> ]

  <embedded SQL MUMPS declare> ::=
      <SQL prefix>
        BEGIN DECLARE SECTION
          [ <embedded character set declaration> ]
          [ <host variable definition>... ]
        END DECLARE SECTION
      <SQL terminator>

  <embedded SQL statement> ::=
      <SQL prefix>
        <statement or declaration>
      [ <SQL terminator> ]

  <statement or declaration> ::=
        <declare cursor>
      | <dynamic declare cursor>
      | <temporary table declaration>
      | <embedded exception declaration>
      | <SQL procedure statement>

  <embedded exception declaration> ::=
      WHENEVER <condition> <condition action>

  <condition> ::=
      SQLERROR | NOT FOUND

  <condition action> ::=
      CONTINUE | <go to>

  <go to> ::=
      ( GOTO | GO TO ) <goto target>

  <goto target> ::=
        <host label identifier>
      | <unsigned integer>
      | <host PL/I label variable>

  <host label identifier> ::= !!<EMPHASIS>(See the Syntax Rules.)

  <host PL/I label variable> ::= !!<EMPHASIS>(See the Syntax Rules.)

  <preparable statement> ::=
        <preparable SQL data statement>
      | <preparable SQL schema statement>
      | <preparable SQL transaction statement>
      | <preparable SQL session statement>
      | <preparable implementation-defined statement>

  <preparable SQL data statement> ::=
        <delete statement: searched>
      | <dynamic single row select statement>
      | <insert statement>
      | <dynamic select statement>
      | <update statement: searched>
      | <preparable dynamic delete statement: positioned>
      | <preparable dynamic update statement: positioned>

  <dynamic single row select statement> ::= <query specification>

  <dynamic select statement> ::= <cursor specification>

  <preparable dynamic delete statement: positioned> ::=
     DELETE [ FROM <table name> ]
        WHERE CURRENT OF <cursor name>

  <preparable dynamic update statement: positioned> ::=
     UPDATE [ <table name> ]
        SET <set clause list>
        WHERE CURRENT OF <cursor name>

  <preparable SQL schema statement> ::=
        <SQL schema statement>

  <preparable SQL transaction statement> ::=
        <SQL transaction statement>

  <preparable SQL session statement> ::=
        <SQL session statement>

  <preparable implementation-defined statement> ::=
      !! <EMPHASIS>(See the Syntax Rules.)

  <direct SQL statement> ::=
      <directly executable statement> <semicolon>

  <directly executable statement> ::=
        <direct SQL data statement>
      | <SQL schema statement>
      | <SQL transaction statement>
      | <SQL connection statement>
      | <SQL session statement>
      | <direct implementation-defined statement>

  <direct SQL data statement> ::=
        <delete statement: searched>
      | <direct select statement: multiple rows>
      | <insert statement>
      | <update statement: searched>
      | <temporary table declaration>

  <direct select statement: multiple rows> ::=
      <query expression> [ <order by clause> ]

  <direct implementation-defined statement> ::=
      !!<EMPHASIS>(See the Syntax Rules)

  <SQL object identifier> ::=
      <SQL provenance> <SQL variant>

  <SQL provenance> ::= <arc1> <arc2> <arc3>

  <arc1> ::= iso | 1 | iso <left paren> 1 <right paren>

  <arc2> ::= standard | 0 | standard <left paren> 0 <right paren>

  <arc3> ::= 9075

  <SQL variant> ::= <SQL edition> <SQL conformance>

  <SQL edition> ::= <1987> | <1989> | <1992>

  <1987> ::= 0 | edition1987 <left paren> 0 <right paren>

  <1989> ::= <1989 base> <1989 package>

  <1989 base> ::= 1 | edition1989 <left paren> 1 <right paren>

  <1989 package> ::= <integrity no> | <integrity yes>

  <integrity no> ::= 0 | IntegrityNo <left paren> 0 <right paren>

  <integrity yes> ::= 1 | IntegrityYes <left paren> 1 <right paren>

  <1992> ::= 2 | edition1992 <left paren> 2 <right paren>

  <SQL conformance> ::= <low> | <intermediate> | <high>

  <low> ::= 0 | Low <left paren> 0 <right paren>

  <intermediate> ::= 1 | Intermediate <left paren> 1 <right paren>

  <high> ::= 2 | High <left paren> 2 <right paren>




  AF.  ÐáñÜñôçìá B - Ïäçãüò ÅêìÜèçóçò SQL ãéá áñ÷Üñéïõò


  AF.1.  Ïäçãüò ÅêìÜèçóçò ãéá PostgreSQL

  Ìáæß ìå ôç äéáíïìÞ ôçò PostgreSQL äéáíåßìåôáé ïäçãüò åêìÜèçóçò SQL.
  Ôá scripts ôïõ ïäçãïý åêìÜèçóçò SQL âñßóêïíôáé óôïí êáôÜëïãï
  src/tutorial

  AF.2.  Äåßêôåò Internet äéåõèýíóåùí

  Ïé áñ÷Üñéïé ìðïñïýí íá âñïõí ïäçãü åêìÜèçóçò SQL óôï

  ·  <http://w3.one.net/~jhoffman/sqltut.htm>

     Ó÷üëéá Þ õðïäåßîåéò; Óôåßëôå mail óôï

  ·  jhoffman@one.net

     Ôá ðáñáêÜôù sites ðñïôåßíïíôáé áðü ôïí John Hoffman:

  ·  Åã÷åéñßäéï SQL
     <http://www.contrib.andrew.cmu.edu/~shadow/sql.html>

  ·  ÅðéêïéíùíÞóôå ìå ôçí SQL Pro
     <http://www.inquiry.com/techtips/thesqlpro/>

  ·  ×ñÞóéìá Sites ãéá ôç ó÷åóéáêÞ âÜóç äåäïìÝíùí SQL Pro
     <http://www.inquiry.com/techtips/thesqlpro/usefulsites.html>

  ·  Êþäéêáò ãéá ðñïãñáììáôéóôÝò
     <http://infoweb.magi.com/~steve/develop.html>

  ·  DBMS Sites  <http://info.itu.ch/special/wwwfiles> Ðçãáßíåôå åäþ êáé
     äåßôå ôï áñ÷åßï comp_db.html

  ·  DB Ingredients  <http://www.compapp.dcu.ie/databases/f017.html>

  ·  Web Authoring  <http://www.stars.com/Tutorial/CGI/>

  ·  Computing Dictionary   <http://wfn-shop.princeton.edu/cgi-
     bin/foldoc>

  ·  DBMS Lab/Links  <http://www-ccs.cs.umass.edu/db.html>

  ·  SQL FAQ
     <http://epoch.CS.Berkeley.EDU:8000/sequoia/dba/montage/FAQ>
     Ðçãáßíåôå åäþ êáé äåßôå ôï áñ÷åßï SQL_TOC.html

  ·  ÂÜóåéò SQL  <http://chaos.mur.csu.edu.au/itc125/cgi/sqldb.html>

  ·  RIT Óåëßäá ãéá Ó÷åäéáóìü ÂÜóåùí
     <http://www.it.rit.edu/~wjs/IT/199602/icsa720/icsa720postings.html>
  ·  Database Jump Site  <http://www.pcslink.com/~ej/dbweb.html>

  ·  ÂïçèÞìáôá ðñïãñáììáôéóìïý óôï Web
     <http://www.eng.uc.edu/~jtilley/tutorial.html>

  ·  ÐçãÝò ãéá ÐñïãñáììáôéóôÝò
     <http://www.ndev.com/ndc2/support/resources.htp>

  ·  Ëßóôá åñùôÞóåùí  <http://ashok.pair.com/sql.htm>

  ·  ÄéÜöïñá IMAGE SQL
     <http://jazz.external.hp.com/training/sqltables/main.html>

  ·  Internet Resource List  <http://www.eit.com/web/netservices.html>

  AG.  Appendix C - Ïäçãßåò ãéá ãñÞãïñç åãêáôÜóôáóç Linux

  Áí óêïðåýåôå íá ÷ñçóéìïðïéÞóåôå ôç PostgreSQL óå Linux, êáé ÷ñåéÜæåóôå
  âïÞèåéá êáôÜ ôçí åãêáôÜóôáóç óôï Linux, åðéóêåöôåßôå ôïõò äåßêôåò ðïõ
  èá âñåßôå óôï Appendix. Êáëýðôïõí ôá ðáñáêÜôù èÝìáôá -


  ·  ×áñáêôçñéóôéêÜ ôïõ Linux - Ãéáôß ôï Linux åßíáé êáëýôåñï ãéá
     åîõðçñåôçôÞ âÜóåùí äåäïìÝíùí óå óýãêñéóç ìå ôá Windows 95/NT

  ·  Ïäçãßåò ãéá 10ëåðôç ãñÞãïñç åãêáôÜóôáóç Linux

  ·  Ëßóôá áíáëïãéþí Microsoft-Linux

  ·  ÃñÞãïñá âÞìáôá ãéá íá ìåôáãëùôôßóåôå ôïí ðõñÞíá Linux


  ·  Main Site is at  <http://members.spree.com/technology/aldev/>

  ·  Mirror site  <http://aldev.8m.com>

  ·  Mirror site  <http://aldev.webjump.com>

  ·  Mirror site  <http://homepages.infoseek.com/~aldev1/index.html>

  ·  Mirror site  <http://www3.bcity.com/aldev/>