How can I design a database management system in C?
I have developed my own RDBMS as final year project during my college. It was extremely basic and partially implemented. I first gathered the necessary theoretical background by studying the seminal paper of RDBMS by Codd which summarises the twelve characteristics of a RDBMS then i studies some good database books (the ones written by Korth and Navathe). Then the next task was to choose the development platform. I myself chose Java. You can choose any platform in which you are comfortable.Then the next step was to decide how the database tables will be physically stored on the hard disk. I stored each individual table as an encrypted file and there was a metadeta file for each database that used to store the details about all tha tables(e.g. their structure, keys, time and date when they were last modified etc) in that database. I also created a global metadata file that stored the overall information about the whole DBMS like various databases, their creator etc. The next step was to select few SQL queries to implement. I implemented around 20 basic SQL queries. I created a command line based parser that accepted simple SQL commands and executed them. This was the most difficult step of the whole project.Then I made a GUI client through which I could access all the functionality of my RDBMS. You can also create the same if you want to access your database more elegantly.Then I implememented some more security features like password protection so that only authorized persons can access the database.Then i created a network based service using socket programming and designed a remote gui client so that any one on the local network or internet can access the database. Finally i also created a web service using servlets and jsp so that one can also access and manage database from device having a web browser.Some enhancements that you can make are use locking mechansims for facilitating concurrent access, use threads for each service request, create an OS based service for you RDBMS, use replication etc PS- I also demonstrated my project in front of the ex president of my country :)