There is an algorithm that normalizes the database to 3rd Normal Form with dependency preservation and losseless join. It is based on the minimal cover of functional dependencies of a relation.

My question is: is there any program written in C++ or any other programming languages that implement this algorithm?

Algorithm says:
1-Find a minimal cover G of the set of functional dependencies of R
2- Design schemas Ri(X,Ai) for each X->Ai in G with X the key
3- If no R has a key of R, then create a schema containing all attributes of the key