A method for performing functional dependency analysis in a computer system including a plurality of parallel processors the method including: identifying a plurality of pairs of fields, F1, F2 of data records of one or more data sources based on fields selected by a user, each of the pairs of fields, F1, F2 including a first field F1 and a second field F2; filtering pairs of fields F1, F2 of the data records to select a portion of the data records; partitioning into parts the portion of the data records, the partitioning comprising partitioning the portion of the data records among the plurality of parallel processors; for each part, forming field-value pairs for each field in a data record; for each part, generating quadruples, F1, F2, V2, V2, from the field-value pairs in that part, wherein F1 and F2 correspond to one of the pairs of fields, F1, F2 and V1 and V2 correspond to values which are paired with those fields in a record received from the input dataset; accumulating, for each part, multiple quadruples, F1, F2, V1, V2 with the same fields and values F1, F2, V1, V2, and representing them as a single quadruple with a count of the number of occurrences of the quadruple in the part; further repartitioning the accumulated quadruples of the parts such that quadruples having the same first field and second field are in the same part with each part running on a different processor; further accumulating the repartitioned quadruples into unique accumulated quadruples; for each of the pairs of fields, combining accumulated quadruples which have both fields F1, F2, and the first value V1 in common and selecting the most frequent V2 to associate with that V1 value for accumulating co-occurrence statistics, wherein quadruples sharing the most frequent V2 are counted as 'good' and the rest of the quadruples are counted as 'exceptions'; identifying one or more of the plurality of pairs of fields as having a functional dependency based on the co-occurrence statistics including: identifying a relationship that F1 determines F2 if the percentage of exceptions, computed according to the number of the counted 'exceptions' divided by the sum of said number of the counted 'exceptions' and the number of the quadruples counted as 'good', is less than a selected threshold of how many 'exceptions' to allow, or identifying a relationship that F1 determines F2 according to a value based on a mathematical property of the accumulated quadruple values; and presenting the identified functional dependencies to a user. identifying a plurality of pairs of fields, F1, F2 of data records of one or more data sources based on fields selected by a user, each of the pairs of fields, F1, F2 including a first field F1 and a second field F2; filtering pairs of fields F1, F2 of the data records to select a portion of the data records; partitioning into parts the portion of the data records, the partitioning comprising partitioning the portion of the data records among the plurality of parallel processors; for each part, forming field-value pairs for each field in a data record; for each part, generating quadruples, F1, F2, V2, V2, from the field-value pairs in that part, wherein F1 and F2 correspond to one of the pairs of fields, F1, F2 and V1 and V2 correspond to values which are paired with those fields in a record received from the input dataset; accumulating, for each part, multiple quadruples, F1, F2, V1, V2 with the same fields and values F1, F2, V1, V2, and representing them as a single quadruple with a count of the number of occurrences of the quadruple in the part; further repartitioning the accumulated quadruples of the parts such that quadruples having the same first field and second field are in the same part with each part running on a different processor; further accumulating the repartitioned quadruples into unique accumulated quadruples; for each of the pairs of fields, combining accumulated quadruples which have both fields F1, F2, and the first value V1 in common and selecting the most frequent V2 to associate with that V1 value for accumulating co-occurrence statistics, wherein quadruples sharing the most frequent V2 are counted as 'good' and the rest of the quadruples are counted as 'exceptions'; identifying one or more of the plurality of pairs of fields as having a functional dependency based on the co-occurrence statistics including: identifying a relationship that F1 determines F2 if the percentage of exceptions, computed according to the number of the counted 'exceptions' divided by the sum of said number of the counted 'exceptions' and the number of the quadruples counted as 'good', is less than a selected threshold of how many 'exceptions' to allow, or identifying a relationship that F1 determines F2 according to a value based on a mathematical property of the accumulated quadruple values; and presenting the identified functional dependencies to a user. identifying a relationship that F1 determines F2 if the percentage of exceptions, computed according to the number of the counted 'exceptions' divided by the sum of said number of the counted 'exceptions' and the number of the quadruples counted as 'good', is less than a selected threshold of how many 'exceptions' to allow, or identifying a relationship that F1 determines F2 according to a value based on a mathematical property of the accumulated quadruple values; and presenting the identified functional dependencies to a user.