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-st….
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