We present a technique for refining the design of relational storage for XML data based on XML key propagation. Three algorithms
are presented: one checks whether a given functional dependency is propagated from XML keys via a predefined view; the others
compute a minimum cover for all functional dependencies on a universal relation given XML keys. Experimental results show
that these algorithms are efficient in practice. We also investigate the complexity of propagating other XML constraints to
relations, and the effect of increasing the power of the transformation language. Computing XML key propagation is a first
step toward establishing a connection between XML data and its relational representation at the semantic level.