Åëëçíéêü 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 ______________________________________________________________________ [1m1. ÅéóáãùãÞ[0m Ï óêïðüò áõôïý ôïõ êåéìÝíïõ åßíáé íá äþóåé êáôáíïçôïýò äåßêôåò/URLs ãéá íá óôÞóåôå ãñÞãïñá ôçí PostgreSQL êáé åðßóçò íá õðåñáóðéóôåß ôá ðëåïíåêôÞìáôá åíüò Áíïéêôïý ÓõóôÞìáôïò Ðçãáßïõ Êþäéêá (Open Source Code) üðùò ç PostgreSQL, Linux. ÊÜèå óýóôçìá õðïëïãéóôÞ óôïí êüóìï ÷ñåéÜæåôáé ìéá âÜóç äåäïìÝíùí ãéá íá áðïèçêåýåé /áíáêôÜ ðëçñïöïñßåò. Ï êýñéïò ëüãïò ðïõ ÷ñçóéìïðïéïýìå ôïí õðïëïãéóôÞ åßíáé ãéá íá áðïèçêåýïõìå, íá áíáêôïýìå êáé íá åðåîåñãáæüìáóôå ôçí ðëçñïöïñßá êáé íá ôá êÜíïõìå üëá áõôÜ ãñÞãïñá, åîïéêïíïìþíôáò Ýôóé ÷ñüíï. Ôáõôü÷ñïíá, ôï óýóôçìá ðñÝðåé íá åßíáé áðëü, áîéüðéóôï, ïéêïíïìéêü êáé ðïëý åýêïëï óôç ÷ñÞóç ôïõ. Ç ÂÜóç ÄåäïìÝíùí åßíáé [1mÓÕÓÔÇÌÁ ÆÙÔÉÊÇÓ ÓÇÌÁÓÉÁÓ [22mãéá êÜèå åôáéñßá óôïí êüóìï ìéá êáé óå áõôÞ áðïèçêåýïíôáé ðïëý óçìáíôéêÝò ðëçñïöïñßåò. Ôá ðéï äçìïöéëÞ óõóôÞìáôá âÜóåùí äåäïìÝíùí âáóßæïíôáé óôéò 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 áíïßãïíôáò ôïí ðçãáßï êþäéêá óå Ýíá ðåëþñéï áñéèìü áíèñþðéíùí ìõáëþí äéáóõíäåäåìÝíùí ìÝóù ôçò Õðåñëåùöüñïõ Ðëçñïöïñéþí. ¼óï ìåãáëýôåñïò ï áñéèìüò ôùí áíèñþðùí ðïõ åñãÜæïíôáé ðÜíù ó' áõôü, ôüóï êáëýôåñç èá åßíáé ç ðïéüôçôá ôïõ ëïãéóìéêïý. Ôï Áíïéêôü ÌïíôÝëï Ðçãáßïõ Êþäéêá èá åìðïäßóåé åðßóçò [1môçí áíáêÜëõøç ôïõ ôñï÷ïý áðü ôçí áñ÷Þ [22m, èá ìåéþóåé [1môç[0m [1mäéðëÞ äïõëåéÜ [22mêáé èá åßíáé ðïëý ïéêïíïìéêü, èá åîïéêïíïìåß ÷ñüíï óôç äéáíïìÞ êáé áêïëïõèåß ôïõò íüìïõò ôçò ìïíôÝñíáò ïéêïíïìßáò ãéá âåëôéóôïðïßçóç ôùí åèíéêþí êáé ãåíéêþí ðüñùí. ¼ôáí ìéá åñãáóßá ëïãéóìéêïý Ý÷åé ãßíåé áðü Üëëïõò, ôüôå [1mÄÅÍ [22m÷ñåéÜæåôáé íá ôçí êÜíåôå åóåßò ðÜëé. Äå èá óðáôáëÞóåôå ôïí ðïëýôéìï ÷ñüíï óáò óå êÜôé ðïõ Ý÷åé Þäç ãßíåé êáëÜ. Êáèþò èá ìðáßíïõìå óôïí 21ï áéþíá, èá õðÜñ÷åé áëëáãÞ óôïí ôñüðï ðïõ ðáßñíïõìå ôï ëïãéóìéêü ãéá ÷ñÞóç. Ïé ðåëÜôåò èá ðñïôéìïýí ôá áíïéêôÜ óõóôÞìáôá ëïãéóìéêïý üðùò ç PostgreSQL, ôï Linux êëð. Áí áãïñÜóåôå åêôåëÝóéìá ðñïãñÜììáôá, äå èá ðÜñåôå êáé ôïí êþäéêá êáé ôá äéêáéþìáôÜ ôïõ. Ï ðçãáßïò êþäéêáò åßíáé áíåêôßìçôï óôïé÷åßï åíþ ôá åêôåëÝóéìá äåí Ý÷ïõí êáìéÜ áîßá. Ôï íá áãïñÜóåôå ëïãéóìéêü [4mìðïñåß[24m íá áíÞêåé óôï ðáñåëèüí. Ãéá íá áãïñÜóåôå êáëü õëéêü (hardware), áîßæåé íá îïäÝøåôå ÷ñÞìáôá êáé íá ðÜñåôå ôï ëïãéóìéêü áðü ôï internet. Óçìáíôéêü óçìåßï åßíáé ôï õëéêü ôïõ õðïëïãéóôÞ ôï ïðïßï [1mêÜíåé ôïí[0m [1mêýñéï üãêï ôçò äïõëåéÜò[22m. 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" åßíáé ç [1mìåãáëýôåñç [22måôáéñåßá ðáñáãùãÞò ëïãéóìéêïý óå üëï ôïí êüóìï! [1m2. ¶ëëåò ÌïñöÝò áõôïý ôïõ êåéìÝíïõ[0m Áõôü ôï êåßìåíï åßíáé ôõðùìÝíï óå 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 [1mÐÑÏÓÏ×Ç: [22mÔï êåßìåíï áõôü åßíáé ìåãÜëï, ï óõíïëéêüò áñéèìüò óåëßäùí (óå postscript) áí ôõðùèåß èá åßíáé ðåñßðïõ 113 óåëßäåò óôá ÁããëéêÜ (óôá åëëçíéêÜ èá ðñÝðåé íá åßíáé ðåñéóóüôåñåò). Ìðïñåßôå íá äéáâÜóåôå ôï êåßìåíï óå ìïñöÞ HTML ÷ñçóéìïðïéþíôáò Netscape Navigator, Microsoft Internet explorer, Redhat Baron Web browser Þ ïðïéïäÞðïôå áðü ôïõò Üëëïõò 10 web browsers. Ìðïñåßôå íá äéáâÜóåôå ôçí Ýîïäï ôïõ óå latex, LyX ÷ñçóéìïðïéþíôáò ôï LyX, Ýíá X-Windows ãñáöéêü ðñüãñáììá äéáóýíäåóçò ìå latex. [1m3. Ïé íüìïé ôçò ÖõóéêÞò åöáñìüæïíôáé óôï ëïãéóìéêü![0m Óå áõôü ôï êåöÜëáéï, èá óáò äåßîïõìå ðþò ç åðéóôÞìç ðáßæåé óçìáíôéêü ñüëï óôç äçìéïõñãßá äéáöüñùí áíôéêåéìÝíùí üðùò ôï ëïãéóìéêü, ôï óýìðáí, ôá Üôïìá, ôçí åíÝñãåéá áêüìá êáé åóÜò ôïõò ßäéïõò! Áõôü ôï êåöÜëáéï èá óáò äåßîåé åðßóçò ãéáôß ç ãíþóç ôçò åðéóôÞìçò åßíáé ðïëý óçìáíôéêÞ ÐÑÉÍ íá îåêéíÞóåôå íá ÷ñçóéìïðïéåßôå ôá ðñïúüíôá ôçò. Ôá áíôéêåßìåíá ðåñéëáìâÜíïõí ï,ôéäÞðïôå - ãéá ðáñÜäåéãìá ç 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 õðÜñ÷åé óÞìåñá ëüãù ôçò åíÝñãåéáò êáé ôïõ ÷ñüíïõ. Ç åíÝñãåéá åßíáé áõôÞ ðïõ äçìéïýñãçóå ôïí êüóìï, ôïí áíèñþðéíï åãêÝöáëï êáé ðïëëÜ Üëëá ðñÜãìáôá! Ç ìÜæá êáé ç åíÝñãåéá åßíáé ç [1mÉÄÉÁ [22mÏÍÔÏÔÇÔÁ! Ôï ãåãïíüò üôé ç ìÜæá êáé ç åíÝñãåéá åßíáé ôï ßäéï ðñÜãìá Þôáí Üãíùóôï óôïõò áíèñþðïõò 100 ÷ñüíéá ðñéí! Ïé êõøÝëåò óôïí áíèñþðéíï åãêÝöáëï êáôáíáëþíïõí åíÝñãåéá êáèþò åðåîåñãÜæïíôáé (ðáñÜãïõí ëïãéóìéêü) ìåôáôñÝðïíôáò ôç ÷çìéêÞ åíÝñãåéá óå èåñìéêÞ åíÝñãåéá. Áêüìç êáé ôþñá ðïõ äéáâÜæåôå áõôÞ ôçí ðáñÜãñáöï, ïé êõøÝëåò óôïí åãêÝöáëü óáò êáßíå âåíæßíç êáé ÷ñçóéìïðïéïýí ôçí åíÝñãåéá. Ãé' áõôü ÓÔÁÌÁÔÇÓÔÅ ÍÁ ÄÉÁÂÁÆÅÔÅ ÔÙÑÁ! Ç åíÝñãåéá ôùí íåõñþíùí (êõøÝëåò óôïí åãêÝöáëï) ìðïñåß íá ìåôñçèåß óôá åñãáóôÞñéá. Ãéá ðáñÜäåéãìá, õðÜñ÷ïõí ðïëëÜ üñãáíá üðùò ïé "Áíé÷íåõôÝò ØåìÜôùí" êáé Üëëá éáôñéêÜ üñãáíá ðïõ ìðïñïýí íá ìåôñÞóïõí ôçí åíÝñãåéá ðïõ êáôáíáëþíåé ï åãêÝöáëïò. ¼ëá áõôÜ õðïíïïýí üôé ï áíèñþðéíïò åãêÝöáëïò åßíáé ìéá èåñìïäõíáìéêÞ ðçãÞ åíÝñãåéáò. ÅðåéäÞ ï Üíèñùðïò åßíáé ìéá èåñìïäõíáìéêÞ ðçãÞ åíÝñãåéáò, ïé íüìïé ôçò èåñìïäõíáìéêÞò åöáñìüæïíôáé óôïí åãêÝöáëï êáé Ýôóé ç èåñìïäõíáìéêÞ Ý÷åé Ýììåóá áðïôåëÝóìáôá óå ëïãéóìéêü üðùò ç PostgreSQL. ¼ðùò óå êÜèå åðéóôÞìç, åßíáé áäýíáôï íá ÷ôßóåôå ïðïéïäÞðïôå óýóôçìá Þ èåùñßá (óõìðåñéëáìâáíïìÝíïõ åíüò óõóôÞìáôïò âÜóåùí äåäïìÝíùí) ðïõ íá åßíáé 100 % ôÝëåéï êáé ÷ùñßò óöÜëìáôá. Åßíáé óá íá êõíçãÜôå Ýíáí áíåìïóôñüâéëï , äå èá êáôáöÝñïõìå [1mÐÏÔÅ [22míá öôéÜîïõìå ôï ôÝëåéï óýóôçìá Þ èåùñßá. Ëåðôïìåñåßò ìáèçìáôéêÝò åîéóþóåéò/óõæçôÞóåéò ãéá ôçí áðüäåéîç ôçò ýðáñîçò åíüò 'ôÝëåéïõ óõóôÞìáôïò' åßíáé áäýíáôï íá ãßíïõí åäþ êáèþò îåðåñíÜ ôï óêïðü áõôïý ôïõ êåéìÝíïõ. Êáé ìéá ôÝôïéá ìáèçìáôéêÞ óõæÞôçóç áó÷ïëåßôáé ìå ôïí Üðåéñï áñéèìü äéáóôÜóåùí ðïõ õðÜñ÷ïõí óôç öýóç. Äõóôõ÷þò, ïé Üíèñùðïé ìðïñïýí íá äïõí Þ íá íéþóïõí 4 äéáóôÜóåéò áëëÜ ôá ìáèçìáôéêÜ ìðïñïýí íá åîåñåõíÞóïõí åýêïëá êáé Üëëåò äéáóôÜóåéò. ¶ëëåò äéáóôÜóåéò åßíáé [1m'Üðåéñá ìéêñüôåñåò' [22máðü ôá Üôïìá êáé ôá ßäéá ôá Üôïìá åßíáé ìå ôç óåéñÜ ôïõò ðïëý ìéêñÜ êáé ôï áíèñþðéíï ìÜôé äå ìðïñåß íá ôá îå÷ùñßóåé! Ôá ÌáèçìáôéêÜ åßíáé ðïëý éó÷õñÜ ìéá êáé ìðïñïýí íá áíáëýóïõí êáé íá åîçãÞóïõí ôç ãÝííçóç/ èÜíáôï üëçò ôçò õöçëßïõ. Ï êüóìïò ìáò Ý÷åé ó÷åäüí [1mìçäåíéêü ìÝãåèïò [22máí ôïí êïéôÜîåôå áðü Üëëï óýìðáí êáé áíôßóôñïöá. Áõôü óçìáßíåé üôé ï êüóìïò ìáò äåí åßíáé ïñáôüò (äåí õðÜñ÷åé) ãéá ôá Üôïìá ðïõ âñßóêïíôáé óå Üëëï óýìðáí. Êáé áíôßóôñïöá! ÈåùñçôéêÜ, ìðïñåßôå íá âãåßôå áðü ôïí êüóìï ìáò êáé íá ôáîéäÝøåôå ìåãÜëåò áðïóôÜóåéò (äéóåêáôïììýñéá Ýôç öùôüò) óå åëÜ÷éóôï ÷ñüíï êáé íá îáíáìðåßôå óôïí êüóìï ìáò óå Ýíá äéáöïñåôéêü óçìåßï ôïõ ÷ùñï÷ñüíïõ! Ç áðüóôáóç ìåôáîý ôïõ êüóìïõ ìáò êáé ôùí Üëëùí êüóìùí åßíáé ðñáãìáôéêÜ ìçäåíéêüò! Áêüìç êáé áí õðÜñ÷åé Üðåéñïò áñéèìüò äéáóôÜóåùí, ìðïñïýí üëåò íá ðñïêýøïõí/ äçìéïõñãçèïýí áðü Ýíá ìéêñü áñéèìü ÊÕÑÉÙÍ äéáóôÜóåùí. ¶ðåéñïò áñéèìüò äéáóôÜóåùí ìðïñïýí íá óõíäõáóôïýí êáé íá êáôáëÞîïõí óå êýñéåò äéáóôÜóåéò. Ïé êýñéåò äéáóôÜóåéò áðëÜ áðïññïöïýí ôéò Üëëåò äéáóôÜóåéò ÷ùñßò áõôÝò íá êáôáóôñÝöïíôáé. Ïé ìáèçìáôéêïß ÷ñçóéìïðïéïýí áõôÝò ôéò êýñéåò äéáóôÜóåéò ãéá íá êáôáíïÞóïõí ôç ãÝííçóç êáé ôï èÜíáôï ôïõ óýìðáíôïò. Ï êüóìïò óôïí ïðïßï æåßôå óÞìåñá äçìéïõñãÞèçêå ìå ôï [1mBIG BANG [22mäéóåêáôïììýñéá ÷ñüíéá ðñéí (ó÷åäüí 20 äéóåêáôïììýñéá ÷ñüíéá ðñéí) ôï ïðïßï äçìéïõñãÞèçêå áðü áëëçëåðéäñÜóåéò áôïìéêþí óùìáôéäßùí Üëëùí äéáóôÜóåùí. Ëßãï ðñéí ôï big bang õðÞñ÷å Ýíá ðïëý ìéêñü óçìåßï üðïõ ôï ìÞêïò, ôï ðëÜôïò êáé ôï ýøïò Þôáí ÌÇÄÅÍ (äçëáäÞ, ï êüóìïò ìáò äåí õðÞñ÷å åêåß!!) åíþ õðÞñ÷å ôï õðüëïéðï óýìðáí êáé ïé êýñéåò äéáóôÜóåéò. Åêåßíç ôç ÷ñïíéêÞ óôéãìÞ äåí õðÞñ÷áí Üôïìá, áóôÝñéá, ðëáíÞôåò êáé ãáëáîßåò! Ôá Üôïìá ìÝóá óôï óþìá óáò äåí õðÞñ÷áí åêåß! ¸÷ïõí ãßíåé, ëïéðüí, ôüóá ðïëëÜ ðñÜãìáôá ÐÑÉÍ íá ãåííçèåßôå! Ôï Big bang êáé åðïìÝíùò êáé ç ãÝííçóç ôïõ êüóìïõ ìáò ðñïêëÞèçêå áðü ëßãá Üôïìá êýñéùí äéáóôÜóåùí. [1mÊÁÐÏÉÏÓ [22m(êÜôé;) ðñïêÜëåóå ôç óõíôñéâÞ åëÜ÷éóôùí ðïëý ìéêñþí áôüìùí Üëëùí äéáóôÜóåùí ìå áðïôÝëåóìá ôç äçìéïõñãßá ôïõ êüóìïõ ìáò, êáé ãåííÞèçêáí íÝåò äéáóôÜóåéò ÷ñüíïõ, ìÞêïõò, ðëÜôïõò, ýøïõò ! ÂëÝðïõìå ôï ÷Ýñé êÜðïéïõ óå áõôÞ ôç äéáäéêáóßá. ÁõôÞ ç äéáäéêáóßá äåí åßíáé [1mêáé ðïëý êáôáíïçôÞ [22máðü ôïí Üíèñùðï. Ï Üíèñùðïò ðñïóðáèåß íá äçìéïõñãÞóåé Ýíáí Üëëï êüóìï óôï åñãáóôÞñéï ðñïóïìïéþíïíôáò ôï ãåãïíüò big bang (âñßóêåôáé õðü êáôáóêåõÞ Ýíáò ôåñÜóôéïò åðéôá÷õíôÞò óôçí Åõñþðç, Üëëç ìéá êáôáóêåõÞ óôï ÍôÜëáò, ç ÁìåñéêÞ óôáìÜôçóå ëüãù ðåñéêïðþí óôïí ðñïûðïëïãéóìü). ÕðÜñ÷ïõí Üôïìá Üëëùí äéáóôÜóåùí, üðùò Ý÷ïõìå êé åìåßò Üôïìá óôïí äéêü ìáò êüóìï. ÈåùñçôéêÜ, ìðïñåßôå íá äçìéïõñãÞóåôå/ðáñÜãåôå Üðåéñï áñéèìü êüóìùí! ÁõôÞ ç äéáäéêáóßá åßíáé áíôéóôñåðôÞ, äçëáäÞ ï êüóìïò ìáò ìðïñåß íá óõññéêíùèåß óå ìåñéêÜ Üôïìá Üëëùí äéáóôÜóåùí! Åßíáé ðáñüìïéï ìå ôï íá ãåííçèÞêáôå áðü äýï ìéêñïóêïðéêÝò êõøÝëåò ïé ïðïßåò èá óõãêñïõóôïýí ãéá íá äçìéïõñãÞóïõí ìßá ìüíï êõøÝëç. ÁõôÞ ç ìüíç ìéêñïóêïðéêÞ êõøåëßäá äéáéñÝèçêå êáé ðïëëáðëáóéÜóôçêå óå 6 ôñéóåêáôïììýñéá êõøåëßäåò ìÝ÷ñé íá ãßíåé Ýíáò Üíèñùðïò ýøïõò 6 ðüäéá (äçëáäÞ åóåßò!). ÕðÜñ÷ïõí ìåñéêÝò ïìïéüôçôåò ìåôáîý áíèñþðïõ êáé óýìðáíôïò, ôï óýìðáí ãåííéÝôáé êáé áñãüôåñá ðåèáßíåé üðùò êáé ïé Üíèñùðïé. Ìéá êáé åßíáé áäýíáôç ìéá ÔÅËÅÉÁ êáôÜóôáóç (üðùò êáé ç ÁÐÏËÕÔÙÓ ÌÇ ÔÅËÅÉÁ êáôÜóôáóç), ïé êüóìïé óáí ôïõò äéêïýò ìáò ãåííéïýíôáé êáé ðåèáßíïõí áñãüôåñá ìå ìéá êõêëéêÞ äéáäéêáóßá. ÁËËÁ äåí õðÜñ÷åé ÔÅËÅÉÏÓ èÜíáôïò, ìüíï ìåôáó÷çìáôéóìüò åðéôñÝðåôáé áðü ôçí åðéóôÞìç! Ï êüóìïò ìáò ìåãáëþíåé ìå ôá÷ýôáôï ñõèìü, äåí åßíáé óôáôéêüò, áíôßèåôá åßíáé ðïëý äõíáìéêüò. Áõôüò ï êüóìïò èá óõíå÷ßóåé íá ìåãáëþíåé þóðïõ íá ðáñåìâëçèåß êÜôé ðïõ èá êáôáóôñÝøåé ôïí êüóìï ìáò åöáñìüæïíôáò äõíÜìåéò ìå åîùôåñéêÝò äéáóôÜóåéò ðïõ èá áðïññïöÞóïõí êáé èá åîáöáíßóïõí ôïí êüóìï ìáò! ÕðÜñ÷ïõí äýï ðéèáíüôçôåò - íá áðïìáêñõíèåß ç ìÜæá áðü ôïí êüóìï ìáò ìÝóù ôùí ìáýñùí ôñõðþí (áñãÞ äéáäéêáóßá), Þ íá ðñïóôåèåß êáé Üëëç ìÜæá óôïí êüóìï ìáò ìÝóù ôùí Üóðñùí ôñõðþí (ãñÞãïñç äéáäéêáóßá ìåãÜëçò óýãêñïõóçò). Ìðïñåß íá õðÜñ÷ïõí åêáôïììýñéá êüóìïé áëëÜ ëßãïé åßíáé áõôïß ðïõ äçìéïõñãÞèçêáí áðü êýñéåò äéáóôÜóåéò. Äåí Ý÷åôå öôéá÷ôåß ìüíï áðü Üôïìá áõôïý ôïõ êüóìïõ áëëÜ êáé áðü Üôïìá Üëëùí äéáóôÜóåùí! Óôéò ìáýñåò ôñýðåò ôá Üôïìá êáé ôá óùìáôßäéá ôïõ êüóìïõ ìáò ìÝíïõí åãêëùâéóìÝíá êáé ìåôáó÷çìáôßæïíôáé êáé ìåôáôñÝðïíôáé ôåëåßùò óå óùìáôßäéá Üëëùí äéáóôÜóåùí! Óôï êÝíôñï ìéáò ìáýñçò ôñýðáò ï ÷ñüíïò, ôï ðëÜôïò êáé ôï ýøïò åßíáé ìçäÝí! Êáé ç ìáýñç ôñýðá åßíáé ç ðüñôá ÅÎÏÄÏÕ/ÅÉÓÏÄÏÕ ðñüò êáé áðü Üëëïõò êüóìïõò. Ðüñôåò ÅÉÓÏÄÏÕ/ÅÎÏÄÏÕ ðñïò Üëëïõò êüóìïõò ìðïñïýí íá áíïßîïõí ðáíôïý, áêüìç êáé ìÝóá óôï óþìá óáò! Ìðïñåß íá õðÜñ÷åé Üðåéñïò áñéèìüò ÷ñùìÜôùí, ãëùóóþí õðïëïãéóôÞ, ó÷åäßùí ôóéð õðïëïãéóôÞ êáé èåùñßåò áëëÜ ÄÅÍ ÌÐÏÑÅÉ íá õðÜñîåé ÅÍÁ ÌÏÍÏ ÔÅËÅÉÏ ÷ñþìá, ãëþóóá õðïëïãéóôÞ, ó÷Ýäéï Þ óýóôçìá! Áõôü ðïõ ìðïñåßôå íá Ý÷åôå åßíáé ìüíï Ýíá Ó×ÅÄÏÍ ÔÅËÅÉÏ ÷ñþìá (åýñïò êýìáôïò), óýóôçìá, âÜóç äåäïìÝíùí Þ èåùñßá! Ç öýóç åßíáé üðùò Ýíá Êáëåéäïóêüðéï. ÓõíäõÜæïíôáò ôçí åíÝñãåéá åêáôïììõñßùí áíèñþðùí óå üëï ôïí êüóìï ìÝóù internet, åßíáé äõíáôü íá åðéôåõ÷èåß Ýíá [1mÓ×ÅÄÏÍ ÔÅËÅÉÏ [22móýóôçìá (óõìðåñéëáìâáíïìÝíïõ åíüò óõóôÞìáôïò âÜóåùí äåäïìÝíùí). Ç åíÝñãåéá ôïõ êÜèå áíèñþðïõ áôïìéêÜ åßíáé åëÜ÷éóôç, áëëÜ äéáóõíäÝïíôáò Ýíá ìåãÜëï áñéèìü áíèñþðùí, ç óõíïëéêÞ åíÝñãåéá èá åßíáé ôåñÜóôéá ãéá íá äçìéïõñãÞóåé Ýíá ó÷åäüí ôÝëåéï óýóôçìá. Ïé Üíèñùðïé åßíáé üíôá ìå ðåñéïñéóìÝíç åíÝñãåéá êáé áðïèÝìáôá, êáé ðïëý óõ÷íÜ óå áõôïýò ïöåßëïíôáé ëÜèç áðü áðëÜ ìÝ÷ñé êáé ðïëý óïâáñÜ. ÅðåéäÞ ç ôÜóç ìáò ãéá ëÜèç ðïéêßëëåé óå êÜèå Üíèñùðï áíÜëïãá ìå ôéò éäéáßôåñåò åðéäåîéüôçôåò, ôç óõãêåêñéìÝíç åìðåéñßá ðïõ Ý÷åé ï êáèÝíáò êáé ôéò óõãêõñßåò ôçò óõãêåêñéìÝíçò óôéãìÞò, ç áíáêÜëõøç êáé ç åëÜôôùóç ôùí ëáèþí ëïãéóìéêïý (bugs) ðïõ äçìéïõñãïýíôáé áðü êÜðïéï Üíèñùðï äéåõêïëýíåôáé ìå ôç óõãêÝíôñùóç ðïëëþí Ýîõðíùí áíèñþðùí-ìõáëþí ãéá íá áíôéìåôùðßóïõí ôï óõãêåêñéìÝíï ðñüâëçìá. Ðåñéóóüôåñá Üôïìá óõíåðÜãåôáé ðåñéóóüôåñåò áíèñùðïþñåò ãéá êþäéêá êáé ôçí áíôßóôïé÷ç ëåéôïõñãßá ôïõ. Åßíáé îåêÜèáñï üôé ôï ßíôåñíåô ìðïñåß íá äéáóõíäÝóåé Ýíá ôåñÜóôéï áñéèìü áíèñþðùí, üðïõ üëïé ìáæß äéáèÝôïõí ðïëý åíÝñãåéá êáé ÷ñüíï. Ìå ôï óõíäõáóìü ôïõò ìðïñïýí íá ðáñá÷èïýí ðñïúüíôá ëïãéóìéêïý õøçëüôåñçò ðïéüôçôáò óå ðïëý ëéãüôåñï ÷ñüíï óå óýãêñéóç ìå åìðïñéêÝò åôáéñåßåò. Áêüìç êáé ìåãÜëåò åôáéñåßåò üðùò ç Microsoft, ç IBM äå ìðïñïýí íá õðåñéó÷ýóïõí êáé íá áãíïÞóïõí ôïõò íüìïõò ôçò ÖõóéêÞò áëëÜ èá [1mÕÐÏÔÁ×ÈÏÕÍ [22môåëéêÜ óå áõôïýò! ÓÞìåñá, õðÜñ÷ïõí ôüóåò ðïëëÝò âÜóåéò äåäïìÝíùí óå üëï ôïí êüóìï ðïõ óôï÷åýïõí ìüíï óôéò ðñïäéáãñáöÝò ANSI/ISO SQL. [1mÏé Üíèñùðïé äåí ðñÝðåé[0m [1míá ÷áñáìßæïõí ôï ÷ñüíï ôïõò ãéá íá äçìéïõñãÞóïõí ôüóá ðïëëÜ[0m [1mÐÁÑÏÌÏÉÁ/ÏËÏÉÄÉÁ ðáêÝôá ëïãéóìéêïý [22måíþ õðÜñ÷ïõí ôüóïé Üëëïé ôïìåßò ôçò åðéóôÞìçò ðïõ ÷ñåéÜæïíôáé ðñïóï÷Þ. Ôï óõìðÝñáóìá åßíáé ôï åîÞò : åîáéôßáò ôùí íüìùí ôçò åðéóôÞìçò, ôá 'áíïé÷ôÜ óõóôÞìáôá ðçãáßïõ êþäéêá' üðùò ç PostgreSQL, ôï Linux èá åßíáé ðÜíôá ðïëý êáëýôåñá áðü ôá 'êëåéóôÜ óõóôÞìáôá ðçãáßïõ êþäéêá' êáé áõôü åßíáé äõíáôü íá áðïäåé÷ôåß êáé åðéóôçìïíéêÜ. [1m4. Ôé åßíáé ç PostgreSQL ;[0m Ç 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 ¶äåéá ãéá ÷ñÞóç, áíôéãñáöÞ, ìåôáâïëÞ, êáé äéáíïìÞ áõôïý ôïõ ëïãéóìéêü êáé ôçò ôåêìçñßùóÞò ôïõ ãéá ïðïéïäÞðïôå óêïðü, ÷ùñßò ôÝëç, êáé ÷ùñßò ãñáðôÞ óõìöùíßá ðáñÝ÷åôáé, ìå ôçí ðñïûðüèåóç üôé ôï óçìåßùìá ðíåõìáôéêÞò éäéïêôçóßáò êáé áõôÞ êáé ïé ðáñáêÜôù äýï ðáñÜãñáöïé èá åìöáíßæïíôáé óå üëåò ôéò êüðéåò. ÌÅ ÊÁÍÅÍÁÍ ÔÑÏÐÏ, ÄÅÍ ÈÁ ÈÅÙÑÇÈÅÉ ÔÏ ÐÁÍÅÐÉÓÔÇÌÉÏ ÔÇÓ ÊÁËÉÖÏÑÍÉÁ ÍÏÌÉÊÁ ÕÐÅÕÈÕÍÏ ÃÉÁ ÁÌÅÓÇ, ÅÌÌÅÓÇ, ÅÉÄÉÊÇ, ÔÕ×ÁÉÁ, Ç ÐÁÑÁÃÙÌÅÍÇ ÆÇÌÉÁ, ÓÕÌÐÅÑÉËÁÌÁÍÏÌÅÍÇÓ ÊÁÉ ÔÇÓ ÁÐÙËÅÉÁÓ ÊÅÑÄÙÍ ÐÏÕ ÐÑÏÅÊÕØÅ ÁÐÏ ÔÇÍ ×ÑÇÓÇ ÁÕÔÏÕ ÔÏÕ ËÏÃÉÓÌÉÊÏÕ ÊÁÉ ÔÇÓ ÔÅÊÌÇÑÉÙÓÇÓ ÔÏÕ, ÁÊÏÌÁ ÊÁÉ ÁÍ ÔÏ ÐÁÍÅÐÉÓÔÇÌÉÏ ÔÇÓ ÊÁËÉÖÏÍÉÁ Å×ÅÉ ÅÉÄÏÐÏÉÇÈÅÉ ÃÉÁ ÔÇÍ ÐÉÈÁÍÏÔÇÔÁ ÌÉÁÓ ÔÅÔÏÉÁÓ ÆÇÌÉÁÓ. ÔÏ ÐÁÍÅÐÉÓÔÇÌÉÏ ÔÇÓ ÊÁËÉÖÏÑÍÉÁ ÅÉÄÉÊÁ ÁÐÁÑÍÅÉÔÁÉ ÊÁÈÅ ÅÃÃÕÓÇÓÇ, ÓÕÌÐÅÑÉËÁÌÂÁÍÏÌÅÍÇÓ, ÁËËÁ Ï×É ÐÅÑÉÏÑÉÓÌÅÍÇÓ ÌÏÍÏ ÓÅ ÁÕÔÇÍ, ÔÇÓ ÕÐÏÍÏÏÕÌÅÍÇÓ ÅÃÃÕÇÓÇÓ ×ÑÇÓÇÓ, ÊÁÉ ×ÑÇÓÇÓ ÃÉÁ ÊÁÐÏÉÏ ÓÕÃÊÅÊÑÉÌÅÍÏ ÓÊÏÐÏ. ÔÏ ËÏÃÉÓÌÉÊÏ ÐÏÕ ÐÁÑÅ×ÅÔÁÉ ÅÄÙ ÅÉÍÁÉ ÓÅ ÂÁÓÇ "ÙÓ Å×ÅÉ" ÊÁÉ ÔÏ ÐÁÍÅÐÉÓÔÇÌÉÏ ÔÇÓ ÊÁËÉÖÏÑÍÉÁÓ ÄÅÍ Å×ÅÉ ÕÐÏ×ÑÅÙÓÇ ÃÉÁ ÐÁÑÏ×Ç ÓÕÍÔÇÑÇÓÇÓ, ÅÍÇÌÅÑÙÓÅÙÍ, ÅÌÐËÏÕÔÉÓÌÙÍ, Ç ÔÑÏÐÏÐÏÉÇÓÅÙÍ. [1m5. Ðïý ìðïñþ íá ôç âñù ;[0m Ìðïñåßôå íá áãïñÜóåôå ôï 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> [1m6. Ç PostgreSQL õðïóôçñßæåé åîáéñåôéêÜ ìåãÜëåò âÜóåéò, ìåãáëýôåñåò[0m [1máðü 200 Gig[0m Ç áðüäïóç ôùí 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), Ý÷ïõí ðåñéóóüôåñåò äõíáôüôçôåò êëð. [1m7. áíáðôýóóåé ôï áßóèçìá åìðéóôïóýíçò óôïí ðåëÜôç Ðþò ìðïñþ íá[0m [1måìðéóôåõèþ ôçí PostgreSQL ; Ôï ðáêÝôï Regression ãéá ôåóô[0m Ôï ðáêÝôï Regression ãéá ôåóô (src/test/regress) ðåñéëáìâÜíåôáé óôç äéáíïìÞ êáé áöÞóôå ôïí õðïëïãéóôÞ óáò íá åðáëçèåýóåé ôéò óôÜíôáñ ëåéôïõñãßåò SQL êáé ôéò äõíáôüôçôåò åðÝêôáóçò ôçò PostgreSQL. Ôï ðáêÝôï ãéá ôåóô ðåñéÝ÷åé Þäç åêáôïíôÜäåò SQL ôåóô ðñïãñÜììáôá. Èá ðñÝðåé íá ÷ñçóéìïðïéÞóåôå ôç äýíáìç ôïõ õðïëïãéóôÞ ãéá íá åëÝãîåôå ôçí PostgreSQL, áíôß íá ÷ñçóéìïðïéÞóåôå ôç äýíáìç ôïõ áíèñþðéíïõ åãêåöÜëïõ. Ïé õðïëïãéóôÝò ìðïñïýí íá åêôåëÝóïõí ôåóô ãéá ôï ëïãéóìéêü regression åêáôïììýñéá Þ áêüìç êáé äéóåêáôïììýñéá öïñÝò ãñçãïñüôåñá áðü üôé ïé Üíèñùðïé. Óôï ðñïóå÷Ýò ìÝëëïí ç ôá÷ýôçôá ôùí õðïëïãéóôþí èá åßíáé áñêåôÜ ôñéóåêáôïììýñéá öïñÝò ãñçãïñüôåñïé áðü ôïí áíèñþðéíï åãêÝöáëï! ¸ôóé, Ý÷åé íüçìá íá ÷ñçóéìïðïéÞóïõìå ôç äýíáìç ôïõ õðïëïãéóôÞ ãéá íá åëÝã÷ïõìå ëïãéóìéêü. Ìðïñåßôå íá ðñïóèÝóåôå êáé Üëëá ôåóô óå ðåñßðôùóç ðïõ ôï ÷ñåéÜæåóôå, êáé ìðïñåßôå íá ôá óôåßëåôå óôï êåíôñéêü web site ôçò PostgreSQL áí íïìßæåôå üôé èá åßíáé ÷ñÞóéìï óå Üëëïõò óôï internet. Ôï ðáêÝôï Regression ãéá ôåóô åíéó÷ýåé ôçí åìðéóôïóýíç ôïõ ðåëÜôç óôçí PostgreSQL êáé åõêïëýíåé ôç ãñÞãïñç åöáñìïãÞ ôçò PostgreSQL óå óõóôÞìáôá ðáñáãùãÞò. Ôï ðáêÝôï Regression ãéá ôåóô ìðïñåß íá èåùñçèåß óáí Ýíá [1m"ÐÏËÕ[0m [1mÓÔÁÈÅÑÏ" [22môå÷íéêü êåßìåíï óõìöùíçìÝíï áìïéâáßá ìåôáîý ôùí ðñïãñáììáôéóôþí êáé ôùí ôåëéêþí ÷ñçóôþí. Ïé ðñïãñáììáôéóôÝò ôçò PostgreSQL ÷ñçóéìïðïéïýí åêôåôáìÝíá ôï ðáêÝôï regression ãéá ôåóô êáôÜ ôçí ðåñßïäï ôçò áíÜðôõîçò êáé åðßóçò ðñéí ôçí Ýêäïóç ôïõ ëïãéóìéêïý óôï êïéíü ãéá íá äéáóöáëßóïõí ôçí êáëÞ ðïéüôçôá. Ïé äõíáôüôçôåò ôçò PostgreSQL áíôéêáôñïðôßæïíôáé óôï ðáêÝôï ãéá ôåóô regression. Óå ðåñßðôùóç ðïõ ìéá äõíáôüôçôá, óýíôáîç Þ ÷áñáêôçñéóôéêü äåí ðåñéëáìâÜíåôáé óôï ðáêÝôï äåí óçìáßíåé ðùò êáëýðôåôáé áíáãêáóôéêÜ áðü ôçí PostgreSQL. Ìðïñåßôå íá ôï åëÝãîåôå, ðáñüëá áõôÜ, åóåßò êáé íá åíóùìáôþóåôå ôï ôåóô óáò óôï ðáêÝôï. [1m8. Ãñáöéêü ðñüãñáììá åðéêïéíùíßáò (GUI FrontEnd Tool) ìå ôçí Post-[0m [1mgreSQL[0m Ç äéáíïìÞ ôçò 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 äéáôßèåíôáé óôçí áãïñÜ. [1m9. Åñãáëåßá åíüò ÏëïêëçñùìÝíïõ ÓõóôÞìáôïò ÁíÜðôõîçò ãéá PostgreSQL[0m [1m(GUI IDE)[0m ÊïéôÜîôå ôá ðáñáêÜôù åñãáëåßá áíÜðôõîçò ôá ïðïßá ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå óå óõíäõáóìü ìå ïäçãïýò 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. Äåßôå åðßóçò ôï [1mPERL [22mDatabase 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> [1m10. Ïäçãïß Äéáóýíäåóçò ìå ôçí PostgreSQL[0m [1m10.1. ODBC Drivers ãéá ôçí PostgreSQL[0m 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. [1m10.2. UDBC Drivers ãéá ôçí PostgreSQL[0m Ôï UDBC åßíáé ìéá óôáôéêÞ Ýêäïóç ODBC áíåîÜñôçôç áðü äéá÷åéñéóôÝò ïäçãþí (driver managers) êáé õðïóôÞñéîç DLL, ÷ñçóéìïðïéåßôáé ãéá íá ðñïóèÝôåé õðïóôÞñéîç áðåõèåßáò äéáóýíäåóçò ìå âÜóç ìÝóá óôéò åöáñìïãÝò. · <http://www.openlinksw.com>Ç åôáéñåßá Open Link Software ðïõëÜ UDBC ãéá ôçí PostgreSQL êáé Üëëåò âÜóåéò. Ç Open Link äßíåé åðßóçò äùñåÜí UDBC (ðåñéïñéóìÝíï áñéèìü ÷ñçóôþí) - ôóåêÜñåôÝ ôï. [1m10.3. JDBC Drivers ãéá ôçí PostgreSQL[0m 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> [1m10.4. Java ãéá PostgreSQL[0m Ïé ðñïãñáììáôéóôÝò Java ìðïñåß íá èåùñÞóïõí ôá ðáñáêÜôù sites ðïëý ÷ñÞóéìá ãéá ôçí PostgreSQL. · <ftp://ftp.redhat.com/pub/contrib/i386> êáé äåßôå ôï postgresql- jdbc-*.rpm · <http://www.blackdown.org> [1m11. Perl Database Interface (DBI) Driver ãéá PostgreSQL[0m [1m11.1. Äéáóýíäåóç Perl 5 ìå PostgreSQL[0m 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 ôñÝ÷åé [1mÁÊÏÌÇ [22mêáé óå ðïëëÜ ìç äçìïöéëÞ/ãåíéêÜ Üãíùóôá ëåéôïõñãéêÜ óõóôÞìáôá êáé õëéêÜ!! ¸ôóé, ìçí åêðëáãåßôå áí äåßôå ôçí 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.* [1m11.2. Perl Database Interface DBI[0m [1m11.2.1. ÔÉ ÅÉÍÁÉ ÔÏ DBI ;[0m Ôï ðáñáêÜôù åßíáé [1máðüóðáóìá [22máðü ôçí êåíôñéêÞ óåëßäá ôïõ 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 [1m11.2.2. Ïäçãüò DBI ãéá ôçí PostgreSQL - DBD-Pg-0.89[0m ÊáôåâÜóôå ôï 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) [1m11.2.3. Ôå÷íéêÞ õðïóôÞñéîç ãéá ôï DBI[0m Ðáñáêáëþ óôåßëôå ôá ó÷üëéÜ óáò êáé áíáöïñÝò ëáèþí óôï · E.Mergl@bawue.de ÓõìðåñéëÜâåôå ðáñáêáëþ ôçí Ýîïäï ôçò åíôïëÞ perl -v, êáé perl -V, ôçí Ýêäïóç ôçò PostgreSQL, ôçí Ýêäïóç ôïõ DBD-Pg, êáé ôçí Ýêäïóç ôïõ DBI óôçí áíáöïñÜ ëáèþí. [1m11.2.4. Ôé åßíáé ôá DBI, DBperl, Oraperl êáé *perl;[0m ¼ðùò åßðå êáé ï 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> [1m11.2.5. ÐñïäéáãñáöÝò DBI[0m ÕðÜñ÷ïõí ëßãåò ðçãÝò ðëçñïöïñßáò ãéá 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> Ïé ëßóôåò óôéò ïðïßåò ìðïñïýí íá óõììåôÝ÷ïõí ïé ÷ñÞóôåò åßíáé: [1mdbi-announce [22mÁõôÞ ç ëßóôá áëëçëïãñáößáò ìüíï ãéá áíáêïéíþóåéò. Áí äåí ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôçí öüñìá ôçò ðáñáðÜíù WWW óåëßäáò, åããñáöåßôå óôç ëßóôá ìå ôïí áêüëïõèï ôñüðï: · Email: dbi-announce-request@fugue.com ìå êåßìåíï óôï óþìá (body) ôïõ ìçíýìáôïò 'subscribe' [1mdbi-dev [22mÇ ëßóôá áõôÞ óôï÷åýåé óå ÷ñÞóç áðü ôïõò ðñïãñáììáôéóôÝò ðïõ êÜíïõí áíÜðôõîç, ðïõ óõæçôÜíå éäÝåò êáé Ýííïéåò ãéá ôá ôùí DBI interface, API êáé driver. Áí äåí ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôçí öüñìá ôçò ðáñáðÜíù WWW óåëßäáò, åããñáöåßôå óôç ëßóôá ìå ôïí áêüëïõèï ôñüðï: · Email: dbi-dev-request@fugue.com ìå êåßìåíï óôï óþìá (body) ôïõ ìçíýìáôïò 'subscribe' [1mdbi-users [22mÁõôÞ ç ëßóôá áëëçëïãñáößáò åßíáé ìéá ëßóôá ãåíéêþí óõæçôÞóåùí ðïõ ÷ñçóéìïðïéåßôáé ãéá áíáöïñÝò óöáëìÜôùí, óõæÞôçóç ðñïâëçìÜôùí êáé ãåíéêÝò áíáæçôÞóåéò. Áí äåí ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôçí öüñìá ôçò ðáñáðÜíù 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> [1m11.2.6. ÐñïâëÞìáôá Ìåôáãëþôôéóçò Þ áëëéþò "Êüðçêå óôéò ÅîåôÜóåéò!"[0m Áí Ý÷åôå 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, ôá ôåóô ðïõ êÜíáôå, ôçí Ýêäïóç ôïõ ëåéôïõñãéêïý óõóôÞìáôïò êáé üðïéåò Üëëåò ó÷åôéêÝò ðëçñïöïñßåò. ¼óåò ðåñéóóüôåñåò ðëçñïöïñßåò óôåßëåôå, ôüóï ãñçãïñüôåñá èá áíé÷íåýóïõí ïé ðñïãñáììáôéóôÝò ôá ðñïâëÞìáôá. Áí äå ìáò óôåßëôå ôßðïôá, ôüôå ìçí ðåñéìÝíåôå ôßðïôá êáé áðü åìÜò. --> [1m11.2.7. Õðïóôçñßæåôáé ôï DBI êÜôù áðü ðëáôöüñìåò Windows 95 / NT ;[0m Ç ìåôáöïñÜ ôùí 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> [1m11.2.8. ôïõ; Ôé åßíáé ôï DBM; Êáé ãéáôß èá ðñÝðåé íá ÷ñçóéìïðïéþ ôï[0m [1mDBI óôç èÝóç[0m Ôï 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. [1m11.2.9. Õðïóôçñßæåôáé < ôï ôÜäå ÷áñáêôçñéóôéêü > óôï DBI;[0m Èåùñþíôáò üôé ôï ÷áñáêôçñéóôéêü ðïõ æçôÞóáôå åßíáé Ýíá ìç-óôÜíôáñ, åîáñôþìåíï áðü êÜðïéá óõãêåêñéìÝíç âÜóç, ÷áñáêôçñéóôéêü, ôüôå ç áðÜíôçóç åßíáé ü÷é. Ôï DBI áíôáíáêëÜ Ýíá ãåíéêü API ðïõ èá äïõëÝøåé ãéá ôéò ðåñéóóüôåñåò âÜóåéò, êáé äåí ðáñÝ÷åé êáìßá åðéðëÝïí ëåéôïõñãéêüôçôá ãéá êÜðïéá óõãêåêñéìÝíç âÜóç äåäïìÝíùí (database-specific functionality). ÐáñüëáõôÜ, ïé óõããñáöåßò ôùí ïäçãþí ìðïñïýí, áí ôï åðéèõìïýí, íá óõìðåñéëÜâïõí hooks ðñïò åîåéäéêåõìÝíåò ëåéôïõñãßåò/÷áñáêôçñéóôéêÜ êÜðïéáò âÜóçò äåäïìÝíùí ìÝóù ôçò ìåèüäïõ func ðïõ ïñßæåôáé óôï DBI API. ¼óïé áíáðôýóóïõí scripts èá ðñÝðåé íá óçìåéþóïõí ðùò ç ëåéôïõñãéêüôçôá ðïõ ðáñÝ÷åôáé ìÝóù ôùí ìåèüäùí func åßíáé áðßèáíï íá ìåôáöåñèåß óå Üëëåò âÜóåéò. [1m11.2.10. ×ñçóéìåýåé êáèüëïõ ôï DBI ãéá ðñïãñáììáôéóìü óå CGI;[0m Ìå ìéá ëÝîç, íáé! Ôï DBI åßíáé åîáéñåôéêÜ ÷ñÞóéìï ãéá ðñïãñáììáôéóìü óå CGI! Óôçí ðñáãìáôéêüôçôá, èá ôïëìïýóá íá ðù üôé ï ðñïãñáììáôéóìüò óå CGI åßíáé ìßá áðü ôéò êýñéåò ÷ñÞóåéò ôïõ DBI. To DBI äßíåé ôçí éêáíüôçôá óôïõò ðñïãñáììáôéóôÝò CGI íá åíéó÷ýóïõí ôéò âÜóåéò ðïõ Ý÷ïõí WWW-fronted, ðñÜãìá ðïõ ðáñÝ÷åé óôïõò ÷ñÞóôåò ôç äõíáôüôçôá íá ðáßîïõí ìå ôåñÜóôéåò ðïóüôçôåò äïìçìÝíùí äåäïìÝíùí. Åðßóçò, óôçí ðåñßðôùóç ðïõ Ýíá site Ý÷åé ðåñéóóüôåñç êßíçóç áðü üôé ï server ôçò âÜóçò äåäïìÝíùí ìðïñåß íá áíôéìåôùðßóåé, ôï DBI äßíåé ôç äõíáôüôçôá áíáâÜèìéóçò ôïõ server ôçò âÜóçò äåäïìÝíùí óôï ðáñáóêÞíéï, ÷ùñßò áëëáãÝò óôá cgi scripts. [1m11.2.11. Ðþò ðåôõ÷áßíù ôá÷ýôåñïõò ÷ñüíïõò óýíäåóçò ìå DBD Oracle êáé[0m [1mCGI;[0m Ï 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> [1m11.2.12. Ðþò åðéôõã÷Üíù ìüíéìåò (persistent) óõíäÝóåéò ìåôáîý DBI êáé[0m [1mCGI[0m ×ñçóéìïðïéþíôáò ôï 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> [1m11.2.13. ôï ôñÝ÷ù áðü ôïí httpd, áðïôõã÷Üíåé!'' Ãéáôß; ``¼ôáí ôñÝ÷ù[0m [1mÝíá perl script áðü ôçí ãñáììÞ åíôïëÞò, äïõëåýåé, áëëÜ üôáí[0m ÂáóéêÜ, Ýíáò ëüãïò ãéá ôïí ïðïßï ìðïñåß íá óõìâáßíåé áõôü åßíáé üôé ï ÷ñÞóôçò áðü ôïí ïðïßï ôñÝîáôå ôï 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> [1m11.2.14. Ìðïñþ íá êÜíù multi-threading ìå ôï DBI;[0m ÌÝ÷ñé ôçí çìåñïìçíßá áõôïý ôïõ 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> [1m11.2.15. Ðþò ìðïñþ íá êáëÝóù stored procedures ìå ôï DBI;[0m Áí õðïèÝóïõìå üôé Ý÷åôå äçìéïõñãÞóåé ìéá stored procedure ìÝóá óå êÜðïéá âÜóç, ð÷, óôçí Oracle, ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôï $dbh->do ãéá íá åêôåëÝóåôå Üìåóá ôç äéáäéêáóßá (procedure). Ãéá ðáñÜäåéãìá, $dbh->do( "BEGIN someProcedure END" ); [1m11.2.16. Ðþò ìðïñþ íá ðÜñù ôéò ôéìÝò ðïõ åðéóôñÝöïíôáé áðü ôéò stored[0m [1mprocedures ìå ôï DBI;[0m Èõìçèåßôå, üìùò, íá êÜíåôå Ýëåã÷ï ãéá ëÜèç! $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; [1m11.2.17. Ðþò ìðïñþ íá äçìéïõñãÞóù Þ íá êáôáóôñÝøù ìéá âÜóç äåäïìÝíùí[0m [1mìå ôï DBI;[0m Ç äçìéïõñãßá êáé äéáãñáöÞ ìéáò âÜóçò åßíáé Ýííïéåò ðïëý áöçñçìÝíåò ãéá íá õðïóôçñßæïíôáé éêáíïðïéçôéêÜ áðü ôï DBI. Ãéá ðáñÜäåéãìá, ç Oracle äåí õðïóôçñßæåé êáí ôçí Ýííïéá ôçò äéáãñáöÞò ôçò âÜóçò! Óôçí Oracle åðßóçò, ï äéáêïìéóôÞò ôçò âÜóçò äåäïìÝíùí (database server) åßíáé ïõóéáóôéêÜ ç âÜóç, åíþ óôçí mSQL, ç äéåñãáóßá ôïõ äéáêïìéóôÞ (server process) ôñÝ÷åé ìéá ÷áñÜ ÷ùñßò íá Ý÷åé äçìéïõñãçèåß êáìßá âÜóç óå áõôüí. Ôï ðñüâëçìá åßíáé ôüóï áíüìïéï ãéá íá ôï èßîïõìå. Ãé' áõôü ôï ëüãï, ìåñéêïß ïäçãïß õðïóôçñßæïõí äçìéïõñãßá êáé äéáãñáöÞ âÜóåùí ìÝóù ôùí private func methods. Äåßôå ôçí ôåêìçñßùóç ôùí ïäçãþí ðïõ ÷ñçóéìïðïéåßôå ãéá íá äåßôå áí õðïóôçñßæïõí áõôü ôï ìç÷áíéóìü. [1m11.2.18. Ðþò äéá÷åéñßæåôáé ôï DBI ôéò ôéìÝò NULL ;[0m Ïé ôéìÝò NULL óôï DBI áíôéìåôùðßæïíôáé üðùò ç ôéìÞ undef. Ïé ôéìÝò NULL ìðïñïýí êáôá÷ùñçèïýí óôéò âÜóåéò ùò NULL, ãéá ðáñÜäåéãìá: $rv = $dbh->do( "INSERT INTO table VALUES( NULL )" ); áëëÜ üôáí åñùôçèïýí, ïé ôéìÝò NULL èá ðñÝðåé íá óõãêñéèïýí ìå ôçí undef. Áõôü åßíáé óôÜíôáñ ãéá üëïõò ôïõò ïäçãïýò. [1m11.2.19. Ôé åßíáé áõôÝò ïé ìÝèïäïé func (func methods);[0m Ç ìÝèïäïò func ïñßæåôáé óôï DBI óáí ôï óçìåßï åéóüäïõ ãéá ëåéôïõñãéêüôçôá åîáñôþìåíç áðü ôç âÜóç, ð÷, ç éêáíüôçôá íá äçìéïõñãÞóåôå Þ íá äéáãñÜøåôå âÜóåéò. Ôï íá êáëÝóåôå áõôÝò ôéò ìåèüäïõò ðïõ åîáñôþíôáé áðü ôïõò ïäçãïýò åßíáé áðëü, ãéá ðáñÜäåéãìá, ãéá íá êáëÝóåôå ôç ìÝèïäï createDatabase ðïõ ðáßñíåé ìéá ðáñÜìåôñï, èá ãñÜöáìå: $rv = $dbh->func( 'argument', 'createDatabase' ); ¼óïé áíáðôýóóïõí ëïãéóìéêü èá ðñÝðåé óçìåéþóïõí üôé ïé ìÝèïäïé func äåí åßíáé ìåôáöÝñóéìåò ìåôáîý äéáöïñåôéêþí âÜóåùí. [1m11.2.20. ÅìðïñéêÞ ÕðïóôÞñéîç êáé Åêðáßäåõóç[0m Ôï Interface ôçò Perl5 ãéá âÜóåéò åßíáé Ýíá ÄÙÑÅÁÍ ëïãéóìéêü. ÅÑ×ÅÔÁÉ ×ÙÑÉÓ ÊÁÌÉÁ ÅÃÃÕÇÓÇ ÏÐÏÉÏÕÄÇÐÏÔÅ ÅÉÄÏÕÓ. ÐáñüëáõôÜ, ìåñéêïß ïñãáíéóìïß ðáñÝ÷ïõí åßôå ôå÷íéêÞ õðïóôÞñéîç åßôå ðñïãñÜììáôá åêìÜèçóçò ôïõ DBI. [1mPerl Clinic : [22mÇ Perl Clinic ìðïñåß íá êëåßóåé óõìâüëáéá ãéá åìðïñéêÞ õðïóôÞñéîç óå Perl, DBI, DBD::Oracle êáé Oraperl. ÕðïóôÞñéîç ðáñÝ÷åôáé áðü ôçí åôáéñåßá óôçí ïðïßá äïõëåýåé ï Tim Bunce, ï óõããñáöÝáò ôïõ DBI. Ãéá ðåñéóóüôåñåò õðçñåóßåò ó÷åôéêÜ ìå ôéò õðçñåóßåò ôïõò, äåßôå ôï : · <http://www.perl.co.uk/tpc> [1m12. Åñãáëåßá Äéá÷åßñéóçò ôçò PostgreSQL[0m [1m12.1. PGACCESS - ¸íá ãñáöéêü åñãáëåßï ãéá ôç äéá÷åßñéóç ôçò Post-[0m [1mgreSQL[0m Ôï 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. [1m12.2. Windows Interactive Query Tool ãéá PostgreSQL (WISQL Þ MPSQL)[0m Ç 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 [1m12.3. Interactive Query Tool(ISQL) ãéá ôçí PostgreSQL - ÏíïìÜæåôáé[0m [1mPSQL[0m Ôï ISQL åßíáé ãéá ôåñìáôéêÜ ìå Character command line. ÐåñéëáìâÜíåôáé óôç äéáíïìÞ, êáé ëÝãåôáé PSQL. ÌïéÜæåé ðïëý ìå ôï ISQL ôçò Sybase, êáé ôï SQLplus ôçò Oracle. Óôï unix prompt äþóôå ôçí åíôïëÞ 'psql' ç ïðïßá èá óáò âãÜëåé óå psql> prompt. ÐáôÞóôå \h ãéá íá äåßôå ôç âïÞèåéá ôùí åíôïëþí. Ðïëý öéëéêü óôï ÷ñÞóôç êáé åýêïëï óôç ÷ñÞóç. Ìðïñåßôå íá Ý÷åôå ðñüóâáóç óå áõôü êáé áðü scripts ôïõ êÝëõöïõò. [1m12.4. MPMGR - Åñãáëåßï Äéá÷åßñéóçò ÂÜóåùí ãéá PostgresSQL[0m Ôï 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 [1m13. Ñõèìßæïíôáò ðïëëáðëÜ êïõôéÜ PostgreSQL óå ìéá ïèüíç[0m Ìðïñåßôå íá óôïéâÜîåôå ôá êïõôéÜ-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 [1m÷ùñßò [22mMicrosoft 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 ìå ìéá ïèüíç êáé Ýíá ðëçêôñïëüãéï! ÐáñáêÜôù èá âñåßôå Ýíá [1máðüóðáóìá áðü ôçí networktechnic Inc [22mãéá "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ëá ôá âýóìáôá åßíáé èçëõêÜ [1m14. ÅöáñìïãÝò êáé Åñãáëåßá ãéá ôçí PostgreSQL[0m [1m14.1. Ãëþóóá 4çò ãåíéÜò (4GL) PostgreSQL ãéá åöáñìïãÝò ìå web êáé[0m [1mâÜóç äåäïìÝíùí - Ðëáôöüñìá áíÜðôõîçò AppGEN[0m Ôï 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 [1m14.2. WWW Web interface ãéá PostgresSQL - DBENGINE[0m Ôï dbengine åßíáé Ýíá plug 'n play Web interface ãéá ôçí PostgreSQL ðïõ äçìéïõñãÞèçêå áðü ôïí Ingo Ciechowski. Âñßóêåôáé óôï : · <http://www.cis-computer.com/dbengine/ > [1mÓ÷åôéêÜ ìå ôï DBENGINE : [22mÔï dbengine åßíáé Ýíá interface äéáóýíäåóçò WWW êáé Postgres95 ðïõ ðáñÝ÷åé áðëÞ ðñüóâáóç óå ïðïéáäÞðïôå âÜóç ìÝóá óå ëßãá ëåðôÜ. Ôï PHP 3 äßíåé ìéá ãëþóóá ðïõ ìïéÜæåé ìå ôçí Perl óôá êåßìåíÜ óáò, áëëÜ ü÷é ðñáãìáôéêÞ Perl åíþ ôï AppGen êáé ôï wdb-p95 áðáéôïýí íá äçìéïõñãÞóåôå ìåñéêÜ áñ÷åßá ñõèìßóåùí ãéá êÜèå ìßá áðü ôéò âÜóåéò óáò -- ìïéÜæåé óáí íá ðñÝðåé ðñþôá áð' üëá íá ìÜèåôå êÜðïéï åßäïò íÝáò ãëþóóáò ðñéí íá îåêéíÞóåôå. Áíôßèåôá ìå ôá Üëëá åñãáëåßá, äåí áðáéôåßôáé íá ìÜèåôå åéäéêü ðñïãñáììáôéóìü Þ êÜðïéá scripting language ãéá íá îåêéíÞóåôå íá äïõëåýåôå ìå ôï dbengine. Äåí õðÜñ÷åé åðßóçò êÜðïéï áñ÷åßï ñõèìßóåùí ãéá êÜèå âÜóç, Ýôóé äå ÷ñåéÜæåôáé íá åîïéêåéùèåßôå ìå ìéá íÝá äïìÞ. ÐáñüëáõôÜ - óå ðåñßðôùóç ðïõ èÝëåôå íá Ý÷åôå ðñüóâáóç óå üëá ôá ÷áñáêôçñéóôéêÜ ôïõ dbengine èá Þôáí êáëÞ éäÝá íá ìÜèåôå ôç ãëþóóá Perl. Ïëï ôï óýóôçìá ìðïñåß íá ñõèìéóôåß ìÝóù áðëþí ÷åéñéóìþí óå ìéá ðñüóèåôç âÜóç äåäïìÝíùí ðïõ ðåñéÝ÷åé ðëçñïöïñßåò ó÷åôéêÜ ìå ôï ðþò íá ïðôéêïðïéÞóåôå ôá äåäïìÝíá óáò. Ìðïñåßôå åðßóçò íá ïñßóåôå virtual Fields ôá ïðïßá õðïëïãßæïíôáé áìÝóùò ðñéí íá åìöáíéóôïýí óôçí ïèüíç. [1m¶äåéá [22mÔï dbengine åßíáé äùñåÜí ëïãéóìéêü êÜôù áðü ôïõò ßäéïõò üñïõò üðùò êáé ç Perl. ÄéáâÜóôå ôçí ÜäåéÜ ôçò áí äåí åßóôå óßãïõñïé ãéá ôé ìðïñåßôå Þ äåí ìðïñåßôå íá êÜíåôå. Óå ôåëéêÞ áíÜëõóç, áõôÞ åßíáé ìéá åëáóôéêüôåñç êáé ðéï Þðéá Ýêäïóç áðü ôçí GNU Üäåéá -- äåí åðçñåÜæåé ôç äïõëåéÜ óáò áí èÝëåôå íá "äáíåéóôåßôå" êÜôé áðü ôï dbengine Þ íá óõãêåíôñþóåôå êïììÜôéá áðü áõôü óáí ìÝñïò åíüò åìðïñéêïý ðñïúüíôïò! [1m14.3. Apache Webserver Module ãéá PostgreSQL - NeoSoft NeoWebScript[0m Ï 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 [1m14.4. ãéá ôçí PostgreSQL Ïé HEITML åðåêôÜóåéò ôçò HTML óôïí server[0m [1mêáé ìéá ãëþóóá 4çò ãåíéÜò[0m Ôï åñãáëåßï 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 áíåîáñôÞôïõ ìåãÝèïõò. [1m14.5. America On-line AOL Web server ãéá PostgreSQL[0m Ï äùñåÜí åìðïñéêüò webserver, AOLserver Ýêäïóçò 2.3 õðïóôçñßæåé óõíäÝóåéò óôç âÜóç PostgreSQL Ýêäïóç 6.2.1 êáé ìåãáëýôåñç. Ãéá ðåñéóóüôåñåò ðëçñïöïñßåò åðéóêåöôåßôå ôï · AOL Web Server <http://www.aolserver.com> [1m14.6. Problem/Project Tracking System Application Tool ãéá PostgreSQL[0m Âñßóêåôáé óôï : · <http://www.homeport.org/~shevett/pts/> [1m14.7. ÌåôáôñïðÞ áñ÷åßùí dbase dbf óå PostgreSQL[0m Ôï ðñüãñáììá 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> [1m15. Åñãáëåßï ãéá Ó÷åäéáóìü/Õëïðïßçóç Web ÂÜóåùí ÄåäïìÝíùí ãéá ôçí[0m [1mPostgreSQL - EARP[0m · <http://www.oswego.edu/Earp> · <ftp://ftp.oswego.edu> óôïí êáôÜëïãï 'pub/unix/earp'. [1m15.1. Ôé åßíáé ôï EARP ;[0m Ôï EARP åßíáé Ýíá åñãáëåßï ãéá ó÷åäéáóìü/õëïðïßçóç Web âÜóåùí, ðïõ êÜèåôáé ðÜíù áðü ôï óýóôçìá âÜóçò äåäïìÝíùí PostgreSQL. Óôç ëåéôïõñãéêüôçôÜ ôïõ ðåñéëáìâÜíïíôáé: · ¸íá óýóôçìá ãñáöéêïý ó÷åäéáóìïý. · ¸íá interface ãéá sendmail. (ìðïñåß íá ÷åéñéóôåß ôá åéóåñ÷üìåíá êáé åîåñ÷üìåíá mail) · ¸íá áõîçìÝíï ìç÷áíéóìü áóöáëåßáò. · ¸íáí ïäçãü cgi. [1m15.2. Õëïðïßçóç[0m Ç êýñéá õëïðïßçóç ôïõ EARP åßíáé Ýíá åêôåëÝóéìï CGI ðïõ ôñÝ÷åé êÜôù áðü ôï äáßìïíá http êáé ðáñÝ÷åé ðñüóâáóç óôï äéáêïìéóôÞ ôçò âÜóçò äåäïìÝíùí. ¼ëá ôá åñãáëåßá ó÷åäéáóìïý åßíáé ÷ôéóìÝíá ìÝóá óôïí ïäçãü, ï ó÷åäéáóìüò äåí ãßíåôáé ðáñÜ ìüíï óå web. Ôá ßäéá ôá åñãáëåßá áðáéôïýí Ýíá ãñáöéêü browser, ç óõìâáôüôçôá ôùí áíôéêåéìÝíùí ðïõ ó÷åäéÜæïíôáé ìå ôá åñãáëåßá åßíáé áíåîÜñôçôá ôïõ ôñüðïõ õëïðïßçóçò, âáóéóìÝíá óôï ó÷åäéáóìü áôïìéêþí ðñïôéìÞóåùí. [1m15.3. Ôé ÷ñåéÜæåóôå ãéá íá ôñÝîåôå ôï EARP[0m Ôï 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. [1m15.4. Ðþò äïõëåýåé ;[0m ¸íá áðü ôá êõñéüôåñá ÷áñáêôçñéóôéêÜ ôïõ EARP åßíáé üôé ÷ñçóéìïðïéåß ÁíôéêåéìåíïóôñáöÞ ìÝèïäï ãéá íá ðáñÜãåé html óåëßäåò ðïõ åðéêïéíùíïýí ìå ôç âÜóç. Ïé ðåñéóóüôåñåò óåëßäåò áðïôåëïýíôáé áðü äéÜöïñá áíôéêåßìåíá (objects). ÊÜèå áíôéêåßìåíï ðáñÜãåôáé áðü êÜðïéïõ ôýðïõ åñãáëåßï êáé áöïý ôïõ äïèåß Ýíá üíïìá, ôá áíôéêåßìåíá óõíäÝïíôáé ìåôáîý ôïõò óå ìßá áëëçëïõ÷ßá ðïõ ìðïñåß íá êáëåóôåß áðü ôï åñãáëåßï ôçò óåëßäáò (page tool). Ôá áíôéêåßìåíá åßíáé ìðïñïýí íá ÷ñçóéìïðïéçèïýí áðü ðïëëáðëÝò óåëßäåò. ÕðÜñ÷ïõí âáóéêÜ åñãáëåßá ãéá HTML, ÅñùôÞóåéò (Querys), íá ðáßñíåôå ôéìÝò áðü ôéò öüñìåò, íá öïñìÜñåôå åñùôÞóåéò êáé áíôéêåßìåíá åéóüäïõ, êáé íá óõíäÝåôå ìåôáîý ôïõò ôá áíôéêåßìåíá óå Üëëá áíôéêåßìåíá. Ðåñéóóüôåñá åîåëéãìÝíá åñãáëåßá ðåñéëáìâÜíïõí ôï åñãáëåßï ãéá mail êáé ôï multithreaded åñãáëåßï åñùôÞóåùí. Áëëï ÷áñáêôçñéóôéêü ôïõ EARP åßíáé ç Ýîôñá áóöÜëåéá. Ç ðñüóâáóç óå äéÜöïñåò ðåñéï÷Ýò ôïõ óõóôÞìáôïò EARP ìðïñåß íá ðåñéïñéóôåß ìå äéÜöïñïõò ôñüðïõò. Ãéá íá åõêïëýíåé ôçí Ýîôñá áóöÜëåéá, ôï EARP åëÝã÷åé ãéá êÜèå óýíäåóç óôï óýóôçìá, êáé ðñïóäéïñßæåé óå ðïéá ids êáé ãêñïõð áíÞêåé ï óõíäåäåìÝíïò agent. Ç ðñüóâáóç óå ðåñéï÷Ýò êáèïñßæåôáé îå÷ùñéóôÜ, êáé ï óõíäõáóìüò áðïöáóßæåé áí åðéôñÝðåôáé ç ðñüóâáóç óå ìéá óõãêåêñéìÝíç ðåñéï÷Þ ôïõ Earp. ÅðéðëÝïí, ü,ôé áðáéôåßôáé ãéá íá õëïðïéÞóåôå ôá ÷áñáêôçñéóôéêÜ áóöáëåßáò åßíáé Ýíáò http server ðïõ õðïóôçñßæåé âáóéêü (Þ êáëýôåñá) user authentication. [1m15.5. Ðïý èá ôï âñù ;[0m Ìðïñåßôå íá êáôåâÜóåôå ôï EARP ìå anonymous ftp áðü ôï · <ftp://ftp.oswego.edu> óôïí êáôÜëïãï 'pub/unix/earp'. [1m16. PHP Hypertext Preprocessor, ìéá scripting ãëþóóá ãéá ôçí Post-[0m [1mgreSQL ç ïðïßá åíóùìáôþíåôáé óå html êáé åêôåëåßôáé óôï Server[0m Åñãáëåßï äéáóýíäåóçò ìå ôï 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. [1m16.1. Êýñéá ÷áñáêôçñéóôéêÜ[0m ÕðïóôÞñéîç óôÜíôáñ 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 ãéá ðåñéóóüôåñåò ëåðôïìÝñåéåò. [1m16.2. Áíáãíþñéóç/Åõ÷áñéóôßåò[0m * ÌåãÜëá êïììÜôéá áõôïý ôïõ êþäéêá áíáðôý÷èçêáí óôï êáé ãéá ôï ÐáíåðéóôÞìéï ôïõ Ôïñüíôï. ÐïëëÝò åõ÷áñéóôßåò óôïí Lee Oattes ôïõ ÔìÞìáôïò ÁíÜðôõîçò Äéêôýùí ôïõ ðáíåðéóôçìßïõ ãéá ôéò óõíå÷åßò åðïéêïäïìçôéêÝò êñéôéêÝò ôïõ. * Ï êþäéêáò õðïóôÞñéîçò ôçò PostgreSQL ãñÜöôçêå áðü ôïí Adam Sussman · asussman@vidya.com * Áíáñßèìçôïé Üëëïé, âïÞèçóáí óôï íá åëåã÷èåß êáé íá áðïóöáëìáôùèåß ôï ðáêÝôï. [1m16.3. PHP 3 - Óýíôïìï Éóôïñéêü[0m Ôï 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. [1m16.4. Ôé ìðïñþ íá êÜíù, ëïéðüí, ìå ôï PHP/FI ;[0m Ôï ðñþôï ðñÜãìá ðïõ èá ðáñáôçñÞóåôå áí ôñÝîåôå ìéá óåëßäá ìÝóù ôïõ PHP/FI åßíáé üôé ðñïóèÝôåé Ýíá footer ìå ðëçñïöïñßåò ó÷åôéêÜ ìå ôïí áñéèìü ðñïóâÜóåùí óôç óåëßäá óáò (áí Ý÷åôå ìåôáãëùôôßóåé ôçí êáôáãñáöÞ ðñïóâÜóåùí óôï åêôåëÝóéìï). Áõôü åßíáé Ýíá ðïëý ìéêñü äåßãìá ôïõ ôé ìðïñåß íá êÜíåé ãéá óáò ôï PHP/FI. Ðáßæåé ôïí åîßóïõ óçìáíôéêü ñüëï ôïõ ìåôáöñáóôÞ cgi óå öüñìåò, áðü åêåß âãáßíåé êáé to FI ìÝñïò ôïõ ïíüìáôïò. Ãéá ðáñÜäåéãìá, áí äçìéïõñãÞóåôå ìéá öüñìá óå ìßá áðü ôéò web óåëßäåò óáò, ÷ñåéÜæåóôå êÜôé ãéá íá åðåîåñãáóôåß ôçí ðëçñïöïñßá óå áõôÞ ôç öüñìá. Áêüìç êáé áí áðëÜ èÝëåôå íá ðåñÜóåôå ðëçñïöïñßá óå ìéá Üëëç óåëßäá, èá ðñÝðåé íá ÷ñçóéìïðïéÞóåôå Ýíá ðñüãñáììá cgi ãéá íá ôï êÜíåôå áõôü. To PHP/FI êÜíåé åîáéñåôéêÜ åýêïëï ôï íá ðÜñåôå äåäïìÝíá áðü ìéá öüñìá êáé íá êÜíåôå êÜôé ìå áõôÜ. [1m16.5. ¸íá áðëü ðáñÜäåéãìá[0m Áò õðïèÝóïõìå üôé Ý÷åôå ìéá öüñìá: <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" ãéá ðåñéóóüôåñåò ðëçñïöïñßåò. [1m16.6. CGI Redirection[0m [1m16.6.1. Óçìåéþóåéò ãéá ôïí Apache 1.0.x[0m Åíáò êáëüò ôñüðïò íá ôñÝîåôå ôï 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. [1m16.6.2. Netscape HTTPD[0m Ìðïñåßôå íá áíáêáôåõèýíåôå áõôüìáôá ôéò áéôÞóåéò ãéá áñ÷åßá ìå óõãêåêñéìÝíç êáôÜëçîç áñ÷åßïõ þóôå íá ôá ÷åéñéóôåß ôï PHP/FI ìå ôç ÷ñÞóç ôïõ Netscape Server CGI Redirection module. Áõôü ôï module åßíáé äéáèÝóéìï óôï "File Archives" óôç óåëßäá ôïõ PHP/FI. Ôï áñ÷åßï README ðïõ õðÜñ÷åé ìÝóá óôï ðáêÝôï åîçãåß êáèáñÜ ðþò íá ôï ñõèìßóåôå ãéá ÷ñÞóç ìå ôï PHP/FI. [1m16.6.3. NCSA HTTPD[0m Ï NCSA äåí õðïóôçñßæåé ðñïò ôï ðáñþí modules, êáé Ýôóé ãéá íá êÜíïõìå áíáêáôåýèõíóç cgi ìå ôïí server áõôüí, èá ÷ñåéáóôåßôå íá ôñïðïðïéÞóåôå ôïí êþäéêá ôïõ server óáò. Ìéá äéüñèùóç/ìðÜëùìá (patch) ðïõ ôï êÜíåé ãéá ôïí NCSA 1.5 äéáôßèåôáé óôá áñ÷åßá ôïõ site ôïõ PHP/FI. [1m16.7. ÔñÝ÷ïíôáò ôï PHP/FI áðü ôç ãñáììÞ åíôïëþí[0m Áí ÷ôßóåôå ôç CGI Ýêäïóç ôïõ PHP/FI, ìðïñåßôå íá ôï ÷ñçóéìïðïéÞóåôå áðü ôç ãñáììÞ åíôïëþí áðëÜ ãñÜöïíôáò: php.cgi filename üðïõ ôï filename åßíáé ôï áñ÷åßï ðïõ èÝëåôå íá êÜíåôå parse. Ìðïñåßôå íá äçìéïõñãÞóåôå åðßóçò standalone PHP/FI scripts ãñÜöïíôáò óôçí ðñþôç ãñáììÞ ôïõ script óáò ôï åîÞò: #!/usr/local/bin/php.cgi -q Ôï "-q" áðáãïñåýåé ôçí åêôýðùóç ôùí HTTP headers. Ìðïñåßôå íá áöÞóåôå Ýîù áõôÞ ôçí åðéëïãÞ áí èÝëåôå. [1m17. Äéáóýíäåóç ìå PostgreSQL ìÝóù Python[0m Ï 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 [1m17.1. Ðïý ìðïñþ íá âñù ôï PyGres ;[0m Ôá 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. [1m17.2. Ðëçñïöïñßåò êáé õðïóôÞñéîç[0m Áí ÷ñåéÜæåóôå ðåñéóóüôåñåò ðëçñïöïñßåò ãéá áõôÜ ôá ðáêÝôá, åðéóêåöôåßôå ðáñáêáëþ ôá 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 ãéá áíáöïñÝò óöáëìÜôùí, éäåþí, ó÷ïëåßùí [1m18. Åðéêïéíùíßá ìåôáîý PostgreSQL êáé WWW - WDB-P95[0m [1m18.1. Ó÷åôéêÜ ìå ôï wdb-p95[0m 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. [1m18.2. Åßíáé áðáñáßôçôï ï äéáêïìéóôÞò ôçò PostgreSQL, ôï pgperl, êáé[0m [1môï httpd íá åßíáé óôïí ßäéï host;[0m Ï÷é - ï äéáêïìéóôÞò ôçò 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). [1m19. ÐñïãñáììáôéóôéêÝò äéáóõíäÝóåéò ãéá "C", "C++", ESQL/C êáé[0m [1mÄõáäéêïß ÔåëåóôÝò ãéá ôçí PostgreSQL[0m [1m19.1. Äéáóýíäåóç ãëþóóáò "C" ìå ôçí PostgreSQL[0m ÓõìðåñéëáìâÜíåôáé óôç äéáíïìÞ êáé ïíïìÜæåôáé 'libpq'. Åßíáé ðáñüìïéï ìå ôá Oracle OCI, Sybase DB-lib êáé ôéò âéâëéïèÞêåò Informix CLI . [1m19.2. Interface ãëþóóáò "C++" ãéá ôçí PostgreSQL[0m ÓõìðåñéëáìâÜíåôáé óôç äéáíïìÞ êáé ïíïìÜæåôáé 'libpq++'. [1m19.3. ESQL/C ãéá PostgreSQL[0m 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 [1m19.4. Äõáäéêïß ÔåëåóôÝò ãéá ôçí PostgreSQL[0m Ïé äõáäéêïß ôåëåóôÝò ãñÜöôçêáí áðü ôïí 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. [1m20. Japanese Kanji Êþäéêáò ãéá ôçí PostgreSQL[0m Âñßóêåôáé óôï ðáñáêÜôù site · <ftp://ftp.sra.co.jp/pub/cmd/postgres/> [1m21. ÌåôáöïñÜ ôçò PostgreSQL óå Windows 95/Windows NT[0m Ç ìåôáöïñÜ óôá 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> [1m22. Ëßóôåò áëëçëïãñáößáò[0m [1m22.1. ÁðïêôÞóôå Ýíá äùñåÜí ëïãáñéáóìü e-mail[0m ÅëÝãîôå ôéò äùñåÜí ðñïóöïñÝò - áðïêôÞóôå äùñåÜí ëïãáñéáóìïýò 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õò. [1m22.2. ÁããëéêÞ Ëßóôá Áëëçëïãñáößáò[0m Äåßôå ôéò Ëßóôåò Áëëçëïãñáößáò óôçí êåíôñéêÞ óåëßäá óôï 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 [1m22.3. Áñ÷åßï ôçò Ëßóôáò Áëëçëïãñáößáò[0m Êñáôåßôáé áñ÷åßï ôùí ëéóôþí áëëçëïãñáößáò óå html ìïñöÞ óôéò ðáñáêÜôù äéåõèýíóåéò - · ÄéáèÝóéìç ëßóôá ìå âÜóç ôéò äéåõèýíóåéò ìÝóù MHonarc êáé WWW óôï <http://www.postgresql.org/mhonarc/pgsql-questions> · <ftp://ftp.postgresql.org> óôïí êáôÜëïãï /pub/majordomo [1m22.4. ÉóðáíéêÞ Ëßóôá Áëëçëïãñáößáò[0m ÕðÜñ÷åé ôþñá êáé ìéá "áíåðßóçìç" ëßóôá ãéá ôçí postgreSQL óôá éóðáíéêÜ. Äåßôå åðßóçò ôï ðáñáðÜíù ôìÞìá 'ÄùñåÜí Ëïãáñéáóìüò ãéá íá ïñãáíþóåôå ôá e-mails ôçò PostgreSQL' . Ãéá íá åããñáöåßôå, ðñÝðåé íá óôåßëåôå Ýíá ìÞíõìá óôï: · majordomo@tlali.iztacala.unam.mx Ôï êõñßùò ôìÞìá (body) ôïõ ìçíýìáôïò èá ðåñéÝ÷åé ìüíï ôçí áêüëïõèç ãñáììÞ: inscripcion pgsql-ayuda [1m23. Ôåêìçñßùóç êáé Âéâëéïãñáößá[0m [1m23.1. Ïäçãïß åêìÜèçóçò êáé Åã÷åéñßäéá[0m Ôá ðáñáêÜôù óõìðåñéëáìâÜíïíôáé óôç äéáíïìÞ ôçò PostgreSQL óå ìïñöÞ postscript êáé óå unix óåëßäåò âïçèåßáò (man-pages). Áí Ý÷åôå ðñüóâáóç óôï internet, ìðïñåßôå íá âñåßôå ôá êåßìåíá ðïõ áíáöÝñïíôáé ðáñáêÜôù óôï <http://www.postgresql.org/docs> · "Ïäçãüò ÅãêáôÜóôáóçò" · "Ïäçãüò ÷ñÞóçò" ãéá ôçí PostgreSQL · "Ïäçãüò áíÜðôõîçò-õëïðïßçóçò" ìå ëåðôïìÝñåéåò ãéá ôéò åóùôåñéêÝò ëåéôïõñãßåò ôçò PostgreSQL. · Online åã÷åéñßäéá. · Online åã÷åéñßäéá óå HTML ìïñöÞ. · Åðßóçò, åã÷åéñßäéá óå ìïñöÞ Postscript ãéá åêôýðùóç. [1m23.2. Online Ôåêìçñßùóç[0m · Ëßóôá êáé ðåñéãñáöÞ ôùí ðñïêáèïñéóìÝíùí ôýðùí äåäïìÝíùí êáé ôåëåóôþí Åßíáé ôìÞìá ôùí åíôïëþí 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 áõôïý ôïõ êåéìÝíïõ ``'' [1m23.3. ×ñÞóéìç Âéâëéïãñáößá ÁíáöïñÜò[0m · "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 ! ÊïéôÜîôå óôá âéâëéïðùëåßá. [1m23.4. Êåßìåíá ðñïäéáãñáöþí ANSI/ISO SQL - SQL 1992, SQL 1998[0m Ìðïñåßôå íá âñåßôå êåßìåíá ðñïäéáãñáöþí 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. [1m23.5. Óýíôáîç ANSI/ISO SQL 1992[0m Äåßôå ôï Appendix A áõôïý ôïõ êåéìÝíïõ ``'' [1m23.6. Óýíôáîç ANSI/ISO SQL 1998[0m Ïé ðñïäéáãñáöÝò SQL 1998 (SQL 3) åßíáé áêüìç õðü áíÜðôõîç. Äåßôå ôï 'Electronic Access to the SQL3 Working Draft' áõôïý ôïõ êåéìÝíïõ óôï ``'' [1m23.7. Ïäçãüò åêìÜèçóçò SQL ãéá áñ÷Üñéïõò[0m Äåßôå ôï Appendix B áõôïý ôïõ êåéìÝíïõ ``'' [1m23.8. ÐñïóùñéíÞ åðÝêôáóç (extension) óôï SQL92[0m · Êåßìåíï ãéá ðñïóùñéíÞ åðÝêôáóç 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). [1m23.9. ÔìÞìá 0 - Áðïêôþíôáò ôá êåßìåíá ISO/ANSI SQL[0m Áõôü ôï êåßìåíï óáò äåß÷íåé ðþò íá áðïêôÞóåôå (íüìéìá) Ýíá áíôßãñáöï ôïõ ðñïôýðïõ 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". [1m23.10. ÔìÞìá 1 - ÔñÝ÷ïõóá êáôÜóôáóç ôïõ ISO/ANSI SQL[0m Áõôü ôï êåöÜëáéï åßíáé ìéá ðçãÞ ðëçñïöïñßáò ó÷åôéêÜ ìå ôçí ðñüôõðç äéåñãáóßá 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 ÓõóôÞìáôá Åðüìåíçò ÃåíéÜò." [1m23.11. ÔìÞìá 2 - ISO/ANSI SQL Foundation[0m ¸íá óçìáíôéêü ôìÞìá ôçò 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 Ýêäïóç ôïõ ðñïôýðïõ Ý÷åé ðáñüìïéï ÷ñïíïäéÜãñáììá. [1m23.12. ÔìÞìá 3 - ISO/ANSI SQL Call Level Interface[0m Ôï 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 [1m23.13. ÔìÞìá 4 - ISO/ANSI SQL Persistent Stored Modules[0m Ôï 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. [1m23.14. ÔìÞìá 5 - ÔõðïðïéÞóåéò - Äåóìåýóåéò ISO/ANSI SQL/ ISO/ANSI[0m [1mSQL/Bindings[0m Ãéá åõêïëßá áíáöïñþí, ïé äåóìåýóåéò, ôõðïðïéÞóåéò ôçò ãëþóóáò ðñïãñáììáôéóìïý Ý÷ïõí óõãêåíôñùèåß óå Ýíá îå÷ùñéóôü êåßìåíï. Ç ôñÝ÷ïõóá Ýêäïóç åßíáé áðëÜ Ýíá áðüóðáóìá áðü ôá ðñüôõðá ôçò SQL-92(äõíáìéêÜ (dynamic) êáé åíóùìáôïýìåíá (embedded)). ÐáñáìÝíåé áäéåõêñßíéóôç ìéá ðïéêéëßá èåìÜôùí ôõðïðïßçóçò ôçò ãëþóóáò. Óôçí ðáñáäïóéáêÞ ðñïãñáììáôéóôéêÞ ãëþóóá, õðÜñ÷ïõí ïé áðåéêïíßóåéò ôùí ôýðùí äåäïìÝíùí ôçò SQL-92. Ðáñüëá áõôÜ, èá ðñÝðåé íá ïñéóôïýí êáé ïé áðåéêïíßóåéò ìåôáîý ôùí áíôéêåéìÝíùí ôçò SQL êáé ôùí ìåôáâëçôþí ôçò ðñïãñáììáôéóôéêÞò ãëþóóáò.. Ãéá ôéò áíôéêåéìåíïóôñáöåßò ãëþóóåò, ðñÝðåé íá ïñéóôåß ç áðåéêüíéóç ãéá ôïõò ôýðïõò äåäïìÝíùí ôçò SQL êáé ìåôáîý ôïõ ìïíôÝëïõ áíôéêåéìÝíùí ôçò SQL êáé ôïõ ìïíôÝëïõ áíôéêåéìÝíùí ôçò áíôéêåéìåíïóôñáöïýò ãëþóóáò. Ôï ìïíôÝëï äåäïìÝíùí èá ðñÝðåé íá ïñéóôéêïðïéçèåß ðñéí áñ÷ßóåé íá ãßíåôáé áíáöïñÜ óå ôÝôïéïõ ôýðïõ ðñïâëÞìáôá. Ïé ôõðïðïéÞóåéò ôçò ãëþóóáò èá ïëïêëçñùèïýí ùò ìÝñïõò ôïõ ðñüôõðïõ SQL3. [1m23.15. ÔìÞìá 6 - ISO/ANSI SQL XA Interface Specialization (SQL/XA)[0m Ïé ðñïäéáãñáöÝò áõôÝò èá ôõðïðïéÞóïõí Ýíá ðñïãñáììáôéóôéêü 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. [1m23.16. Part 7 - ISO/ANSI SQL Temporal[0m Ç 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. [1m23.16.1. ÅÉÓÁÃÙÃÇ[0m Ç õðïóôÞñéîç Ýãêõñïõ ÷ñüíïõ (Valid-time) îåðåñíÜåé áõôÞ åíüò êïéíïý ÷ñïíéêïý áöçñçìÝíïõ ôýðïõ äåäïìÝíùí (ADT). Óôïí ôåëåõôáßï, ìéá óôÞëç ðñïóäéïñßæåôáé óáí Ýíá ÷ñïíéêü ðåäßï, åßôå ùò DATE åßôå ùò INTERVAL (èá äïèïýí ðáñáäåßãìáôá óýíôïìá). Ìå ôïí Ýãêõñï ÷ñüíï, ïé ãñáììÝò åíüò ðßíáêá äéáöïñïðïéïýíôáé ìå ôï ðÝñáóìá ôïõ ÷ñüíïõ, êáèþò äéáöïñïðïéåßôáé êáé ç ðñáãìáôéêüôçôá. Ç ÷ñïíéêÞ óöñáãßäá (timestamp) ðïõ ó÷åôßæåôáé ìå ìéá ãñáììÞ åíüò ðßíáêá Ýãêõñùí ÷ñüíùí (valid-time table) ìåôáöñÜæåôáé áðü ôçí ãëþóóá åñùôÞóåùí ùò ç ÷ñïíéêÞ óôéãìÞ ãéá ôçí ïðïßá ï óõíäõáóìüò ôéìþí ôùí óôçëþí ôçò ãñáììÞò åêåßíçò Þôáí Ýãêõñïò. Ç ýðáñîç ôçò Ýììåóçò áõôÞò ÷ñïíéêÞò óöñáãßäáò åðéôñÝðåé ôçí äéáôýðùóç óáöþí êáé ðñùôüôõðùí åñùôÞóåùí. [1m23.16.2. ÌÉÁ ÌÅËÅÔÇ- ÁÐÏÈÇÊÅÕÓÇ ÓÕÃ×ÑÏÍÙÍ/ÔÑÅ×ÏÕÓÙÍ ÐËÇÑÏÖÏÑÉÙÍ[0m Ôï Ãñáöåßï Ðñïóùðéêïý ôïõ Ðáíåðéóôçìßïõ ôçò Áñéæüíá Ý÷åé êÜðïéåò ðëçñïöïñßåò óå ìéá âÜóç äåäïìÝíùí, ìÝóá óôéò ïðïßåò êáé ôï üíïìá ôùí õðáëëÞëùí, ôïí ôñÝ÷ïíôá ìéóèü ôïõò, êáé ôïí ôñÝ÷ïõóá èÝóç ôïõò. Áõôü ìðïñåß íá ðåñéãñáöåß ìå Ýíáí áðëü ðßíáêá. Employee(Name, Salary, Title) ÄåäïìÝíïõ áõôïý ôïõ ðßíáêá, ç åýñåóç ôïõ ìéóèïý åíüò õðáëëÞëïõ åßíáé åýêïëç. SELECT Salary FROM Employee WHERE Name = 'Bob' Ôþñá ôï Ãñáöåßï Ðñïóùðéêïý åðéèõìåß íá êáôáãñÜöåé êáé ôçí çìåñïìçíßá ãÝííçóçò. Ãéá íá ôï êÜíåé, ðñïóèÝôåé ìéá óôÞëç óôïí ðßíáêá, êáé Ýôóé ðñïêýðôåé ôï áêüëïõèï ó÷Þìá. Employee(Name, Salary, Title, DateofBirth DATE) Ç åýñåóç ôùí ãåíåèëßùí åíüò õðáëëÞëïõ åßíáé áíÜëïãç ìå ôï íá âñïýìå ôï ìéóèü ôïõ. SELECT DateofBirth FROM Employee WHERE Name = 'Bob' [1m23.16.3. ÌÅËÅÔÇ - ÁÐÏÈÇÊÅÕÓÇ ÉÓÔÏÑÉÊÙÍ ÐËÇÑÏÖÏÑÉÙÍ[0m Ôï Ãñáöåßï Ðñïóùðéêïý åðéèõìåß ðåñÜóåé ôá éóôïñéêÜ óôïé÷åßá ôùí õðáëëÞëùí óå çëåêôñïíéêÞ ìïñöÞ. Ãéá íá ôï êÜíåé, ðñïóèÝôïõí äýï óôÞëåò, ìéá ðïõ õðïäåéêíýåé ðüôå Ýãéíå Ýãêõñç ç ðëçñïöïñßá ôçò ãñáììÞò, êáé ìéá ãéá ôï ðüôå Ýðáøå íá éó÷ýåé. Employee (Name, Salary, Title, DateofBirth, Start DATE, Stop DATE) Óôï ìïíôÝëï äåäïìÝíùí, áõôÝò ïé äýï óôÞëåò åßíáé ðáñüìïéåò ìå ôï DateofBirth. Ðáñüëá áõôÜ, ç ðáñïõóßá ôïõò Ý÷åé åðéðôþóåéò ìåãÜëçò êëßìáêáò. [1m23.16.4. ÌÅËÅÔÇ - ÐÑÏÂÏËÇ (PROJECTION)[0m Ãéá íá âñïýìå ôïí ôñÝ÷ïíôá ìéóèü åíüò õðáëëÞëïõ, ôá ðñÜãìáôá åßíáé ðëÝïí äõóêïëüôåñá. 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 [1m23.16.5. ÌÅËÅÔÇ - ÓÕÓ×ÅÔÉÓÌÏÓ (JOIN)[0m Ìéá ðéï äñáóôéêÞ ðñïóÝããéóç åßíáé íá áðïöýãïõìå ôï ðñüâëçìá ôçò åîáãùãÞò ôçò ìéóèïëïãéêÞò éóôïñßáò ìå áíáäéïñãÜíùóç ôïõ ó÷Þìáôïò þóôå íá áðïóõæåýîïõìå ôï ìéóèü, ôç èÝóç êáé ôçí çìåñïìçíßá ãÝííçóçò (ðáñáêÜôù, áãíïïýìå ôçí çìåñïìçíßá ãÝííçóçò, ãéá áðëüôçôá). 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 [1m23.16.6. ÌÅËÅÔÇ - ÁÈÑÏÉÓÔÉÊÏÉ ÔÅËÅÓÔÅÓ (AGGREGATES)[0m Ôþñá ôï Ã.Ð. åñùôÜôáé, ðïéïò åßíáé ï ìÝãéóôïò ìéóèüò; Ðñéí ôçí åéóáãùãÞ ôïõ ÷ñüíïõ, áõôü Þôáí åýêïëï. 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 [1m23.16.7. ÐÅÑÉËÇØÇ[0m Ïé ðåñéóóüôåñåò åöáñìïãÝò ìå âÜóç äåäïìÝíùí Ý÷ïõí íá áíôéìåôùðßóïõí êáé äåäïìÝíá ìå ÷ñïíéêÞ äéáêýìáíóç åßíáé áíÜãêç íá áíôéìåôùðéóôïýí . Ç õðïóôÞñéîç Ýãêõñïõ-÷ñüíïõ åßíáé áðïýóá óôçí 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. [1m23.17. ÔìÞìá 8 - ISO/ANSI ÐÏËÕÌÅÓÁ SQL (SQL MULTIMEDIA - SQL/MM)[0m ¸íá íÝï äéåèíÝò Ýñãï ôõðïðïßçóçò 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 [1m24. Ôå÷íéêÞ õðïóôÞñéîç ãéá ôçí PostgreSQL[0m Áí Ý÷åôå ïðïéáäÞðïôå ôå÷íéêÞ åñþôçóç Þ óõíáíôÞóåôå ïðïéïäÞðïôå ðñüâëçìá ìðïñåßôå íá óôåßëåôå 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> [1m25. ÏéêïíïìéêÜ êáé ÅðáããåëìáôéêÜ ÈÝìáôá[0m Ïé åìðïñéêÝò âÜóåéò ðëçñþíïõí ðïëëïýò öüñïõò, åíäåéêôéêÜ áíáöÝñïõìå : ïìïóðïíäéáêïýò, ðïëéôåéáêïýò, ðùëÞóåùí, åñãáóéáêïýò, êïéíùíéêÞò áóöÜëåéáò, éáôñéêÞò ðåñßèáëøçò åñãáæïìÝíùí, èÝëãçôñùí ãéá ôïõò åñãáæüìåíïõò, êüóôç ãéá marketing êáé äéáöÞìéóç. ¼ëá áõôÜ ôá Ýîïäá äåí ðçãáßíïõí êáôåõèåßáí ãéá ôçí áíÜðôõîç ôçò âÜóçò. ¼ôáí áãïñÜæåôå ìéá åìðïñéêÞ âÜóç, ìÝñïò ôçò ôéìÞò ðçãáßíåé ãéá åðéâáñýíóåéò üðùò öüñïé, Ýîïäá êáé ôï éóïæýãéï ôïõ êüóôïõò ôçò âÜóçò R&D. Ïé åìðïñéêÝò âÜóåéò, åðßóçò, ðñÝðåé íá ðëçñþóïõí ãéá êôßñéá/êôßóìáôá êáé íá áãïñÜóïõí ìç÷áíÝò Unix, íá ôéò åãêáôáóôÞóïõí êáé íá ôéò óõíôçñÞóïõí. ¼ëá áõôÜ ôá Ýîïäá åðéâáñýíïõí ôåëéêÜ ôïí ðåëÜôç. Ç PostgreSQL õðåñÝ÷åé Ýíáíôé ôùí åìðïñéêþí âÜóåùí ìéá êáé äåí ðëçñþíïõí Üìåóá öüñïõò êáèþò áíáðôýóóåôáé ìÝóù internet. ¸íá ôåñÜóôéï ðëÞèïò áíèñþðùí óõíåéóöÝñåé óôçí áíÜðôõîç ôçò PostgreSQL. Ãéá ðáñÜäåéãìá, óå ìéá õðïèåôéêÞ ðåñßðôùóç, áí õðÜñ÷ïõí Ýíá åêáôïììýñéï åôáéñåßåò óôçí ÁìåñéêÞ êáé êÜèå ìéá óõíåéóöÝñåé 10 $ (áîßá ôïõ ëïãéóìéêïý PostgreSQL) ôüôå êÜèå ìßá èá ëÜâåé äÝêá åêáôïììýñéá äïëÜñéá!! ÁõôÞ åßíáé ç [1mÌÁÃÅÉÁ [22môçò áíÜðôõîçò ëïãéóìéêïý óôï internet. ÌÝ÷ñé ôþñá, ï ðçãáßïò êþäéêáò ôçò PostgreSQL åßíáé ðåñßðïõ 2,00,000 ãñáììÝò óå êþäéêá "C", "C++". Áí ôï êüóôïò êÜèå ãñáììÞò êþäéêá "C" åßíáé $ 2 ôüôå ôï óõíïëéêü êüóôïò ôçò PostgreSQL èá Þôáí óÞìåñá $ 4,00,000 (ôåôñáêüóéåò ÷éëéÜäåò äïëÜñéá!). ÐïëëÝò åôáéñåßåò Þäç áíáðôýóóïõí ôåñÜóôéåò ðïóüôçôåò êþäéêá "C", "C++". ¸ôóé, ôï íá ðÜñïõí ôïí ðçãáßï êþäéêá ôçò PostgreSQL êáé íá óõíåñãáóôïýí ìå Üëëåò åôáéñåßåò óôï internet èá ùöåëÞóåé ôçí åôáéñåßá íá åîïéêïíïìÞóåé ÷ñüíï êáé ðñïóðÜèåéá. [1m26. Ëßóôá Üëëùí âÜóåùí äåäïìÝíùí[0m ÐáñáêÜôù áêïëïõèåß ëßóôá Üëëùí 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/> [1m27. ×ñÞóéìåò óõìâïõëÝò ãéá áíáæçôÞóåéò óôï Internet World Wide Web[0m Ôï Internet åßíáé áðÝñáíôï, õðÜñ÷åé óå áõôü ôåñÜóôéá ðïóüôçôá ëïãéóìéêïý êáé ìéá èÜëáóóá ðëçñïöïñéþí áðü êÜôù ôïõ. ÁõîÜíåôáé ìå ñõèìü 300% åôçóßùò óå üëï ôïí êüóìï. Õðïëïãßæåôáé üôé õðÜñ÷ïõí ðåñßðïõ 10 åêáôïììýñéá Web sites óå üëç ôç ãç! Ãéá íá øÜîåôå ãéá ðëçñïöïñßåò èá ÷ñçóéìïðïéÞóåôå ìç÷áíÝò áíáæÞôçóçò üðùò ôï "Yahoo", "Netscape", "Lycos" êëð. Ðçãáßíåôå óôï Yahoo êáé ðáôÞóôå óôï search. ×ñçóéìïðïéÞóôå ôéò åðéëïãÝò öéëôñáñßóìáôïò ãéá íá óõãêåêñéìåíïðïéÞóåôå ôá êñéôÞñéá áíáæÞôçóçò. Ç default åðéëïãÞ áíáæÞôçóçò åßíáé ç "¸îõðíç áíáæÞôçóç" ("Intelligent search") ðïõ åßíáé ðéï ãåíéêÞ êáé åìöáíßæåé üëåò ôéò ðéèáíüôçôåò. ÐáôÞóôå óôéò "ÅðéëïãÝò" ("Options") ãéá íá äéáëÝîåôå áíáæÞôçóç ìå "áêñéâÞ öñÜóç"("EXACT phrase"), áíáæÞôçóç ìå "AND", ìå "OR", êëð. Ìå áõôüí ôïí ôñüðï èá âñåßôå ôéò ðëçñïöïñßåò ðïõ èÝëåôå ðïëý ãñçãïñüôåñá. [1m28. ÓõìðÝñáóìá[0m ÌåôÜ áðü Ýñåõíá óå üëåò ôéò äéáèÝóéìåò âÜóåéò ðïõ åßíáé [1mÄÙÑÅÁÍ [22mêáé ï ðçãáßïò ôïõò êþäéêáò åßíáé äéáèÝóéìïò, êáôáëÞîáìå üôé ÌÏÍÏ ç 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' ðïõ éêáíïðïéåß üëåò áõôÝò ôéò óõíèÞêåò êáé íá åßíáé ôï êáôÜëëçëï ëïãéóìéêü ãéá áõôÞ ôçí ðåñßðôùóç. [1m29. Óõ÷íÜ ÄéáôõðùìÝíåò ÅñùôÞóåéò ó÷åôéêÜ ìå ôçí PostgreSQL[0m Ðçãáßíåôå óôçí ôåëåõôáßá Ýêäïóç ôïõ FAQ ãéá General, Linux êáé Irix óôï · <http://www.postgresql.org/docs/faq-english.shtml> [1m30. Óçìåßùóç Ðíåõìáôéêþí ÄéêáéùìÜôùí[0m ÐíåõìáôéêÞ éäéïêôçóßá (c) 1997 ôïõ Al Dev (Alavoor Vasudevan). ¼ëá ôá äéêáéþìáôá Ý÷ïõí êáôï÷õñùèåß. ÊÁÌÉÁ ÅÕÈÕÍÇ ÃÉÁ ÅÐÁÊÏËÏÕÈÏÌÅÍÅÓ ÆÇÌÉÅÓ. Óå êáìßá ðåñßðôùóç ï óõããñáöÝáò ôïõ êåéìÝíïõ äåí åßíáé õðåýèõíïò ãéá ïðïéáäÞðïôå æçìéÜ (óõìðåñéëáìâáíïìÝíùí ÷ùñßò ðåñéïñéóìü, ôùí åéäéêþí, áíáðÜíôå÷ùí, åðáêüëïõèùí, Þ Üìåóùí/ Ýììåóùí æçìéþí, ðñïóùðéêþí âëáâþí, áðþëåéá åðáããåëìáôéêþí êåñäþí, äéáêïðÞ åñãáóßáò, áðþëåéá åðáããåëìáôéêþí äåäïìÝíùí, Þ ïðïéáäÞðïôå ÷ñçìáôéêÞ áðþëåéá) ðïõ ðñïêýøåé áðü ôç ÷ñÞóç áõôïý ôïõ êåéìÝíïõ. Ï óõããñáöÝáò äåí åããõÜôáé ôçí ïñèüôçôá, ÷ñçóéìüôçôá, åìðïñéêüôçôá ôïõ êåéìÝíïõ. Ïé ìÜñêåò, åôáéñåßåò êáé ôá ïíüìáôá ôùí ðñïúüíôùí ðïõ áíáöÝñïíôáé óå áõôü ôï êåßìåíï åßíáé óÞìá êáôáôåèÝí ôùí áíôßóôïé÷ùí éäéïêôçôþí. Óáò ðáñáðÝìðïõìå óôá îå÷ùñéóôÜ óçìåéþìáôá ðíåõìáôéêÞò éäéïêôçóßáò ôùí åôáéñåéþí êáé ðñïúüíôùí ðïõ áíáöÝñèçêáí óå áõôü ôï êåßìåíï. Åßíáé äéêÞ óáò åõèýíç íá äéáâÜóåôå êáé íá êáôáëÜâåôå ôá óçìåéþìáôá ðíåõìáôéêÞò éäéïêôçóßáò ôùí ïñãáíéóìþí /åôáéñåéþí/ðñïúüíôùí /óõããñáöÝùí ðïõ áíáöÝñèçêáí óå áõôü ôï êåßìåíï ðñéí íá ÷ñçóéìïðïéÞóåôå ôéò áíôßóôïé÷åò ðëçñïöïñßåò. [1mAE. ÐáñÜñôçìá A - Óýíôáîç ôïõ ANSI/ISO SQL 1992[0m Áõôü ôï áñ÷åßï ðåñéÝ÷åé ôï äåíäñïåéäÞ äéáäñïìÞ ìå ðñïôåñáéüôçôá âÜèïõò (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> [1mAF. ÐáñÜñôçìá B - Ïäçãüò ÅêìÜèçóçò SQL ãéá áñ÷Üñéïõò[0m [1mAF.1. Ïäçãüò ÅêìÜèçóçò ãéá PostgreSQL[0m Ìáæß ìå ôç äéáíïìÞ ôçò PostgreSQL äéáíåßìåôáé ïäçãüò åêìÜèçóçò SQL. Ôá scripts ôïõ ïäçãïý åêìÜèçóçò SQL âñßóêïíôáé óôïí êáôÜëïãï src/tutorial [1mAF.2. Äåßêôåò Internet äéåõèýíóåùí[0m Ïé áñ÷Üñéïé ìðïñïýí íá âñïõí ïäçãü åêìÜèçóçò 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> [1mAG. Appendix C - Ïäçãßåò ãéá ãñÞãïñç åãêáôÜóôáóç Linux[0m Áí óêïðåýåôå íá ÷ñçóéìïðïéÞóåôå ôç 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/>