Query Transformation in Heterogeneous Distributed Database Systems