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.