A model-driven approach to semi-structured database design