Design and Implementation of
a mini-DBMS Probject
1. Introduction
This project aims on designing a simple relational database management system. The below figure illustrates conventional DBMS architecture.
Three major components of DBMS:
(1) Front End
Front end provides a friendly user interface capable of receiving user’s query statement, parsing statement into execution plan of Query Processor and reporting result back to user. The query statement is more likely a simplified version of standard SQL. (Programmers are granted to revise the query language with personal style). Conventional ways for front end are lexical parser and the menu-driven user interface. (For example, Lex/Yacc text interface or window graphic UI alternatively.) Execution plan of Query Processor split query statement into tokens, like attribute names, tables, conditions and is arranged into a legitimate query tree. Moreover, displaying result into a table grid comprehends user for reading.
(2) Query Processor
Query processor takes the responsibility for translating execution plan into relational algebra operations. In the translating process, system catalog need to be updated and some temporary relations are created if necessary. No query optimization is required in this project but you can get extra bonus if a simple version is given.
(3) Storage System
Storage system deals with the data storage in files. The system manipulates the internal organization of relations include system catalog. Two optional implementations are for bonus, B-tree index and transaction management.
2. Requirement
The final project should be done by group work (3 persons per group). Single person is not allowed except for special reason. Your system must provide apprehensive UI and accept facilitate SQL command. Additionally, feel free to select any kinds of programming languages, likes C, C++, JAVA or Visual Basic.
Basic functions to be achieved:
(1) Create and delete relations
(2) Contain multiple attributes in one relation
(3) Provide basic attribute type such as integers, reals, and strings (fixed lengths)
(4) Support relational algebra such like select, project, and join
(5) Support predicate with boolean expression: namely, AND and OR operators
(6) View or save result as a relation, either user specified or default
(7) Insert tuples into a relation
(8) Update and delete tuples from a relation under a specified condition
Although the project doesn’t give strictly prescribe to follow the SQL format, you are suggested to have your own syntax based on the SQL mentioned in textbook.
3. Hand in
(1) Report
The project needs a detail system design report with your own query language, the system architecture, and the interfaces between any two adjacent components. The purpose of this report is to help TA to easily understand the design issues and any features of your system. We suggest you could add some figures to illustrate your system design and remember the quality is more important than quantity. Copy your source code in a floppy disk.
(2) Your system
4. Deadlines
(The schedule will be on CIS BBS or www.database.cis.nctu.edu.tw before deadline.)
May 27, 2002 ---- hand in (1) to EC130 before 5:00PM
5. Grading
(1) Report 20%
(2) System 80%
Email your team member list to: jyyeh@cis.nctu.edu.tw
Lab ext: 56647
http://www.database.cis.nctu.edu.tw/