A computerized method including: retrieving, from a data storage system, a first data set comprising a plurality of records; receiving by a system an identification of one or more first fields in the first data set stored in the data storage system, the one or more first fields being a potential primary key of the first data set; identifying by the system a set of values, the set including, for each record in the first data set, a value in the respective record associated with the one or more first fields; generating a Bloom filter based on the set of values, wherein generating a Bloom filter includes generating a filter key for each value in the set of values and combining the filter keys; receiving a second data set, the second data set including one or more second fields, the second data set including a plurality of records; for each of a plurality of the records in the second data set, ▪ identifying, by the system, a value in the record associated with the one or more second fields, the one or more second fields being a potential foreign key; and ▪ generating a filter key based on the value in the record associated with the one or more second fields, the filter key being generated using the same process used to generate the filter keys combined to create the Bloom filter; filtering, by the system, the plurality of the records in the second data set by comparing the filter keys for the respective records in the second data set to the Bloom filter; based on the filtering, identifying from among the one or more first fields and the one or more second fields one or more fields that are matches for a foreign key primary key relationship. retrieving, from a data storage system, a first data set comprising a plurality of records; receiving by a system an identification of one or more first fields in the first data set stored in the data storage system, the one or more first fields being a potential primary key of the first data set; identifying by the system a set of values, the set including, for each record in the first data set, a value in the respective record associated with the one or more first fields; generating a Bloom filter based on the set of values, wherein generating a Bloom filter includes generating a filter key for each value in the set of values and combining the filter keys; receiving a second data set, the second data set including one or more second fields, the second data set including a plurality of records; for each of a plurality of the records in the second data set, ▪ identifying, by the system, a value in the record associated with the one or more second fields, the one or more second fields being a potential foreign key; and ▪ generating a filter key based on the value in the record associated with the one or more second fields, the filter key being generated using the same process used to generate the filter keys combined to create the Bloom filter; ▪ identifying, by the system, a value in the record associated with the one or more second fields, the one or more second fields being a potential foreign key; and ▪ generating a filter key based on the value in the record associated with the one or more second fields, the filter key being generated using the same process used to generate the filter keys combined to create the Bloom filter; filtering, by the system, the plurality of the records in the second data set by comparing the filter keys for the respective records in the second data set to the Bloom filter; based on the filtering, identifying from among the one or more first fields and the one or more second fields one or more fields that are matches for a foreign key primary key relationship.