[Phpmyadmin-devel] GSOC Project : Structure tools

Marc Delisle marc at infomarc.info
Sat Feb 22 19:19:48 CET 2014

Le 2014-02-22 12:52, Deven Bhooshan a écrit :
> Hello all,
> I have been following *PMA* for a long time.I saw the GSOC project
> idea *Structure Tools* in the wiki page. I found the project very
> interesting. As I have worked in many projects in Database ( Both
> implementation and Application) , I would like to contribute in this
> project.  The following is the detailed description of what I have got
> until now after my research. 
> 1- *Normalization* : 
>   * Going to the basics of Normalization there are two things needed
>     before we can apply normalization on a relational database. 1-
>     Database Schema 2- Functional Dependencies. */I wanted to ask this
>     thing - We would take the functional dependencies from the user only
>     ? For example if the user selects some table for normalization then
>     after that we have to take the FD from the user only ? /*

I'm not sure that we should let the user proceed table by table, because
of the inter-table dependencies.

The new module can surely get some dependencies information from things
like foreign key constraints and element names. This is why this project
idea is related to the central list of columns.

But indeed, at some point the module will have to ask the user whether
an element, for example the city's name, is really related to the
citizen's id.

>   * If we have got the functional dependencies  ans set of attributes ,
>     we can do the following things to change to the 3NF: *1)* we can
>      first get the closure of the given set of attributes with respect
>     to given functional dependencies. *2) *Then we will remove the
>     implied extraneous attributes and redundant dependencies. *3) *After
>     that we can determine the full and partial dependencies .  Then we
>     can apply the inference rules of Normalization to convert the
>     database schema to 2NF then to 3NF.
>   * The above algorithm can be implemented with algorithmic efficiency.
> 2- *Central List of Columns *
>   * I didn't get the meaning of this : *The phpMyAdmin configuration
>     storage would be the place to maintain this central list (probably
>     per database). *Please help me out in understanding this.

Have a look at
This is a set of tables where we store information that cannot be stored
in MySQL's data definition itself.

For example, a column's name and type is store as part of MySQL's
metadata, but MySQL offers no facility for a central list of columns.

>   * If there is any need of grouping the columns name with very similar
>     name like *product_id and product* , we can use many string
>     algorithms like Levenshtein distance
>     <http://en.wikipedia.org/wiki/Levenshtein_distance> and Longest
>     Common Substring
>     <http://en.wikipedia.org/wiki/Longest_common_substring_problem> . 

Yes but the ultimate decision should be done by the user.

Marc Delisle
http://infomarc.info | http://phpmyadmin.net

More information about the Developers mailing list