An intermediate database language and its rule-based transformation to different database languages