[Phpmyadmin-devel] [GSOC 2011 Draft Proposal] Specialized Syntax for Query Building

Dhruv Baldawa dhruvbaldawa at gmail.com
Mon Apr 4 17:14:51 CEST 2011


*Personal Details*

*Name:*Dhruv Baldawa
*Email:*dhruvbaldawa at gmail.com
*Skype ID or GTalk:*dhruvbaldawa at 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&view=markup

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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.phpmyadmin.net/pipermail/developers/attachments/20110404/07d69f03/attachment.html>


More information about the Developers mailing list