Hi cognosguru,
Hmm - thorny topic this! :-) You're right about Framework Manager forcing you to model dimensionally. It makes inherent assumptions about what is a Fact Table and what is a Dimension Table based on the cardinality of the relationships defined. Within the context of a query, any Query Subject that is only at the many end of a relationship will be treated as a Fact Table, and any that are at the one end of a relationship will be treated as Dimension Tables. Unless you model dimensionally, you could inadvertently end up with a query containing two "Fact Tables", which would result in a stitch query being generated (full outer join using first-non-null).
Stitch queries are not bugs - they are the right thing to do when querying two fact tables which share common dimensions, possibly linking at different levels. The art of modelling in Framework Manager is to rearrange the data into virtual fact and dimension query subjects where stitch queries would never be used within a package (ie all your measures are within the fact, and all your descriptive data is within conformed dimensions). You will need to do this by merging query subjects together, then rather than leaving the merged query subjects as Model Query Subjects, convert them back to data query subjects with their own self-contained SQL. For the dimensional query subjects, you will then need to set up dimensionality to specify the hierarchical levels and their attributes within the dimension.
Best practice is to define an import view where you model things transactionally (exactly as in the underlying database). Then create a "star schema" view in a different namespace where you merge query subjects from the import view into new Fact and Dimension data query subjects, and set up the relationships between these, then define dimensionality for the dimensions, then create star schema groupings. Lastly create a business view in another namespace, where you select relevant parts from a star schema and put them into model query subjects as per the requirements of the end users. Do not create relationships at this level - FM will use the relationships from the star schema level. Publish your package(s) using query subjects from this view.
If you don't do this, you will have problems, one of which you've already encountered in that the underlying key definitions are stored in model.xml when the import is done from the database. You could edit this if you wanted to, but probably best not to! :-)
Best regards,
MF.