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 http://docs.phpmyadmin.net/en/latest/setup.html#phpmyadmin-configuration-sto.... 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.