EulerFD: An Efficient Double-Cycle Approximation of Functional Dependencies