*Personal Details*
*Name:*Dhruv Baldawa *Email:*dhruvbaldawa@gmail.com *Skype ID or GTalk:*dhruvbaldawa@gmail.com *IRC nick:*dhruvbaldawa *Phone number:* +(91)-9323321233 *School Name:* Thakur College of Engineering and Technology, University of Mumbai *Years completed:*Third Year Computer Engineering *Python Experience Level:*Intermediate
*Project Description*
*Describe your idea in detail:*SQL is a generic language and is the most common language used for database querying. But, the problem with SQL is, when a new user fires a SQL query, he needs to know 2 things :
1. He needs to all the relations in the schema, and how are they related, and how are they linked using which attributes. 2. When a user needs to fire similar queries (similar means queries with almost same entities), in such a case all the JOIN statements or linking conditions have to be rewritten.
So, here I propose a tool, which comprises of a metadata and syntax generator, algorithm and query helper, which can help user create a specialized syntax for querying the database in a simple and efficient manner, ignoring all the linking between the various tables.
*What have been done so far with this idea : *I have been developing a Paper Conference Management System for an International Paper Conference which is conducted in our college, and there are various queries and reports which are to be generated, but considering the modularity of the software architecture and the normalized databases, the SQL queries tend to become bigger and bigger and making it difficult for the user who doesn't know the database schema to generate reports. So, I have done a partial implementation of this concept, in that project.The current code can be found at : http://conms.svn.sourceforge.net/viewvc/conms/conms/compiler.php?revision=59...
It is not complete, and may contain errors.
*Vision:* To develop a robust system, which makes generation of SQL queries simpler for the end-user, thus, empowering the user to generate database queries/reports without any prior knowledge regarding the database schema. The system can be condensed to form a tool, which automatically generates the metadata, with the database schema provided along with an algorithm to generate queries and a query helper tool.
*Advantages:*
- Uses Finite State Model, hence, is fast. - If the database schema changes, only the new metadata files have to be changed. - The user need not type the monotonous JOIN statements or linking the attributes. - Supports augmented attributes, for example, “name” can be replaced by “first_name” and “last_name”. - Supports null transitions. - Supports linking of various tables.
*Anticipated challenges:*
- If the system, goes to a state multiple times, it would have same conditions added multiple times. Solution : This has been taken care of by developing a query builder class, which ignores duplicate conditions and attributes. - Ambiguity between same named attributes of various relations. Solution : In the SQL query, the attributes are replaced by their relations_name.attribute_name. - Using aggregate functions. - Using with tables which are designed as key/value pairs. - Generating queries using “having” or “group by” clause.
*Schedule of Deliverables*
*Milestones and deliverables schedule:*
- *April 25 - May 23 (28 days):* Get acquainted with the development cycle, version control systems. Read various books on Django development. Study the current schema. Discuss with mentors the current design and check for potential pitfalls and try to modify the design the system in order to cover them. Develop a initial standard for the metadata files. - *May 23 - May 13 (14 days):* Design the basic algorithm (including Lexical Analysis and Syntax Checker), which takes the metadata files and the query, to generate the SQL query. This also includes manual creation of metadata files and synthesis of complex queries. - *June 13 - June 27 (14 days): *Develop the query helper tool, which helps user to build query. The tool shows the valid inputs when user is present at a particular stage. - *June 27 - July 11 (14 days):*Correct any discrepancies in the system and prepare test cases and documentation. Generate test reports and make sure the system is running perfectly fine. - *July 15 –August 1 (17 days):*Develop the metadata generator tool, which helps user customize the syntax and also edit the entities interacting in the system. - *August 1 - August 8 (7 days):*The entire system, integrated and checked. Revise the standard of the metadata files. Correct the bugs which occur after the integration of the system. Generate the test cases. Convert the module into various independent libraries. - *August 8 - August 22 (14 days) :*Start preparing the final documentation and perform the rigorous testing on the system.
*Other commitments:*None
*Open Source Development Experience*
1. Developed website for All India Stainless Steel Industries Association (http://www.aissia.org) 2. Developed Mass Mailing application 3. Developed Facebook Application (http://apps.facebook.com/invertendo) 4. Developed website for College Technical Festival 5. Developed eBooks Repository Management application 6. Mobile UI for Home Automation System 7. Developing a PHP Script Obfuscator
*Other Open Source/Free Software Experience :*
1. Building a open-source Paper Conference Management System : http://sourceforge.net/projects/conms/
*Work Experience*
*Work Experience:*
- Developed Mass Mailing Software for a Company - Developed website for All India Stainless Steel Industries Association (www.aissia.org) - Developed Mobile UI for Home Automation System for a Telecom firm
*Academic Experience*
*Academic Institution:*Thakur College of Engineering and Technology, University of Mumbai, Mumbai, Maharashtra, India
*Current Program:*Bachelor of Engineering in Computer Engineering. Currently in 3rdyear (6th Semester).
*Anticipated Graduation:*December 2012
*Academic Performance:*
I am amongst the first 4 students in my department. My aggregate from previous 2 semesters is 76.82 %
The courses completed in college are :
- C++ Programming Language - Java Programming Language - Analysis of Algorithms and Design - Data Structures and Files - Computer Organization and Architecture - Computer Graphics - Operating Systems - Computer Networks - Theory of Computer Science - Database Management Systems - Advanced Database Management Systems - Microprocessors - Web Engineering - Advanced Computer Networks - Advanced Microprocessors - Systems Programming and Compiler Construction - Data Warehousing and Mining - Object Oriented Software Engineering