Scheme-Amp-SQL-Database-Interactions
Rohan Golwala
December 10, 2008
Overview
The project aims to build an interface with a Database Server (PostgreSQL) running on a local host system which is controlled using the Scheme language which serves as an interface. It aims at performing the basic SQL queries as well as some higher-order query methods to help process results.
Screenshot

Concepts Demonstrated
- "Data Abstraction" as a concept in using the "map" and "filter" procedures in working with the SQL data.
- "Lists" are also used as an arguments for many functions.
- The use of the "lambda" procedures in many functions using the concept of "Functional Programming".
External Technology
The project integrates with SQL technology making use of a Database Server Software named 'PostgreSQL' which communicates with Scheme language. We can perform basic queries such as creating a table, insert data into table, etc. as well as high-order queries on the data in the Database Server using Scheme environment making use of the libraries such as "class.ss" and "spgsql.ss".
Innovation
The innovative thing that I did in the project was that I created complex querries using the simple SQL queries which lead to the concept of a "view" with the help of a primary key. The thing that was most innovative was that I displayed data from two different tables simultaneously in a single query which was interesting. Also, I used the map, filter, fold etc. functions which works also with the SQL queries which was interesting. Thus, I used the concept of these functions to perform some complex but rather easy operations. Lastly, I also worked on formatting the output which worked really well and hence the output looked organised. Also, I worked on creating a secured connection to the server which required a password.
Technology Used Block Diagram

Additional Remarks
I would like to thank the PLT-Scheme group immensely as they have been very helpful in making this project a success. There is no direct SQL library which you can start using immediately. I had to test it and search for it a lot. The main concept in the project was to set up a connection with the database which took a lot of time to figure it out. Once, that was done the rest of the things were rather easy and achievable compared to the previous operations.